Sha256: cf48bce05e2b194abf51fef1a705a4060e01608569bf5664e97c70454e8498c8

Contents?: true

Size: 963 Bytes

Versions: 2

Compression:

Stored size: 963 Bytes

Contents

grammar XdrUnionGrammar

  rule union_def
    "union" space
    identifier space
    union_body space?
    ";"
    <Xdrgen::AST::Definitions::Union>
  end


  rule union_body
    "switch"
    space?
    "("
    space?
    discriminant:declaration
    space?
    ")"
    space?
    "{"
    space?
    arms_n:(arm_spec)+
    default_case_n:(default_case_spec)?
    space?
    "}"
    <Xdrgen::AST::Definitions::UnionBody>
  end

  rule union_type_spec
    "union" space union_body
    <Xdrgen::AST::Definitions::NestedUnion>
  end

  rule arm_spec
    cases_n:case_spec+
    space?
    declaration
    space?
    ";"
    space?
    <Xdrgen::AST::Definitions::UnionArm>
  end


  rule case_spec
    "case"
    space?
    value
    space?
    ":"
    space?
    <Xdrgen::AST::Definitions::UnionArmCase>
  end


  rule default_case_spec
    "default" space? ":"
    space?
    declaration
    space?
    ";"
    <Xdrgen::AST::Definitions::UnionDefaultArm>
  end


end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
xdrgen-0.1.1 lib/xdrgen/grammar/union.treetop
xdrgen-0.1.0 lib/xdrgen/grammar/union.treetop