Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <% @TinyPG Namespace="Nebula" Language="C#" %>
- [Skip] WHITESPACE -> @"[ ]";
- [Skip] COMMENTLINE -> @"//[^\n]*\n?";
- [Skip] COMMENTBLOCK -> @"/\*[^*]*\*+(?:[^/*][^*]*\*+)*/";
- //Listed in order of precedence.
- EOF -> @"^$";
- NEWLINE -> @"\n";
- STRING -> @"@?\""(\""\""|[^\""])*\""";
- INT -> @"[0-9]+";
- FIXED -> @"[0-9]*\.[0-9]*";
- BOOL -> @"true|false";
- HEX -> @"0x[0-9a-fA-F]{1,8}";
- TYPE -> @"abilcmd|actor|actorscope|aifilter|bank|bool|byte|camerainfo|char|color|doodad|fixed|handle|int|marker|order|playergroup|point|region|revealer|sound|soundlink|string|text|timer|transmissionsource|trigger|unit|unitfilter|unitgroup|unitref|void|wave|waveinfo|wavetarget";
- PARENOPEN -> @"\(";
- PARENCLOSE -> @"\)";
- BRACKETOPEN -> @"\{";
- BRACKETCLOSE -> @"\}";
- COMMA -> @",";
- ASSIGN -> @"=";
- IF -> @"if";
- LOGIC -> @"==|!=|&&|\|\||>|<";
- LABEL -> @"[a-zA-Z_][a-zA-Z0-9_]*";
- //========================================================================
- Start -> (NEWLINE | Identifier)* EOF;
- Identifier -> TYPE LABEL (Assignment | Function)? NEWLINE;
- Assignment -> ASSIGN Arg;
- Arg -> STRING | INT | FIXED | BOOL | HEX | (LABEL ArgParams?);
- ArgParams -> PARENOPEN (Arg (COMMA Arg)*)? PARENCLOSE;
- Function -> ParamList FuncBody;
- ParamList -> PARENOPEN (Param (COMMA Param)*)? PARENCLOSE;
- Param -> TYPE LABEL;
- FuncBody -> BRACKETOPEN ((NEWLINE (FuncElement? NEWLINE)*) | FuncElement) BRACKETCLOSE;
- FuncElement -> FuncIdentifier | FuncCall | IfStatement;
- FuncIdentifier -> TYPE LABEL Assignment?;
- FuncCall -> LABEL ArgParams;
- IfStatement -> IF PARENOPEN Expr PARENCLOSE FuncBody;
- Expr -> (Arg | SubExpr) (LOGIC (Arg | SubExpr))*;
- SubExpr -> PARENOPEN (Arg | SubExpr) (LOGIC (Arg | SubExpr))* PARENCLOSE;
- //========================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement