Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Grammar railroad diagram #11

Open
mingodad opened this issue Feb 11, 2023 · 0 comments
Open

Grammar railroad diagram #11

mingodad opened this issue Feb 11, 2023 · 0 comments

Comments

@mingodad
Copy link

Using this script melt-umn/copper#57 (comment) to produce the EBNF shown bellow we can get a nice navigable railroad diagram.

Copy and paste the EBNF shown bellow on https://www.bottlecaps.de/rr/ui on the tab Edit Grammar the click on the tab View Diagram to see/download a navigable railroad diagram.

grammar_start_at ::= b_Root
	| notes_for_railroad
notes_for_railroad ::=
	| 'a_ prefix for edu:umn:cs:melt:Oberon0:core:concreteSyntax:'
	| 'b_ prefix for silver:compiler:definition:core:'
	| 'c_ prefix for silver:compiler:definition:concrete_syntax:'
	| 'd_ prefix for silver:compiler:modification:copper:'
	| 'e_ prefix for silver:regex:concrete_syntax:'
	| 'f_ prefix for silver:compiler:extension:easyterminal:'
	| 'g_ prefix for silver:compiler:definition:type:syntax:'
	| 'h_ prefix for silver:compiler:definition:flow:syntax:'
	| 'i_ prefix for silver:compiler:extension:convenience:'
	| 'j_ prefix for silver:compiler:modification:collection:'
	| 'k_ prefix for silver:compiler:extension:autoattr:'
	| 'l_ prefix for silver:compiler:extension:convenienceaspects:'
	| 'm_ prefix for silver:compiler:extension:patternmatching:'
	| 'n_ prefix for silver:compiler:extension:doc:core:'
	| 'o_ prefix for silver:compiler:extension:strategyattr:'
	| 'p_ prefix for silver:compiler:extension:treegen:'
	| 'q_ prefix for silver:compiler:modification:defaultattr:'
	| 'r_ prefix for silver:compiler:modification:ffi:'
	| 's_ prefix for silver:reflect:concretesyntax:'
	| 't_ prefix for silver:compiler:extension:deprecation:'
	| 'u_ prefix for silver:compiler:extension:do_notation:'
	| 'v_ prefix for silver:compiler:extension:templating:syntax:'
	| 'w_ prefix for silver:compiler:extension:tuple:'
	| 'x_ prefix for silver:compiler:modification:let_fix:'
	| 'y_ prefix for silver:compiler:modification:primitivepattern:'
