Advertisement
Guest User

dsadsadsa

a guest
Dec 16th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. grammar PolishNotation;
  2.  
  3. fragment SINGLE_SPACE : '\u0020'; // ' '
  4. fragment TABULATION : '\u0009'; // '\t'
  5. fragment LINE_FEED : '\u000A'; // '\n'
  6. fragment CARRAIGE_RETURN: '\u000D'; // '\r'
  7. fragment COMMA : ','; // ','
  8. fragment DOT : '.';
  9. fragment FRACTION : DOT [0-9]* '1'..'9';
  10.  
  11.  
  12. Drop : 'Drop';
  13. IntegerDigits : 'IntegerDigits';
  14. Part : 'Part';
  15. Last : 'Last';
  16. First : 'First';
  17. Count : 'Count';
  18. Total : 'Total';
  19. Length : 'Length';
  20. Sort : 'Sort';
  21. Join : 'Join';
  22. Reverse : 'Reverse';
  23. Range : 'Range';
  24. Add : '+';
  25. Subtract : '-';
  26. Multiply : '*';
  27. Divide : '/';
  28. Colon : ':' -> type(Divide);
  29. Power : '^';
  30. DoubleMultiply: '**' -> type(Power);
  31. Max : 'max';
  32. Min : 'min';
  33. IntPart : '0'
  34. | [1-9]+ [0-9]*
  35. ;
  36. PointFloat : IntPart? FRACTION;
  37. WhiteSpace : ( SINGLE_SPACE | TABULATION )+ -> skip;
  38. NewLine : ( CARRAIGE_RETURN | LINE_FEED )+ -> skip;
  39. //Comma : ( COMMA )+ -> skip;
  40.  
  41. number : IntPart
  42. | PointFloat
  43. ;
  44. list : '{'(number*',')*number'}'
  45. ;
  46.  
  47.  
  48.  
  49. operationReturningNumbers : (op=( Add
  50. | Subtract
  51. | Multiply
  52. | Divide
  53. | Power
  54. | Max
  55. | Min
  56. )
  57. (operationReturningNumbers | number) (operationReturningNumbers | number)
  58.  
  59. | '(' operationReturningNumbers ')')
  60. ;
  61.  
  62.  
  63.  
  64.  
  65. operationReturningLists :
  66. (op=( Reverse | Sort | Length | Total | Count | First | Last| Max | Min)
  67. ('['list']' | '['operationReturningLists']')) |
  68.  
  69. (op= Join
  70. ('['list+']' | '['operationReturningLists+']')) |
  71.  
  72. // (op= Multiply
  73. // (list | operationReturningLists) (list | operationReturningLists)) |
  74.  
  75. (op= (Add | Multiply | Divide | Power)
  76. ( ( list | operationReturningLists ) (operationReturningNumbers | number ) |
  77. ( number | operationReturningNumbers) (operationReturningLists | list ) |
  78. ( list | operationReturningLists )( list | operationReturningLists ))) |
  79.  
  80.  
  81. (op=( Part | Drop )
  82. (('['list | '['operationReturningLists) ','number']')) |
  83.  
  84. (op=( Range | IntegerDigits)
  85. ('['number']' | '['operationReturningNumbers']'))
  86.  
  87. | '(' operationReturningLists ')'
  88. ;
  89.  
  90.  
  91. expression: operationReturningLists
  92. | operationReturningNumbers
  93. | number
  94. | list
  95. ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement