abra:

abra     ::= ( abraStmt ';' )*

no references


abraStmt:

abraStmt ::= importStmt
           | typeStmt
           | lutStmt
           | funcStmt
           | templateStmt
           | useStmt

referenced by:


importStmt:

importStmt
         ::= 'import' pathName ( '/' pathName )*

referenced by:


typeStmt:

typeStmt ::= 'type' typeName ( typeSize | '{' ( fieldName typeSize ';' )+ '}' )

referenced by:


lutStmt:

lutStmt  ::= 'lut' lutName '[' ( tritList '=' tritList ';' )+ ']'

referenced by:


funcStmt:

funcStmt ::= 'func' funcSignature '=' funcBody

referenced by:


templateStmt:

templateStmt
         ::= 'template' templateName '<' placeHolderTypeName ( ',' placeHolderTypeName )* '>' funcStmt

referenced by:


useStmt:

useStmt  ::= 'use' templateName '<' typeName ( ',' typeName )* '>'

referenced by:


funcSignature:

funcSignature
         ::= typeSize funcName ( '<' typeName '>' )? '(' paramName typeSize ( ',' paramName typeSize )* ')'

referenced by:


funcBody:

funcBody ::= mergeExpr
           | '{' stateExpr* assignExpr* returnExpr '}'

referenced by:


stateExpr:

stateExpr
         ::= 'state' varName typeSize ';'

referenced by:


assignExpr:

assignExpr
         ::= varName typeSize? '=' mergeExpr ';'

referenced by:


returnExpr:

returnExpr
         ::= 'return' mergeExpr ';'

referenced by:


mergeExpr:

mergeExpr
         ::= concatExpr ( '\' concatExpr )*

referenced by:


concatExpr:

concatExpr
         ::= postfixExpr ( '&' postfixExpr )*

referenced by:


postfixExpr:

postfixExpr
         ::= integer
           | typeExpr
           | funcExpr
           | lutExpr
           | sliceExpr
           | '(' mergeExpr ')'

referenced by:


typeExpr:

typeExpr ::= typeName '{' ( fieldName '=' mergeExpr ';' )+ '}'

referenced by:


funcExpr:

funcExpr ::= funcName ( '<' typeName '>' )? '(' mergeExpr ( ',' mergeExpr )* ')'

referenced by:


lutExpr:

lutExpr  ::= lutName '[' mergeExpr ( ',' mergeExpr )* ']'

referenced by:


sliceExpr:

sliceExpr
         ::= ( varName | paramName ) ( '.' fieldName )* ( '[' constExpr ( '..' constExpr? | ':' constExpr )? ']' )?

referenced by:


constExpr:

constExpr
         ::= constTerm ( [-+] constTerm )*

referenced by:


constTerm:

constTerm
         ::= constFactor ( [*/%] constFactor )*

referenced by:


constFactor:

constFactor
         ::= '-'* ( number | typeName | '(' constExpr ')' )

referenced by:


typeSize:

typeSize ::= '[' constExpr ']'

referenced by:


tritList:

tritList ::= trit ( ',' trit )*

referenced by:


trit:

trit     ::= [-01]

referenced by:


name:

name     ::= [a-zA-Z_] [0-9a-zA-Z_]*

no references


number:

number   ::= [0-9]+

referenced by:


integer:

integer  ::= trit
           | '-'? number

referenced by:



  ... generated by Railroad Diagram Generator