BNF for Parser.jj

NON-TERMINALS

Document ::= DocumentWithParent
DocumentWithParent ::= ( StatementOrExpression )*
XMLHeader ::= <XMLSTAGOPEN> <AXMLTAG> ( XMLAttribute )* ( <XMLEMPTYTAGCLOSE> | <XMLTAGCLOSE> )
XMLNextElement ::= ( AnyXMLContent | <XMLETAGOPEN> <AXMLTAG> <XMLTAGCLOSE> )
AnyXMLContent ::= XMLText
| XMLEntity
| AnyXMLElement
AnyXMLElement ::= <XMLSTAGOPEN> <AXMLTAG> ( XMLAttribute )* ( <XMLEMPTYTAGCLOSE> | ElementAnyContent <AXMLTAG> <XMLTAGCLOSE> )
ElementAnyContent ::= <XMLTAGCLOSE> ( ( SQLQuoteString | XMLText | StatementOrExpression ) )* <XMLETAGOPEN>
SQLQuoteString ::= VariableInString
XMLText ::= ( ( <XMLTEXT> | <XMLSPECIALCHAR> | <XMLSQLQUOTE> | TextOrphan ) )+
TextOrphan ::= <DOTATEXP>
| <DOTEXP>
| <INDEXINT>
| <INDEXVAR>
| <VARIABLE>
XMLEntity ::= <XMLENTITY>
XMLAttribute ::= <XMLATTR> <EQUAL> <XMLDQSTART> ( StringInDynamicString | StringInDynamicString | DynamicStringContents ) <XMLDQEND>
StatementOrExpression ::= ( Statement | Expression ) ( <SEMICOLON> )?
Statement ::= SubDef
| Return
| Insert
| Update
| Delete
| Print
| ForEach
| While
| If
| Exit
| SendEmail
| Assignment
Expression ::= SimpleExpression ( BinaryOpList )?
SimpleExpression ::= NoPostExpression ( PostExpression )*
NoPostExpression ::= MatchRegex
| ReplaceRegex
| String
| NumberLiteral
| NotOp
| Meta
| Count
| Exists
| Length
| Left
| Right
| Substring
| Xml
| Constant
| Label
| Sysdate
| ListInit
| HashInit
| NewObject
| BracketExpression
| SubCall
| AnyXMLElement
| XMLEntity
| Variable
PostExpression ::= MethodCall
| Assignment
| PostSelectExpression
PostSelectExpression ::= ( DotExpression | ArrayIndex )
BinaryOpList ::= ( ( Range | Concat | SetOp | ComparisonOp | MathOp | BooleanOp ) SimpleExpression )+
BracketExpression ::= <OPENBRACKET> Expression <CLOSEBRACKET>
Bracket2Expressions ::= <OPENBRACKET> Expression <COMMA> Expression <CLOSEBRACKET>
Bracket3Expressions ::= <OPENBRACKET> Expression <COMMA> Expression <COMMA> Expression <CLOSEBRACKET>
BracketNExpressions ::= <OPENBRACKET> Expression ( <COMMA> Expression )* <CLOSEBRACKET>
MatchRegex ::= <MATCHREGEX> Variable Regex RegexModif
ReplaceRegex ::= <REPLACEREGEX> Variable Regex Regex RegexModif
Regex ::= <BACKSLASH_MODIF> <REGEXSTR>
RegexModif ::= <BACKSLASH_MODIF>
ListInit ::= ( ListInitInt | <OPENSQUAREBRACKET> ( Expression ( <COMMA> Expression )* )? <CLOSESQUAREBRACKET> )
ListInitInt ::= <INDEXINT_OR_ARRAYINIT>
HashInit ::= <OPENCURLYBRACKET> ( HashKeyVal ( <COMMA> HashKeyVal )* )? <CLOSECURLYBRACKET>
HashKeyVal ::= Expression ( <HASHKEYVAL> Expression )?
NewObject ::= <NEW> ObjectOrSubName <OPENBRACKET> ( Expression )* <CLOSEBRACKET>
ObjectOrSubName ::= <COLUMNLIT> ( <DOTEXP> )*
SubDef ::= <SUB> ObjectOrSubName ( <OPENBRACKET> Variable ( <COMMA> Variable )* <CLOSEBRACKET> )? AnyXMLElement
SubCall ::= <COLUMNLIT> ( BracketNExpressions )?
Insert ::= <INSERT> <INTO> Expression <VALUES> ( BracketNExpressions | Expression )
Update ::= <UPDATE> Expression <VALUES> Expression <CURRENT>
Delete ::= <DELETE> Expression <CURRENT>
Return ::= <RETURN> ( Expression )?
BooleanOp ::= AndOp
| OrOp
| InOp
InOp ::= <IN>
AndOp ::= <AND>
OrOp ::= <OR>
ComparisonOp ::= Equals
| NotEquals
| LtOp
| LteOp
| GtOp
| GteOp
MathOp ::= PlusOp
| MinusOp
| MultOp
| FloatDivOp
MinusOp ::= <MINUSSIGN>
MultOp ::= <MULTSIGN>
FloatDivOp ::= <DIVSIGN>
Range ::= <DOTDOT>
SetOp ::= Union
| Inter
| SetMinus
| DiffOp
DiffOp ::= <DIFF> ( ( <NEW> | <DEL> | <UPD> ) )*
Union ::= <UNION> ( <ALL> )?
Inter ::= ( <INTER> | <INTERSECT> )
SetMinus ::= <MINUS>
Equals ::= <EQUALS>
LtOp ::= <LT>
LteOp ::= <LTE>
GtOp ::= <GT>
GteOp ::= <GTE>
NotEquals ::= <NOTEQUALS>
PlusOp ::= <PLUSSIGN>
Concat ::= ( <STRCONCAT> | <STRCONCAT_DEP> )
NotOp ::= <NOT> Expression
ArrayIndex ::= ( ArrayIndexInt | ArrayIndexVar | <OPENSQUAREBRACKET> Expression <CLOSESQUAREBRACKET> )
ArrayIndexInt ::= ( <INDEXINT> | <INDEXINT_OR_ARRAYINIT> )
ArrayIndexVar ::= <INDEXVAR>
MethodCall ::= DotColumn <OPENBRACKET> ( Expression ( <COMMA> Expression )* )? <CLOSEBRACKET>
DotExpression ::= ( DotAt | DotColumn | <DOT> ( Variable | BracketExpression ) )
DotAt ::= <DOTATEXP>
DotColumn ::= <DOTEXP>
If ::= <IF> Expression StatementOrExpression ( <ELSE> StatementOrExpression )?
Constant ::= ( <TRUE> | <FALSE> | <NULL> )
NumberLiteral ::= ( <PLUSSIGN> | <MINUSSIGN> )? ( IntLiteral | FloatLiteral )
IntLiteral ::= <INTLIT>
FloatLiteral ::= <FLOATLIT>
ForEach ::= <FOREACH> Variable <IN> Expression StatementOrExpression
While ::= <WHILE> Expression StatementOrExpression
Assignment ::= <EQUAL> Expression
Variable ::= <VARIABLE>
Print ::= ( <PRINT> | <PRINTLN> ) ( <ALLRESULTS> )? ( <NOHEADER> )? ( <CSV> | <TABLE> )? ( Expression )? ( ( <APPEND> )? <TO> ( <FILE> )? Expression )?
Exit ::= <EXIT> ( BracketExpression )?
SendEmail ::= <SENDEMAIL> SimpleExpression
Meta ::= <META> ( <ALLRESULTS> )? Expression
Count ::= <COUNT> SimpleExpression
Label ::= <LABEL> SimpleExpression
Xml ::= <XML> ( BracketNExpressions | SimpleExpression )
Exists ::= <EXISTS> SimpleExpression
Length ::= ( <LEN> | <LENGTH> ) SimpleExpression
Sysdate ::= ( <SYSDATE> ) ( BracketExpression )?
Left ::= ( <LEFT> ) Bracket2Expressions
Right ::= ( <RIGHT> ) Bracket2Expressions
Substring ::= ( <SUBSTRING> ) Bracket3Expressions
String ::= StaticString
| DynamicString
StaticString ::= <SCRIPTSTRING>
StringInDynamicString ::= ( ( <XMLDQSTRING> | <XMLDQSPECIAL> | <SCRIPTDQSTRING> | <SCRIPTDQSPECIAL> | <ESCDQSTRING> | TextOrphan ) )+
DynamicString ::= <DQUOTESTART> DynamicStringContents <DQUOTEEND>
DynamicStringContents ::= ( VariableInString | StringInDynamicString )*
VariableInString ::= Variable ( PostSelectExpression )*