a_Const  ::=  a_Name_c   '='    a_Expr_c   ';'
a_Consts  ::=  a_Const
a_Consts  ::=  a_Const   a_Consts
a_Decls_c  ::=  a_MaybeConstDcl   a_MaybeTypeDcl   a_MaybeVarDcl
a_Elsifs  ::=
a_Elsifs  ::=  'ELSE'   a_Stmts_c
a_Elsifs  ::=  'ELSIF'   a_Expr_c   'THEN'   a_Stmts_c   a_Elsifs
a_Expr_c  ::=  a_Expr_c   '*'    a_Expr_c
a_Expr_c  ::=  a_Expr_c   'DIV'   a_Expr_c
a_Expr_c  ::=  a_Expr_c   'MOD'   a_Expr_c
a_Expr_c  ::=  '+'    a_Expr_c
a_Expr_c  ::=  '-'    a_Expr_c
a_Expr_c  ::=  a_Expr_c   '+'    a_Expr_c
a_Expr_c  ::=  a_Expr_c   '-'    a_Expr_c
a_Expr_c  ::=  '~'   a_Expr_c
a_Expr_c  ::=  a_Expr_c   '&'   a_Expr_c
a_Expr_c  ::=  a_Expr_c   'OR'   a_Expr_c
a_Expr_c  ::=  a_Expr_c   '='    a_Expr_c
a_Expr_c  ::=  a_Expr_c   '#'   a_Expr_c
a_Expr_c  ::=  a_Expr_c   '<'    a_Expr_c
a_Expr_c  ::=  a_Expr_c   '>'    a_Expr_c
a_Expr_c  ::=  a_Expr_c   '<='    a_Expr_c
a_Expr_c  ::=  a_Expr_c   '>='    a_Expr_c
a_Expr_c  ::=  a_Name_c
a_Expr_c  ::=  a_Num_t
a_Expr_c  ::=  '('    a_Expr_c   ')'
a_Expr_c  ::=  '$Expr'    '{'    b_Expr   '}'
a_Idents  ::=  a_Name_c
a_Idents  ::=  a_Name_c   ','    a_Idents
a_MaybeConstDcl  ::=
a_MaybeConstDcl  ::=  'CONST'
a_MaybeConstDcl  ::=  'CONST'   a_Consts
a_MaybeTypeDcl  ::=
a_MaybeTypeDcl  ::=  'TYPE'
a_MaybeTypeDcl  ::=  'TYPE'   a_TypeDcls
a_MaybeVarDcl  ::=
a_MaybeVarDcl  ::=  'VAR'
a_MaybeVarDcl  ::=  'VAR'   a_VarDcls
a_Module_c  ::=  'MODULE'   a_Name_c   ';'    a_Decls_c   'BEGIN'   a_Stmts_c   'END'   a_Name_c   '.'
a_Module_c  ::=  'MODULE'   a_Name_c   ';'    a_Decls_c   'END'   a_Name_c   '.'
a_Name_c  ::=  a_Id_t
a_Name_c  ::=  '$Name'    '{'    b_Expr   '}'
a_Stmt_c  ::=
a_Stmt_c  ::=  a_Name_c   ':='    a_Expr_c
a_Stmt_c  ::=  'WHILE'   a_Expr_c   'DO'   a_Stmts_c   'END'
a_Stmt_c  ::=  'IF'   a_Expr_c   'THEN'   a_Stmts_c   a_Elsifs   'END'
a_Stmt_c  ::=  '$Stmt'   '{'    b_Expr   '}'
a_Stmts_c  ::=  a_Stmt_c   ';'    a_Stmts_c
a_Stmts_c  ::=  a_Stmt_c
a_TypeDcl  ::=  a_TypeName_c   '='    a_TypeExpr_c   ';'
a_TypeDcls  ::=  a_TypeDcl
a_TypeDcls  ::=  a_TypeDcl   a_TypeDcls
a_TypeExpr_c  ::=  a_TypeName_c
a_TypeName_c  ::=  a_Id_t
a_VarDcl  ::=  a_Idents   ':'    a_TypeExpr_c   ';'
a_VarDcls  ::=  a_VarDcl
a_VarDcls  ::=  a_VarDcl   a_VarDcls
c_ProductionModifier  ::=  'operator'   '='    b_QNameType
c_ProductionModifier  ::=  'precedence'   '='    b_Int_t
c_ProductionModifier  ::=  'layout'   '{'    d_TermList   '}'
c_ProductionModifier  ::=  'layout'   '{'    '}'
c_ProductionModifierList  ::=  c_ProductionModifier
c_ProductionModifierList  ::=  c_ProductionModifier   ','    c_ProductionModifierList
c_ProductionModifiers  ::=  c_ProductionModifierList
c_ProductionModifiers  ::=
c_RegExpr  ::=  '/'    e_Regex   '/'
c_RegExpr  ::=  f_Terminal_t
c_TerminalKeywordModifier  ::=  'ignore'
c_TerminalKeywordModifier  ::=  'marking'
c_TerminalKeywordModifier  ::=
c_TerminalModifier  ::=  'association'   '='    'left'
c_TerminalModifier  ::=  'named'   b_String_t
c_TerminalModifier  ::=  'precedence'   '='    b_Int_t
c_TerminalModifier  ::=  'repeatProb'   '='    b_Float_t
c_TerminalModifier  ::=  'association'   '='    'right'
c_TerminalModifier  ::=  'action'   d_ActionCode_c
c_TerminalModifier  ::=  'lexer'   'classes'   d_LexerClasses
c_TerminalModifier  ::=  'dominates'   d_TermPrecs
c_TerminalModifier  ::=  'submits'   'to'   d_TermPrecs
c_TerminalModifiers  ::=  c_TerminalModifier
c_TerminalModifiers  ::=  c_TerminalModifier   ','    c_TerminalModifiers
b_AGDcl  ::=  'concrete'   'production'   b_Name   b_ProductionSignature   c_ProductionModifiers   b_ProductionBody
b_AGDcl  ::=  c_TerminalKeywordModifier   'terminal'    b_Name   c_RegExpr   c_TerminalModifiers   ';'
b_AGDcl  ::=  c_TerminalKeywordModifier   'terminal'    b_Name   c_RegExpr   ';'
b_AGDcl  ::=  'annotation'   b_QName   g_BracketedOptTypeExprs   'occurs'   'on'   b_QName   g_BracketedOptTypeExprs   ';'
b_AGDcl  ::=  'annotation'   b_QName   g_BracketedOptTypeExprs   '::'    g_TypeExpr   ';'
b_AGDcl  ::=  'aspect'   'function'   b_QName   b_AspectFunctionSignature   b_ProductionBody
b_AGDcl  ::=  'aspect'   'production'   b_QName   b_AspectProductionSignature   b_ProductionBody
b_AGDcl  ::=  'inherited'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   ';'
b_AGDcl  ::=  'synthesized'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   ';'
b_AGDcl  ::=  'attribute'   b_QName   g_BracketedOptTypeExprs   'occurs'   'on'   b_QName   g_BracketedOptTypeExprs   ';'
b_AGDcl  ::=  'function'   b_Name   b_FunctionSignature   b_ProductionBody
b_AGDcl  ::=  'global'   b_Name   '::'    g_ConstraintList   '=>'   g_TypeExpr   '='    b_Expr   ';'
b_AGDcl  ::=  'global'   b_Name   '::'    g_TypeExpr   '='    b_Expr   ';'
b_AGDcl  ::=  'instance'   g_ConstraintList   '=>'   b_QNameType   g_TypeExpr   '{'    b_InstanceBody   '}'
b_AGDcl  ::=  'instance'   b_QNameType   g_TypeExpr   '{'    b_InstanceBody   '}'
b_AGDcl  ::=  b_NTDeclQualifiers   'nonterminal'   b_Name   g_BracketedOptTypeExprs   b_NonterminalModifiers   ';'
b_AGDcl  ::=  'abstract'   'production'   b_Name   b_ProductionSignature   b_ProductionBody
b_AGDcl  ::=  'type'   b_Name   g_BracketedOptTypeExprs   '='    g_TypeExpr   ';'
b_AGDcl  ::=  'class'   g_ConstraintList   '=>'   b_QNameType   g_TypeExpr   '{'    b_ClassBody   '}'
b_AGDcl  ::=  'class'   b_QNameType   g_TypeExpr   '{'    b_ClassBody   '}'
b_AGDcl  ::=  'flowtype'   h_FlowSpec   'on'   h_NtList   ';'
b_AGDcl  ::=  'flowtype'   b_QName   '='    h_FlowSpecs   ';'
b_AGDcl  ::=  'destruct'   'attribute'   b_Name   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'equality'   'attribute'   b_Name   ','    b_Name   ';'
b_AGDcl  ::=  'equality'   'attribute'   b_Name   ','    b_Name   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'ordering'   'attribute'   b_Name   ','    b_Name   ','    b_Name   ';'
b_AGDcl  ::=  'ordering'   'attribute'   b_Name   ','    b_Name   ','    b_Name   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'equality'   'attribute'   b_Name   'with'   b_QName   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'functor'   'attribute'   b_Name   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'monoid'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   'with'   b_Expr   ','    j_NameOrBOperator   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'ordering'   'attribute'   b_Name   ','    b_Name   'with'   b_QName   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'monoid'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'threaded'   'attribute'   b_Name   ','    b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   'occurs'   'on'   i_QNames   k_OptDirectionMod   ';'
b_AGDcl  ::=  'unification'   'attribute'   b_Name   ','    b_Name   'with'   b_QName   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'destruct'   'attribute'   b_Name   ';'
b_AGDcl  ::=  'equality'   'attribute'   b_Name   'with'   b_QName   ';'
b_AGDcl  ::=  'functor'   'attribute'   b_Name   ';'
b_AGDcl  ::=  'monoid'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   'with'   b_Expr   ','    j_NameOrBOperator   ';'
b_AGDcl  ::=  'ordering'   'attribute'   b_Name   ','    b_Name   'with'   b_QName   ';'
b_AGDcl  ::=  'propagate'   b_NameList   'on'   b_NameList   ';'
b_AGDcl  ::=  'propagate'   b_NameList   'on'   b_NameList   'excluding'   k_ProdNameList   ';'
b_AGDcl  ::=  'monoid'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   ';'
b_AGDcl  ::=  'threaded'   'attribute'   b_Name   ','    b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   k_OptDirectionMod   ';'
b_AGDcl  ::=  'unification'   'attribute'   b_Name   ','    b_Name   'with'   b_QName   ';'
b_AGDcl  ::=  'inherited'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'synthesized'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'inherited'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   'with'   j_NameOrBOperator   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'synthesized'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   'with'   j_NameOrBOperator   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'annotation'   i_QNames2   'occurs'   'on'   i_QNames2   ';'
b_AGDcl  ::=  'annotation'   i_QNames2   'occurs'   'on'   i_QNameWithTL   ';'
b_AGDcl  ::=  'annotation'   b_QName   g_BracketedOptTypeExprs   'occurs'   'on'   i_QNames2   ';'
b_AGDcl  ::=  'attribute'   i_QNames2   'occurs'   'on'   i_QNames2   ';'
b_AGDcl  ::=  'attribute'   i_QNames2   'occurs'   'on'   i_QNameWithTL   ';'
b_AGDcl  ::=  'attribute'   b_QName   g_BracketedOptTypeExprs   'occurs'   'on'   i_QNames2   ';'
b_AGDcl  ::=  b_NTDeclQualifiers   'nonterminal'   b_Name   g_BracketedOptTypeExprs   b_NonterminalModifiers   'with'   i_QNames   ';'
b_AGDcl  ::=  'concrete'   'productions'   b_ProductionLHS   i_ProductionDclStmts
b_AGDcl  ::=  'production'   b_Name   b_ProductionSignature   b_ProductionBody
b_AGDcl  ::=  'aspect'   b_QNameAttrOccur   'on'   l_ConvAspectLHS   l_ConvenienceAspectEquationKind   'of'   m_Opt_Vbar_t   m_MRuleList   'end'   ';'
b_AGDcl  ::=  'deprecated'   b_String_t   ';'
b_AGDcl  ::=  n_DocComment_t   b_AGDcl
b_AGDcl  ::=  '@'    n_DocComment_t
b_AGDcl  ::=  'implicit'   'inherited'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   ';'
b_AGDcl  ::=  'restricted'   'inherited'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   ';'
b_AGDcl  ::=  'unrestricted'   'inherited'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   ';'
b_AGDcl  ::=  'implicit'   'synthesized'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   ';'
b_AGDcl  ::=  'restricted'   'synthesized'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   ';'
b_AGDcl  ::=  'unrestricted'   'synthesized'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   ';'
b_AGDcl  ::=  'partial'   'strategy'   'attribute'   b_Name   '='    o_StrategyExpr_c   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'strategy'   'attribute'   b_Name   '='    o_StrategyExpr_c   'occurs'   'on'   i_QNames   ';'
b_AGDcl  ::=  'partial'   'strategy'   'attribute'   b_Name   '='    o_StrategyExpr_c   ';'
b_AGDcl  ::=  'strategy'   'attribute'   b_Name   '='    o_StrategyExpr_c   ';'
b_AGDcl  ::=  'equalityTest'   '('    b_Expr   ','    b_Expr   ','    g_TypeExpr   ','    b_Name   ')'    ';'
b_AGDcl  ::=  'mainTestSuite'   b_IdLower_t   ';'
b_AGDcl  ::=  'makeTestSuite'   b_IdLower_t   ';'
b_AGDcl  ::=  'noWarnCode'   b_String_t   '{'    b_AGDcls   '}'
b_AGDcl  ::=  'warnCode'   b_String_t   '{'    b_AGDcls   '}'
b_AGDcl  ::=  'wrongCode'   b_String_t   '{'    b_AGDcls   '}'
b_AGDcl  ::=  'wrongFlowCode'   b_String_t   '{'    b_AGDcls   '}'
b_AGDcl  ::=  'generator'   b_Name   '::'    g_TypeExpr   '{'    p_GeneratorComponents   '}'
b_AGDcl  ::=  'inherited'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   'with'   j_NameOrBOperator   ';'
b_AGDcl  ::=  'synthesized'   'attribute'   b_Name   g_BracketedOptTypeExprs   '::'    g_TypeExpr   'with'   j_NameOrBOperator   ';'
b_AGDcl  ::=  'aspect'   'parser'   'attribute'   b_QName   'action'   d_ActionCode_c   ';'
b_AGDcl  ::=  'parser'   'attribute'   b_Name   '::'    g_TypeExpr   'action'   d_ActionCode_c   ';'
b_AGDcl  ::=  'concrete'   'production'   b_Name   b_ProductionSignature   c_ProductionModifiers   b_ProductionBody   'action'   d_ActionCode_c
b_AGDcl  ::=  'disambiguate'   d_TermList   d_ActionCode_c
b_AGDcl  ::=  'lexer'   'class'   b_Name   ';'
b_AGDcl  ::=  'lexer'   'class'   b_Name   d_LexerClassModifiers   ';'
b_AGDcl  ::=  'copper_mda'   b_Name   '('    b_QName   ')'    '{'    d_ParserComponents   '}'
b_AGDcl  ::=  'parser'   b_Name   '::'    g_TypeExpr   '{'    d_ParserComponents   '}'
b_AGDcl  ::=  'aspect'   'default'   'production'   q_AspectDefaultProductionSignature   b_ProductionBody
b_AGDcl  ::=  'type'   b_Name   g_BracketedOptTypeExprs   'foreign'   ';'
b_AGDcl  ::=  'type'   b_Name   g_BracketedOptTypeExprs   'foreign'   '='    b_String_t   ';'
b_AGDcl  ::=  'function'   b_Name   b_FunctionSignature   b_ProductionBody   'foreign'   '{'    r_FFIDefs   '}'
b_AGDcls  ::=  b_AGDcl   b_AGDcls
b_AGDcls  ::=
b_AnnoAppExprs  ::=  b_AnnoExpr
b_AnnoAppExprs  ::=  b_AnnoAppExprs   ','    b_AnnoExpr
b_AnnoExpr  ::=  b_QName   '='    b_AppExpr
b_AppExpr  ::=  '_'
b_AppExpr  ::=  b_Expr
b_AppExprs  ::=  b_AppExpr
b_AppExprs  ::=  b_AppExprs   ','    b_AppExpr
b_AspectFunctionLHS  ::=  g_TypeExpr
b_AspectFunctionSignature  ::=  b_AspectFunctionLHS   '::='   b_AspectRHS
b_AspectProductionLHS  ::=  b_Name
b_AspectProductionLHS  ::=  '_'
b_AspectProductionLHS  ::=  b_Name   '::'    g_TypeExpr
b_AspectProductionSignature  ::=  b_AspectProductionLHS   '::='   b_AspectRHS
b_AspectRHS  ::=  b_AspectRHSElem   b_AspectRHS
b_AspectRHS  ::=
b_AspectRHS  ::=  '$AspectRHS'   '{'    b_Expr   '}'
b_AspectRHSElem  ::=  b_Name
b_AspectRHSElem  ::=  '_'
b_AspectRHSElem  ::=  b_Name   '::'    g_TypeExpr
b_AspectRHSElem  ::=  f_EasyTerminalRef
b_AspectRHSElem  ::=  b_Name   '::'    f_EasyTerminalRef
b_ClassBody  ::=  b_ClassBodyItem   b_ClassBody
b_ClassBody  ::=
b_ClassBodyItem  ::=  b_Name   '::'    g_TypeExpr   ';'
b_ClassBodyItem  ::=  b_Name   '::'    g_ConstraintList   '=>'   g_TypeExpr   ';'
b_ClassBodyItem  ::=  b_Name   '::'    g_TypeExpr   '='    b_Expr   ';'
b_ClassBodyItem  ::=  b_Name   '::'    g_ConstraintList   '=>'   g_TypeExpr   '='    b_Expr   ';'
b_ClassBodyItem  ::=  n_DocComment_t   b_ClassBodyItem
b_DefLHS  ::=  b_QName
b_DefLHS  ::=  'forward'
b_Expr  ::=  'Oberon0_Stmt'   '{'    a_Stmts_c   '}'
b_Expr  ::=  'Oberon0_Expr'   '{'    a_Expr_c   '}'
b_Expr  ::=  b_Expr   '.'    b_QNameAttrOccur
b_Expr  ::=  b_Expr   '&&'   b_Expr
b_Expr  ::=  b_Expr   '('    b_AppExprs   ','    b_AnnoAppExprs   ')'
b_Expr  ::=  b_Expr   '('    b_AnnoAppExprs   ')'
b_Expr  ::=  b_Expr   '('    ')'
b_Expr  ::=  b_Expr   '('    b_AppExprs   ')'
b_Expr  ::=  b_QName
b_Expr  ::=  'forward'
b_Expr  ::=  'decorate'   b_Expr   'with'   '{'    b_ExprInhs   '}'
b_Expr  ::=  'decorate'   b_Expr   'with'   '{'    '}'
b_Expr  ::=  '@'    b_Expr
b_Expr  ::=  b_Expr   '/'    b_Expr
b_Expr  ::=  b_Expr   '=='   b_Expr
b_Expr  ::=  'false'
b_Expr  ::=  b_Float_t
b_Expr  ::=  b_Expr   '.'    'forward'
b_Expr  ::=  b_Expr   '>'    b_Expr
b_Expr  ::=  b_Expr   '>='    b_Expr
b_Expr  ::=  'if'   b_Expr   'then'   b_Expr   'else'   b_Expr
b_Expr  ::=  b_Int_t
b_Expr  ::=  b_Expr   '<'    b_Expr
b_Expr  ::=  b_Expr   '<='    b_Expr
b_Expr  ::=  b_Expr   '-'    b_Expr
b_Expr  ::=  b_Expr   '%'   b_Expr
b_Expr  ::=  b_Expr   '*'    b_Expr
b_Expr  ::=  '-'    b_Expr
b_Expr  ::=  b_Expr   '!='   b_Expr
b_Expr  ::=  '('    b_Expr   ')'
b_Expr  ::=  '!'   b_Expr
b_Expr  ::=  'attachNote'   b_Expr   'on'   b_Expr   'end'
b_Expr  ::=  b_Expr   '||'   b_Expr
b_Expr  ::=  b_Expr   '+'    b_Expr
b_Expr  ::=  b_Expr   '++'   b_Expr
b_Expr  ::=  b_String_t
b_Expr  ::=  'terminal'    '('    g_TypeExpr   ','    b_Expr   ','    b_Expr   ')'
b_Expr  ::=  'terminal'    '('    g_TypeExpr   ','    b_Expr   ')'
b_Expr  ::=  'true'
b_Expr  ::=  'AST'   '{'    s_AST_c   '}'
b_Expr  ::=  '('    '.'    b_QNameAttrOccur   ')'
b_Expr  ::=  '$'    b_Int_t
b_Expr  ::=  t_NameTick
b_Expr  ::=  t_NameTickTick
b_Expr  ::=  'do'   '{'    u_DoBody   '}'
b_Expr  ::=  'mdo'   '{'    u_DoBody   '}'
b_Expr  ::=  f_EasyTerminalRef
b_Expr  ::=  'if'   b_Expr   'then'   b_Expr   'end'
b_Expr  ::=  'case_any'   b_Exprs   'of'   m_Opt_Vbar_t   m_MRuleList   'end'
b_Expr  ::=  'case'   b_Exprs   'of'   m_Opt_Vbar_t   m_MRuleList   'end'
b_Expr  ::=  '/'    e_Regex   '/'
b_Expr  ::=  b_Expr   '=~'   b_Expr
b_Expr  ::=  b_Expr   '<+'    b_Expr
b_Expr  ::=  'rule'    'on'   g_TypeExpr   'of'   m_Opt_Vbar_t   m_MRuleList   'end'
b_Expr  ::=  b_Expr   '<*'    b_Expr
b_Expr  ::=  'traverse'   '('    '_'   '::'    b_AppExpr   ')'
b_Expr  ::=  'traverse'   '('    b_Expr   '::'    b_AppExpr   ')'
b_Expr  ::=  'traverse'   '['    b_AppExprs   ']'
b_Expr  ::=  'traverse'   '['    ']'
b_Expr  ::=  'traverse'   b_QName   '('    b_AnnoAppExprs   ')'
b_Expr  ::=  'traverse'   b_QName   '('    ')'
b_Expr  ::=  'traverse'   b_QName   '('    b_AppExprs   ')'
b_Expr  ::=  'traverse'   b_QName   '('    b_AppExprs   ','    b_AnnoAppExprs   ')'
b_Expr  ::=  '$Expr'    '{'    b_Expr   '}'
b_Expr  ::=  'Silver_AGDcl'   '{'    b_AGDcl   '}'
b_Expr  ::=  'Silver_Expr'   '{'    b_Expr   '}'
b_Expr  ::=  'Silver_ExprInh'   '{'    b_ExprInh   '}'
b_Expr  ::=  'Silver_Pattern'   '{'    m_Pattern   '}'
b_Expr  ::=  'Silver_ProductionStmt'   '{'    b_ProductionStmt   '}'
b_Expr  ::=  'Silver_TypeExpr'   '{'    g_TypeExpr   '}'
b_Expr  ::=  'Silver_StrategyExpr'   '('    b_Expr   ')'    '{'    o_StrategyExpr_c   '}'
b_Expr  ::=  'pp"""'   v_TemplateString
b_Expr  ::=  's"'   v_SingleLineTemplateString
b_Expr  ::=  'pp"'   v_SingleLineTemplateString
b_Expr  ::=  's"""'   v_TemplateString
b_Expr  ::=  'genArbTerminal'   '('    g_TypeExpr   ','    b_Expr   ')'
b_Expr  ::=  'genArbTerminal'   '('    g_TypeExpr   ','    '_'   ')'
b_Expr  ::=  '('    ')'
b_Expr  ::=  b_Expr   '.'    w_IntConst
b_Expr  ::=  '('    w_TupleList   ')'
b_Expr  ::=  'disambiguationFailure'
b_Expr  ::=  '\'    b_ProductionRHS   '->'    b_Expr
b_Expr  ::=  'let'   x_LetAssigns   'in'   b_Expr   'end'
b_Expr  ::=  b_Expr   '::'    b_Expr
b_Expr  ::=  '['    ']'
b_Expr  ::=  '['    b_Exprs   ']'
b_Expr  ::=  'match'   b_Expr   'return'   g_TypeExpr   'with'   y_PrimPatterns   'else'   '->'    b_Expr   'end'
b_ExprInh  ::=  b_ExprLHSExpr   '='    b_Expr   ';'
b_ExprInhs  ::=  b_ExprInh   b_ExprInhs
b_ExprInhs  ::=  b_ExprInh
b_ExprInhs  ::=  '$ExprInhs'   '{'    b_Expr   '}'
b_ExprLHSExpr  ::=  b_QNameAttrOccur
b_Exprs  ::=  b_Expr   ','    b_Exprs
b_Exprs  ::=  b_Expr
b_ForwardInh  ::=  b_ForwardLHSExpr   '='    b_Expr   ';'
b_ForwardInhs  ::=  b_ForwardInh   b_ForwardInhs
b_ForwardInhs  ::=  b_ForwardInh
b_ForwardLHSExpr  ::=  b_QNameAttrOccur
b_FunctionLHS  ::=  g_TypeExpr
b_FunctionSignature  ::=  g_ConstraintList   '=>'   b_FunctionLHS   '::='   b_ProductionRHS
b_FunctionSignature  ::=  b_FunctionLHS   '::='   b_ProductionRHS
b_GrammarDcl  ::=  'grammar'   b_QName   ';'
b_GrammarDcl  ::=
b_ImportStmt  ::=  'import'   b_ModuleExpr   ';'
b_ImportStmts  ::=  b_ImportStmt   b_ImportStmts
b_ImportStmts  ::=
b_InstanceBody  ::=  b_InstanceBodyItem   b_InstanceBody
b_InstanceBody  ::=
b_InstanceBodyItem  ::=  b_QName   '='    b_Expr   ';'
b_InstanceBodyItem  ::=  n_DocComment_t   b_InstanceBodyItem
b_ModuleExpr  ::=  b_QName
b_ModuleExpr  ::=  b_QName   'with'   b_WithElems
b_ModuleExpr  ::=  b_QName   'as'   b_QName
b_ModuleExpr  ::=  b_QName   'hiding'   b_NameList
b_ModuleExpr  ::=  b_QName   'hiding'   b_NameList   'with'   b_WithElems
b_ModuleExpr  ::=  b_QName   'only'   b_NameList
b_ModuleExpr  ::=  b_QName   'only'   b_NameList   'with'   b_WithElems
b_ModuleName  ::=  b_QName
b_ModuleStmt  ::=  'exports'   b_ModuleName   ';'
b_ModuleStmt  ::=  'exports'   b_QName   'with'   b_QName   ';'
b_ModuleStmt  ::=  'imports'   b_ModuleExpr   ';'
b_ModuleStmt  ::=  'option'   b_QName   ';'
b_ModuleStmt  ::=  'build'   b_QName   'with'   b_QName   ';'
b_ModuleStmts  ::=  b_ModuleStmt   b_ModuleStmts
b_ModuleStmts  ::=
b_NTDeclQualifiers  ::=  'closed'   b_NTDeclQualifiers
b_NTDeclQualifiers  ::=
b_NTDeclQualifiers  ::=  'tracked'   b_NTDeclQualifiers
b_Name  ::=  b_IdLower_t
b_Name  ::=  b_IdUpper_t
b_Name  ::=  '$Name'    '{'    b_Expr   '}'
b_Name  ::=  '$name'   '{'    b_Expr   '}'
b_Name  ::=  'pluck'
b_Name  ::=  'print'
b_NameList  ::=  b_QName   ','    b_NameList
b_NameList  ::=  b_QName
b_NonterminalModifier  ::=  'layout'   '{'    d_TermList   '}'
b_NonterminalModifier  ::=  'layout'   '{'    '}'
b_NonterminalModifierList  ::=  b_NonterminalModifier
b_NonterminalModifierList  ::=  b_NonterminalModifier   ','    b_NonterminalModifierList
b_NonterminalModifiers  ::=  b_NonterminalModifierList
b_NonterminalModifiers  ::=
b_ProductionBody  ::=  '{'    b_ProductionStmts   '}'
b_ProductionBody  ::=  ';'
b_ProductionLHS  ::=  b_Name   '::'    g_TypeExpr
b_ProductionRHS  ::=  b_ProductionRHSElem   b_ProductionRHS
b_ProductionRHS  ::=
b_ProductionRHSElem  ::=  b_Name   '::'    g_TypeExpr
b_ProductionRHSElem  ::=  g_TypeExpr
b_ProductionRHSElem  ::=  b_Name   '::'    f_EasyTerminalRef
b_ProductionRHSElem  ::=  f_EasyTerminalRef
b_ProductionSignature  ::=  g_ConstraintList   '=>'   b_ProductionLHS   '::='   b_ProductionRHS
b_ProductionSignature  ::=  b_ProductionLHS   '::='   b_ProductionRHS
b_ProductionStmt  ::=  'attachNote'   b_Expr   ';'
b_ProductionStmt  ::=  b_DefLHS   '.'    b_QNameAttrOccur   '='    b_Expr   ';'
b_ProductionStmt  ::=  'forwarding'   'with'   '{'    b_ForwardInhs   '}'    ';'
b_ProductionStmt  ::=  'forwards'   'to'   b_Expr   ';'
b_ProductionStmt  ::=  'forwards'   'to'   b_Expr   'with'   '{'    b_ForwardInhs   '}'    ';'
b_ProductionStmt  ::=  'local'   'attribute'   b_Name   '::'    g_TypeExpr   ';'
b_ProductionStmt  ::=  'production'   'attribute'   b_Name   '::'    g_TypeExpr   ';'
b_ProductionStmt  ::=  'return'   b_Expr   ';'
b_ProductionStmt  ::=  'undecorates'   'to'   b_Expr   ';'
b_ProductionStmt  ::=  b_QName   '='    b_Expr   ';'
b_ProductionStmt  ::=  'abstract'   b_QName   ';'
b_ProductionStmt  ::=  'propagate'   b_NameList   ';'
b_ProductionStmt  ::=  'thread'   b_QName   ','    b_QName   'on'   k_ChildNameList   ';'
b_ProductionStmt  ::=  'local'   b_Name   '::'    g_TypeExpr   '='    b_Expr   ';'
b_ProductionStmt  ::=  'local'   'attribute'   b_Name   '::'    g_TypeExpr   '='    b_Expr   ';'
b_ProductionStmt  ::=  'production'   b_Name   '::'    g_TypeExpr   '='    b_Expr   ';'
b_ProductionStmt  ::=  'production'   'attribute'   b_Name   '::'    g_TypeExpr   '='    b_Expr   ';'
b_ProductionStmt  ::=  'implicit'   b_DefLHS   '.'    b_QNameAttrOccur   '='    ';'
b_ProductionStmt  ::=  'implicit'   b_DefLHS   '.'    b_QNameAttrOccur   '='    b_Expr   ';'
b_ProductionStmt  ::=  'restricted'   b_DefLHS   '.'    b_QNameAttrOccur   '='    b_Expr   ';'
b_ProductionStmt  ::=  'unrestricted'   b_DefLHS   '.'    b_QNameAttrOccur   '='    b_Expr   ';'
b_ProductionStmt  ::=  '$ProductionStmt'   '{'    b_Expr   '}'
b_ProductionStmt  ::=  b_DefLHS   '.'    b_QNameAttrOccur   '<-'    b_Expr   ';'
b_ProductionStmt  ::=  b_DefLHS   '.'    b_QNameAttrOccur   ':='    b_Expr   ';'
b_ProductionStmt  ::=  'production'   'attribute'   b_Name   '::'    g_TypeExpr   'with'   j_NameOrBOperator   ';'
b_ProductionStmt  ::=  b_QName   '<-'    b_Expr   ';'
b_ProductionStmt  ::=  b_QName   ':='    b_Expr   ';'
b_ProductionStmt  ::=  '{'    b_ProductionStmts   '}'
b_ProductionStmt  ::=  'if'   '('    b_Expr   ')'    b_ProductionStmt   'else'   b_ProductionStmt
b_ProductionStmt  ::=  'if'   '('    b_Expr   ')'    b_ProductionStmt
b_ProductionStmt  ::=  'insert'   'semantic'   'token'   b_QNameType   'at'   b_Expr   ';'
b_ProductionStmt  ::=  'pluck'   b_Expr   ';'
b_ProductionStmt  ::=  'print'   b_Expr   ';'
b_ProductionStmt  ::=  'pushToken'   '('    b_QName   ','    b_Expr   ')'    ';'
b_ProductionStmts  ::=
b_ProductionStmts  ::=  b_ProductionStmts   b_ProductionStmt
b_QName  ::=  b_Name   ':'    b_QName
b_QName  ::=  b_Name
b_QName  ::=  '$QName'   '{'    b_Expr   '}'
b_QName  ::=  '$qName'   '{'    b_Expr   '}'
b_QNameAttrOccur  ::=  b_QName
b_QNameAttrOccur  ::=  '$QNameAttrOccur'   '{'    b_Expr   '}'
b_QNameType  ::=  b_Name   ':'    b_QNameType
b_QNameType  ::=  b_IdUpper_t
b_Root  ::=  b_GrammarDcl   b_ModuleStmts   b_ImportStmts   b_AGDcls
b_Root  ::=  b_GrammarDcl   b_ModuleStmts   b_ImportStmts   'construct'   b_Name   'as'   b_QName   'translator'   'using'   d_ParserComponents
b_WithElem  ::=  b_QName   'as'   b_QName
b_WithElems  ::=  b_WithElem   ','    b_WithElems
b_WithElems  ::=  b_WithElem
h_FlowSpec  ::=  h_FlowSpecId   '{'    h_FlowSpecInhs   '}'
h_FlowSpecId  ::=  'decorate'
h_FlowSpecId  ::=  'forward'
h_FlowSpecId  ::=  b_QNameAttrOccur
h_FlowSpecInh  ::=  'decorate'
h_FlowSpecInh  ::=  'forward'
h_FlowSpecInh  ::=  b_QNameAttrOccur
h_FlowSpecInhs  ::=  h_FlowSpecInh   ','    h_FlowSpecInhs
h_FlowSpecInhs  ::=
h_FlowSpecInhs  ::=  h_FlowSpecInh
h_FlowSpecs  ::=  h_FlowSpec
h_FlowSpecs  ::=  h_FlowSpecs   ','    h_FlowSpec
h_NtList  ::=  h_NtName   ','    h_NtList
h_NtList  ::=
h_NtList  ::=  h_NtName
h_NtName  ::=  b_QName
g_BracketedOptTypeExprs  ::=
g_BracketedOptTypeExprs  ::=  g_BracketedTypeExprs
g_BracketedTypeExprs  ::=  '<'    g_TypeExprs   '>'
g_Constraint  ::=  'annotation'   b_QName   g_BracketedOptTypeExprs   'occurs'   'on'   g_TypeExpr
g_Constraint  ::=  b_QNameType   g_TypeExpr
g_Constraint  ::=  'attribute'   b_QName   g_BracketedOptTypeExprs   'occurs'   'on'   g_TypeExpr
g_Constraint  ::=  g_TypeExpr   'subset'   g_TypeExpr
g_Constraint  ::=  'attribute'   b_QName   g_BracketedOptTypeExprs   g_TypeExpr   'occurs'   'on'   g_TypeExpr
g_Constraint  ::=  'typeError'   b_String_t
g_Constraint  ::=  'runtimeTypeable'   g_TypeExpr
g_ConstraintList  ::=  g_Constraint   ','    g_ConstraintList
g_ConstraintList  ::=  g_Constraint
g_KindExpr  ::=  g_KindExpr   '->'    g_KindExpr
g_KindExpr  ::=  'InhSet'
g_KindExpr  ::=  '('    g_KindExpr   ')'
g_KindExpr  ::=  '*'
g_Signature  ::=  g_SignatureLHS   '::='   g_TypeExprs
g_Signature  ::=  g_SignatureLHS   '::='
g_SignatureLHS  ::=  '_'
g_SignatureLHS  ::=  g_TypeExpr
g_TypeExpr  ::=  g_TypeExpr   g_BracketedTypeExprs
g_TypeExpr  ::=  'Boolean'
g_TypeExpr  ::=  'Float'
g_TypeExpr  ::=  '('    g_Signature   ')'
g_TypeExpr  ::=  '{'    h_FlowSpecInhs   '}'
g_TypeExpr  ::=  'Integer'
g_TypeExpr  ::=  '('    b_IdLower_t   '::'    g_KindExpr   ')'
g_TypeExpr  ::=  b_QNameType
g_TypeExpr  ::=  'Decorated'   g_TypeExpr
g_TypeExpr  ::=  'Decorated'   g_TypeExpr   'with'   g_TypeExpr
g_TypeExpr  ::=  'String'
g_TypeExpr  ::=  'TerminalId'
g_TypeExpr  ::=  b_IdLower_t
g_TypeExpr  ::=  'Decorated!'   g_TypeExpr
g_TypeExpr  ::=  'Decorated!'   g_TypeExpr   'with'   g_TypeExpr
g_TypeExpr  ::=  '$TypeExpr'   '{'    b_Expr   '}'
g_TypeExpr  ::=  '('    ')'
g_TypeExpr  ::=  '('    w_ListOfTypeExprs   ')'
g_TypeExpr  ::=  '['    ']'
g_TypeExpr  ::=  '['    g_TypeExpr   ']'
g_TypeExprs  ::=  g_TypeExpr   g_TypeExprs
g_TypeExprs  ::=  '_'   g_TypeExprs
g_TypeExprs  ::=  g_TypeExpr
g_TypeExprs  ::=  '_'
k_ChildName  ::=  'forward'
k_ChildName  ::=  b_Name
k_ChildNameList  ::=  k_ChildName   ','    k_ChildNameList
k_ChildNameList  ::=  k_ChildName
k_Direction  ::=  'left'   'to'   'right'
k_Direction  ::=  'right'   'to'   'left'
k_OptDirectionMod  ::=  'direction'   '='    k_Direction
k_OptDirectionMod  ::=
k_ProdNameList  ::=  b_QName   ','    k_ProdNameList
k_ProdNameList  ::=  b_QName
i_OptionalAction  ::=  'action'   d_ActionCode_c
i_OptionalAction  ::=
i_OptionalName  ::=  '('    b_Name   ')'
i_OptionalName  ::=
i_ProductionDclStmt  ::=  i_OptionalName   '|'    b_ProductionRHS   c_ProductionModifiers   b_ProductionBody   i_OptionalAction
i_ProductionDclStmts  ::=  i_ProductionDclStmt   i_ProductionDclStmts
i_ProductionDclStmts  ::=  i_ProductionDclStmt
i_QNameWithTL  ::=  b_QName   g_BracketedOptTypeExprs
i_QNames  ::=  i_QNameWithTL   ','    i_QNames
i_QNames  ::=  i_QNameWithTL
i_QNames2  ::=  i_QNameWithTL   ','    i_QNames2
i_QNames2  ::=  i_QNameWithTL   ','    i_QNameWithTL
l_ConvAspectLHS  ::=  b_Name   '::'    g_TypeExpr
l_ConvAspectLHS  ::=  g_TypeExpr
l_ConvenienceAspectEquationKind  ::=  'using'   '='
l_ConvenienceAspectEquationKind  ::=  'using'   ':='
l_ConvenienceAspectEquationKind  ::=  'using'   '<-'
l_ConvenienceAspectEquationKind  ::=
t_NameTick  ::=  t_IdTick_t
t_NameTickTick  ::=  t_IdTickTick_t
u_DoBinding  ::=  b_Name   '::'    g_TypeExpr   '<-'    b_Expr   ';'
u_DoBinding  ::=  b_Expr   ';'
u_DoBinding  ::=  'let'   b_Name   '::'    g_TypeExpr   '='    b_Expr   ';'
u_DoBody  ::=  u_DoBinding   u_DoBody
u_DoBody  ::=  b_Expr   ';'
u_DoBody  ::=  'return'   b_Expr   ';'
f_EasyTerminalRef  ::=  f_Terminal_t
m_MRuleList  ::=  m_MatchRule   '|'    m_MRuleList
m_MRuleList  ::=  m_MatchRule
m_MatchRule  ::=  m_PatternList   'when'   b_Expr   'matches'   m_Pattern   '->'    b_Expr
m_MatchRule  ::=  m_PatternList   'when'   b_Expr   '->'    b_Expr
m_MatchRule  ::=  m_PatternList   '->'    b_Expr
m_NamedPattern  ::=  b_QName   '='    m_Pattern
m_NamedPatternList  ::=  m_NamedPattern   ','    m_NamedPatternList
m_NamedPatternList  ::=  m_NamedPattern
m_Pattern  ::=  'AST'   '{'    s_AST_c   '}'
m_Pattern  ::=  m_Pattern   '::'    m_Pattern
m_Pattern  ::=  'false'
m_Pattern  ::=  b_Float_t
m_Pattern  ::=  b_Int_t
m_Pattern  ::=  '['    m_PatternList   ']'
m_Pattern  ::=  '('    m_Pattern   ')'
m_Pattern  ::=  b_QName   '('    m_PatternList   ')'
m_Pattern  ::=  b_QName   '('    m_PatternList   ','    m_NamedPatternList   ')'
m_Pattern  ::=  b_QName   '('    m_NamedPatternList   ')'
m_Pattern  ::=  b_String_t
m_Pattern  ::=  'true'
m_Pattern  ::=  b_Name
m_Pattern  ::=  '_'
m_Pattern  ::=  '$Pattern'   '{'    b_Expr   '}'
m_Pattern  ::=  '('    ')'
m_Pattern  ::=  '('    w_TuplePatternList   ')'
m_PatternList  ::=
m_PatternList  ::=  m_Pattern
m_PatternList  ::=  m_PatternList   ','    m_Pattern
o_StrategyExpr_c  ::=  '$StrategyExpr'   '{'    b_Expr   '}'
o_StrategyExpr_c  ::=  'printTerm'
o_StrategyExpr_c  ::=  'try'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'repeat'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'reduce'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'bottomUp'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'topDown'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'downUp'   '('    o_StrategyExpr_c   ','    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'allBottomUp'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'allTopDown'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'allDownUp'   '('    o_StrategyExpr_c   ','    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'someBottomUp'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'someTopDown'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'someDownUp'   '('    o_StrategyExpr_c   ','    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'onceBottomUp'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'onceTopDown'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'onceDownUp'   '('    o_StrategyExpr_c   ','    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'innermost'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'outermost'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'id'
o_StrategyExpr_c  ::=  'fail'
o_StrategyExpr_c  ::=  o_StrategyExpr_c   '<*'    o_StrategyExpr_c
o_StrategyExpr_c  ::=  o_StrategyExpr_c   '<+'    o_StrategyExpr_c
o_StrategyExpr_c  ::=  'all'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'some'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  'one'   '('    o_StrategyExpr_c   ')'
o_StrategyExpr_c  ::=  o_StrategyQName   '('    o_StrategyExprs_c   ')'
o_StrategyExpr_c  ::=  'rec'   b_Name   '->'    o_StrategyExpr_c
o_StrategyExpr_c  ::=  'rule'    'on'   b_Name   '::'    g_TypeExpr   'of'   m_Opt_Vbar_t   m_MRuleList   'end'
o_StrategyExpr_c  ::=  'rule'    'on'   g_TypeExpr   'of'   m_Opt_Vbar_t   m_MRuleList   'end'
o_StrategyExpr_c  ::=  o_StrategyQName
o_StrategyExpr_c  ::=  '('    o_StrategyExpr_c   ')'
o_StrategyExprs_c  ::=  o_StrategyExpr_c   ','    o_StrategyExprs_c
o_StrategyExprs_c  ::=  o_StrategyExpr_c
o_StrategyExprs_c  ::=
o_StrategyQName  ::=  '$strategyQName'   '{'    b_Expr   '}'
o_StrategyQName  ::=  o_StrategyName_t   ':'    o_StrategyQName
o_StrategyQName  ::=  o_StrategyName_t
v_NonWater  ::=  '${'   b_Expr   '}'
v_SingleLineTemplateString  ::=  v_SingleLineTemplateStringBody   '"'
v_SingleLineTemplateString  ::=  '"'
v_SingleLineTemplateStringBody  ::=  v_SingleLineTemplateStringBodyItem   v_SingleLineTemplateStringBody
v_SingleLineTemplateStringBody  ::=  v_SingleLineTemplateStringBodyItem
v_SingleLineTemplateStringBody  ::=  v_SingleLineWater
v_SingleLineTemplateStringBodyItem  ::=  v_NonWater
v_SingleLineTemplateStringBodyItem  ::=  v_SingleLineWater   v_NonWater
v_SingleLineWater  ::=  v_SingleLineWater   v_SingleLineWaterItem
v_SingleLineWater  ::=  v_SingleLineWaterItem
v_SingleLineWaterItem  ::=  v_SingleLineQuoteWater
v_SingleLineWaterItem  ::=  '\'
v_SingleLineWaterItem  ::=  '$$'
v_SingleLineWaterItem  ::=  '\n'
v_TemplateString  ::=  v_TemplateStringBody   '"""'
v_TemplateString  ::=  '"""'
v_TemplateStringBody  ::=  v_TemplateStringBodyItem   v_TemplateStringBody
v_TemplateStringBody  ::=  v_TemplateStringBodyItem
v_TemplateStringBody  ::=  v_Water
v_TemplateStringBodyItem  ::=  v_NonWater
v_TemplateStringBodyItem  ::=  v_Water   v_NonWater
v_Water  ::=  v_Water   v_WaterItem
v_Water  ::=  v_WaterItem
v_WaterItem  ::=  v_QuoteWater
v_WaterItem  ::=  '\'
v_WaterItem  ::=  '$$'
v_WaterItem  ::=  v_LiteralNewline
v_WaterItem  ::=  '"'
v_WaterItem  ::=  ' '
p_GeneratorComponent  ::=  b_ModuleName   ';'
p_GeneratorComponents  ::=  p_GeneratorComponent   p_GeneratorComponents
p_GeneratorComponents  ::=
w_ListOfTypeExprs  ::=  g_TypeExpr   ','    g_TypeExpr
w_ListOfTypeExprs  ::=  g_TypeExpr   ','    w_ListOfTypeExprs
w_TupleList  ::=  b_Expr   ','    b_Expr
w_TupleList  ::=  b_Expr   ','    w_TupleList
w_TuplePatternList  ::=  m_Pattern   ','    w_TuplePatternList
w_TuplePatternList  ::=  m_Pattern   ','    m_Pattern
j_NameOrBOperator  ::=  '+'
j_NameOrBOperator  ::=  '&&'
j_NameOrBOperator  ::=  '||'
j_NameOrBOperator  ::=  b_Expr
j_NameOrBOperator  ::=  '*'
j_NameOrBOperator  ::=  '++'
d_ActionCode_c  ::=  '{'    b_ProductionStmts   '}'
d_LexerClassList  ::=  b_QName   ','    d_LexerClassList
d_LexerClassList  ::=  b_QName
d_LexerClassModifier  ::=  'disambiguate'   d_ActionCode_c
d_LexerClassModifier  ::=  'dominates'   d_TermPrecs
d_LexerClassModifier  ::=  'extends'   d_LexerClasses
d_LexerClassModifier  ::=  'prefix'   'separator'   b_String_t
d_LexerClassModifier  ::=  'submits'   'to'   d_TermPrecs
d_LexerClassModifiers  ::=  d_LexerClassModifier
d_LexerClassModifiers  ::=  d_LexerClassModifier   ','    d_LexerClassModifiers
d_LexerClasses  ::=  '{'    d_LexerClassList   '}'
d_LexerClasses  ::=  b_QName
d_ParserComponent  ::=  'prefer'   b_QName   'over'   d_TermList   ';'
d_ParserComponent  ::=  b_ModuleName   d_ParserComponentModifiers   ';'
d_ParserComponent  ::=  'layout'   '{'    d_TermList   '}'    ';'
d_ParserComponent  ::=  'layout'   '{'    '}'    ';'
d_ParserComponentModifier  ::=  'prefix'   d_TerminalPrefixItems   'with'   d_TerminalPrefix
d_ParserComponentModifiers  ::=  d_ParserComponentModifier   d_ParserComponentModifiers
d_ParserComponentModifiers  ::=
d_ParserComponents  ::=  d_ParserComponent   d_ParserComponents
d_ParserComponents  ::=
d_TermList  ::=  b_QName   ','    d_TermList
d_TermList  ::=  b_QName
d_TermPrecList  ::=  b_QName   ','    d_TermPrecList
d_TermPrecList  ::=  b_QName
d_TermPrecs  ::=  '{'    d_TermPrecList   '}'
d_TermPrecs  ::=  b_QName
d_TerminalPrefix  ::=  b_QName
d_TerminalPrefix  ::=  c_RegExpr   c_TerminalModifiers
d_TerminalPrefix  ::=  c_RegExpr
d_TerminalPrefix  ::=  b_String_t
d_TerminalPrefixItem  ::=  f_EasyTerminalRef
d_TerminalPrefixItem  ::=  b_QName
d_TerminalPrefixItems  ::=
d_TerminalPrefixItems  ::=  d_TerminalPrefixItem   ','    d_TerminalPrefixItems
d_TerminalPrefixItems  ::=  d_TerminalPrefixItem
q_AspectDefaultProductionSignature  ::=  b_Name   '::'    g_TypeExpr   '::='
r_FFIDef  ::=  b_String_t   ':'    'return'   b_String_t   ';'
r_FFIDefs  ::=  r_FFIDef   r_FFIDefs
r_FFIDefs  ::=  r_FFIDef
x_AssignExpr  ::=  b_Name   '::'    g_TypeExpr   '='    b_Expr
x_LetAssigns  ::=  x_AssignExpr
x_LetAssigns  ::=  x_AssignExpr   ','    x_LetAssigns
y_PrimPattern  ::=  b_QName   '('    y_VarBinders   ')'    '->'    b_Expr
y_PrimPatterns  ::=  y_PrimPattern   '|'    y_PrimPatterns
y_PrimPatterns  ::=  y_PrimPattern
y_VarBinder  ::=  '_'
y_VarBinder  ::=  b_Name
y_VarBinders  ::=  y_VarBinder   ','    y_VarBinders
y_VarBinders  ::=
y_VarBinders  ::=  y_VarBinder
s_AST_c  ::=  '$'    '{'    b_Expr   '}'
s_AST_c  ::=  s_QName_t
s_AST_c  ::=  '_'
s_AST_c  ::=  'true'
s_AST_c  ::=  'false'
s_AST_c  ::=  s_QName_t   '('    s_ASTs_c   ','    s_NamedASTs_c   ')'
s_AST_c  ::=  s_QName_t   '('    s_ASTs_c   ')'
s_AST_c  ::=  s_QName_t   '('    s_NamedASTs_c   ')'
s_AST_c  ::=  s_QName_t   '('    ')'
s_AST_c  ::=  'terminal'    '('    s_QName_t   ','    s_String_t   ','    s_AST_c   ')'
s_AST_c  ::=  '['    s_ASTs_c   ']'
s_AST_c  ::=  '['    ']'
s_AST_c  ::=  s_String_t
s_AST_c  ::=  s_Int_t
s_AST_c  ::=  s_Float_t
s_ASTs_c  ::=  s_ASTs_c   ','    s_AST_c
s_ASTs_c  ::=  s_AST_c
s_NamedAST_c  ::=  s_QName_t   '='    s_AST_c
s_NamedASTs_c  ::=  s_NamedASTs_c   ','    s_NamedAST_c
s_NamedASTs_c  ::=  s_NamedAST_c
e_Regex  ::=  e_RegexSeq   '|'    e_Regex
e_Regex  ::=
e_Regex  ::=  e_RegexSeq
e_RegexChar  ::=  e_RegexChar_t
e_RegexChar  ::=  e_EscapedChar_t
e_RegexCharSet  ::=  e_RegexCharSetItem
e_RegexCharSet  ::=  e_RegexCharSet   e_RegexCharSetItem
e_RegexCharSetItem  ::=  e_RegexChar
e_RegexCharSetItem  ::=  e_RegexChar   '-'    e_RegexChar
e_RegexItem  ::=  e_RegexChar
e_RegexItem  ::=  '('    e_Regex   ')'
e_RegexItem  ::=  '['    e_RegexCharSet   ']'
e_RegexItem  ::=  '['    '^'   e_RegexCharSet   ']'
e_RegexItem  ::=  '.'
e_RegexRepetition  ::=  e_RegexItem   '*'
e_RegexRepetition  ::=  e_RegexItem
e_RegexRepetition  ::=  e_RegexItem   '?'
e_RegexRepetition  ::=  e_RegexItem   '+'
e_RegexSeq  ::=  e_RegexRepetition
e_RegexSeq  ::=  e_RegexSeq   e_RegexRepetition
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant