Advertisement
Guest User

Untitled

a guest
Jun 3rd, 2017
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
BNF 0.84 KB | None | 0 0
  1. grammar KanbanDSL2;
  2.  
  3. options {
  4.     output=AST;
  5. }
  6.  
  7. tokens {
  8.     UNIT;
  9.     STAGE;
  10.     CARDS;
  11.     NAME;
  12.     LIMIT;
  13. }
  14.  
  15. stages  :   stage+
  16.         -> ^(UNIT stage+)
  17.     ;
  18.  
  19. stage   :   name (':' limit)? (cards|substages) ';'
  20.         -> ^(STAGE name limit? cards? substages?)
  21.     ;
  22.  
  23. substages
  24.     :   substage+
  25.     ;
  26.  
  27. substage:   '[' name (':' limit)? cards ']'
  28.         -> ^(STAGE name limit? cards)
  29.     ;
  30.  
  31. limit   :   INT
  32.         -> LIMIT[$text]
  33.     ;
  34.  
  35. cards   :   '(' (name (',' name)*)? ')'
  36.         -> ^(CARDS name*)
  37.     ;
  38.  
  39. name
  40.     :   ID+
  41.         -> NAME[$text]
  42.     ;
  43.  
  44. ID  :   ('a'..'z'|'A'..'Z'|'_'|'!') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'!')*
  45.     ;
  46.  
  47. INT :   '0'..'9'+
  48.     ;
  49.  
  50. COMMENT
  51.     :   '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
  52.     |   '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
  53.     ;
  54.  
  55. WS  :   ( ' '
  56.         | '\t'
  57.         | '\r'
  58.         | '\n'
  59.         ) {$channel=HIDDEN;}
  60.     ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement