Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. <% @TinyPG Namespace="Nebula" Language="C#" %>
  2.  
  3. [Skip] WHITESPACE -> @"[ ]";
  4. [Skip] COMMENTLINE -> @"//[^\n]*\n?";
  5. [Skip] COMMENTBLOCK -> @"/\*[^*]*\*+(?:[^/*][^*]*\*+)*/";
  6.  
  7. //Listed in order of precedence.
  8. EOF -> @"^$";
  9. NEWLINE -> @"\n";
  10. STRING -> @"@?\""(\""\""|[^\""])*\""";
  11. INT -> @"[0-9]+";
  12. FIXED -> @"[0-9]*\.[0-9]*";
  13. BOOL -> @"true|false";
  14. HEX -> @"0x[0-9a-fA-F]{1,8}";
  15. 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";
  16. PARENOPEN -> @"\(";
  17. PARENCLOSE -> @"\)";
  18. BRACKETOPEN -> @"\{";
  19. BRACKETCLOSE -> @"\}";
  20. COMMA -> @",";
  21. ASSIGN -> @"=";
  22. IF -> @"if";
  23. LOGIC -> @"==|!=|&&|\|\||>|<";
  24. LABEL -> @"[a-zA-Z_][a-zA-Z0-9_]*";
  25.  
  26. //========================================================================
  27.  
  28. Start -> (NEWLINE | Identifier)* EOF;
  29.  
  30. Identifier -> TYPE LABEL (Assignment | Function)? NEWLINE;
  31.  
  32. Assignment -> ASSIGN Arg;
  33. Arg -> STRING | INT | FIXED | BOOL | HEX | (LABEL ArgParams?);
  34. ArgParams -> PARENOPEN (Arg (COMMA Arg)*)? PARENCLOSE;
  35.  
  36. Function -> ParamList FuncBody;
  37. ParamList -> PARENOPEN (Param (COMMA Param)*)? PARENCLOSE;
  38. Param -> TYPE LABEL;
  39. FuncBody -> BRACKETOPEN ((NEWLINE (FuncElement? NEWLINE)*) | FuncElement) BRACKETCLOSE;
  40. FuncElement -> FuncIdentifier | FuncCall | IfStatement;
  41. FuncIdentifier -> TYPE LABEL Assignment?;
  42. FuncCall -> LABEL ArgParams;
  43. IfStatement -> IF PARENOPEN Expr PARENCLOSE FuncBody;
  44. Expr -> (Arg | SubExpr) (LOGIC (Arg | SubExpr))*;
  45. SubExpr -> PARENOPEN (Arg | SubExpr) (LOGIC (Arg | SubExpr))* PARENCLOSE;
  46.  
  47. //========================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement