IT:AD:TinyPG:HowTo
Process
Define a grammar.
- Open the app,
- Write a grammar.
- A grammar is defined as a extended-BNF notation file of
terminal
andnon-terminal
symbols.
Example of terminal symbols
:
BOOLEANLITERAL -> @"true|false"; DECIMALINTEGERLITERAL-> @"[0-9]+(UL|Ul|uL|ul|LU|Lu|lU|lu|U|u|L|l)?"; REALLITERAL -> @"([0-9]+\.[0-9]+([eE][+-]?[0-9]+)?([fFdDMm]?)?)|(\.[0-9]+([eE][+-]?[0-9]+)?([fFdDMm]?)?)|([0-9]+([eE][+-]?[0-9]+)([fFdDMm]?)?)|([0-9]+([fFdDMm]?))"; HEXINTEGERLITERAL -> @"0(x|X)[0-9a-fA-F]+"; STRINGLITERAL -> @"\""(\""\""|[^\""])*\"""; // shortcut implementation, not quite ready FUNCTION -> @"[a-zA-Z_][a-zA-Z0-9_]*(?=\s*\()"; // matches only when followed by ( VARIABLE -> @"[a-zA-Z_][a-zA-Z0-9_]*(?!\s*\()"; // matches only when NOT followed by ( CONSTANT -> @"(?i)pi|e"; BRACEOPEN -> @"{\s*"; BRACECLOSE -> @"\s*}"; BRACKETOPEN -> @"\(\s*"; BRACKETCLOSE -> @"\s*\)"; SEMICOLON -> @";"; PLUSPLUS -> @"\+\+"; MINUSMINUS -> @"--"; PIPEPIPE -> @"\|\|"; AMPAMP -> @"&&"; AMP -> @"&(?!&)"; // matches only when NOT followed by second & POWER -> @"\^"; PLUS -> @"\+"; MINUS -> @"-"; EQUAL -> @"=="; ASSIGN -> @"="; NOTEQUAL -> @"!=|<>"; NOT -> @"!"; ASTERIKS -> @"\*"; SLASH -> @"/"; PERCENT -> @"%"; QUESTIONMARK -> @"\?"; COMMA -> @","; LESSEQUAL -> @"<="; GREATEREQUAL -> @">="; LESSTHAN -> @"<(?!>)"; // matches only when not followed by > GREATERTHAN -> @">"; COLON -> @":"; EOF -> @"^$"; [Skip] WHITESPACE -> @"\s+";