Module: Chelsy::Syntax

Defined in:
lib/chelsy/ast.rb,
lib/chelsy/ast.rb,
lib/chelsy/ast.rb,
lib/chelsy/ast.rb,
lib/chelsy/ast.rb,
lib/chelsy/syntax.rb

Defined Under Namespace

Modules: Coercers Classes: Any, Coercer, Constraint

Constant Summary collapse

TopLevel =
Any.new('TopLevel', [Declarative])
Type =
Any.new('TypeSpecifier', [Chelsy::Type::Base, :void])
Ident =
Any.new('Identifier', [Symbol])
Expr =
Any.new('Expression', [
  Chelsy::Expr,
  Syntax::Ident,
  Coercers::Int,
  Coercers::String,
])
ExprOrType =
Any.new('Expression-Or-Type', [Syntax::Expr, Syntax::Type])
Fragment =
Any.new('Fragment', [Fragment, String])
Storage =
Any.new('Storage-class specifiers', [:typedef, :extern, :static])
Param =
Any.new('Parameter', [Syntax::Coercers::Param, :void, :"..."])
ProtoParam =
Any.new('Prototype Parameter', [Syntax::Param, Symbol, Chelsy::Type::Base])
ArraySize =
Any.new('ArraySize', [Syntax::Expr])
BitField =
Any.new('BitField', [
  Chelsy::Constant::Integral,
  Coercers::Int,
])
StructOrUnionMember =
Any.new('StructOrUnionMember', [Chelsy::Declaration, Chelsy::BitField])
EnumMember =
Any.new('EnumMember', [Chelsy::EnumMember, Symbol])
Initializer =
Any.new('Initializer', [Syntax::Expr, Chelsy::Initializer, Chelsy::InitializerList])
Stmt =
Any.new('Statement', [
Syntax::Expr, # Treats Expr as Expression Statement
Chelsy::Stmt,
Coercers::Block])
BlockItem =
Any.new('BlockItem', [
Syntax::Stmt,
Chelsy::Declarative])
Declaration =
Any.new('Declaration', [Chelsy::Declaration])
StdcPragma =
Any.new('STDC Pragma', [:FP_CONTRACT, :FENV_ACCESS, :CX_LIMITED_RANGE])
StdcPragmaState =
Any.new('STDC Pragma State', [:ON, :OFF, :DEFAULT])
MacroDefinition =
Any.new('Raw', [
Chelsy::Raw,
Syntax::BlockItem])