Sha256: 88483cc7109e6f0490ae9dc12c1ee5eddc333efef9a6f63bb57181bf3f9eed66

Contents?: true

Size: 1.05 KB

Versions: 3

Compression:

Stored size: 1.05 KB

Contents

grammar XdrBaseGrammar

  rule identifier
    !keyword
    ([a-zA-Z] [0-9a-zA-Z_]*)
    ("::" [a-zA-Z] [0-9a-zA-Z_]*)*
    <Xdrgen::AST::Identifier>
  end

  rule keyword
    ("bool" /
    "case" /
    "const" /
    "default" /
    "double" /
    "quadruple" /
    "enum" /
    "float" /
    "hyper" /
    "opaque" /
    "string" /
    "struct" /
    "switch" /
    "typedef" /
    "union" /
    "unsigned" /
    "int" /
    "void")
    &space
   end

  rule value
    identifier / constant
  end

  rule constant
    ( hexadecimal_constant / octal_constant / decimal_constant )
  end

  rule decimal_constant
    "0" <Xdrgen::AST::DecimalConstant>
    /
    "-"? [1-9] [0-9]* <Xdrgen::AST::DecimalConstant>
  end

  rule hexadecimal_constant
    "0x" [a-fA-F0-9]+
    <Xdrgen::AST::HexadecimalConstant>
  end

  rule octal_constant
    "0" [0-7]+
    <Xdrgen::AST::OctalConstant>
  end


  # Misc.

  rule size
    identifier / decimal_constant
  end

  rule space
    ([\s] / line_comment / block_comment)+
    <Xdrgen::AST::Whitespace>
  end

  rule asterisk
    "*"
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
xdrgen-0.1.1 lib/xdrgen/grammar/base.treetop
xdrgen-0.1.0 lib/xdrgen/grammar/base.treetop
xdrgen-0.0.1 lib/xdrgen/grammar/base.treetop