Advertisement
tomdodd4598

Untitled

Oct 27th, 2021
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1. Package dssl;
  2.  
  3. Helpers
  4. all = [0 .. 127];
  5. digit = ['0' .. '9'];
  6. letter = [['a' .. 'z'] + ['A' .. 'Z']];
  7. name = letter (digit | letter | '_')*;
  8. sign = '+' | '-';
  9.  
  10. tab = 9;
  11. lf = 10;
  12. cr = 13;
  13. eol = cr | lf | cr lf;
  14. separator = ' ' | tab | eol;
  15.  
  16. apostrophe = 39;
  17. quote = 34;
  18. not_eol = [all - [cr + lf]];
  19. escape_char = '\' not_eol;
  20.  
  21. c_char = [all - [apostrophe + ['\' + [lf + cr]]]] | escape_char;
  22. c_char_sequence = c_char+;
  23. s_char = [all - [quote + ['\' + [lf + cr]]]] | escape_char;
  24. s_char_sequence = s_char*;
  25.  
  26. not_star = [all - '*'];
  27. not_star_slash = [not_star - '/'];
  28.  
  29. double_slash = '//';
  30. slash_star = '/*';
  31.  
  32. line_comment = double_slash not_eol* eol;
  33. block_comment = slash_star not_star* '*'+ (not_star_slash not_star* '*'+)* '/';
  34.  
  35. Tokens
  36. blank = separator+;
  37. comment = line_comment | block_comment;
  38.  
  39. l_brace = '{';
  40. r_brace = '}';
  41.  
  42. l_bracket = '[';
  43. r_bracket = ']';
  44.  
  45. def = 'def';
  46.  
  47. exch = 'exch';
  48. pop = 'pop';
  49. dup = 'dup';
  50.  
  51. roll = 'roll';
  52. rid = 'rid';
  53. copy = 'copy';
  54.  
  55. count = 'count';
  56. countto = 'countto';
  57.  
  58. read = 'read';
  59. print = 'print';
  60. interpret = 'interpret';
  61.  
  62. int = 'int';
  63. bool = 'bool';
  64. float = 'float';
  65. char = 'char';
  66. string = 'string';
  67.  
  68. range = 'range';
  69. list = 'list';
  70. tuple = 'tuple';
  71. set = 'set';
  72. dict = 'dict';
  73.  
  74. hash = 'hash';
  75. unpack = 'unpack';
  76.  
  77. foreach = 'foreach';
  78.  
  79. size = 'size';
  80. isempty = 'isempty';
  81. contains = 'contains';
  82. append = 'append';
  83. remove = 'remove';
  84. containsall = 'containsall';
  85. addall = 'addall';
  86. removeall = 'removeall';
  87. clear = 'clear';
  88.  
  89. indexget = 'indexget';
  90. indexset = 'indexset';
  91. indexof = 'indexof';
  92.  
  93. containskey = 'containskey';
  94. containsval = 'containsval';
  95. putall = 'putall';
  96. keyset = 'keyset';
  97. valset = 'valset';
  98. entryset = 'entryset';
  99.  
  100. type = 'type';
  101. cast = 'cast';
  102.  
  103. exec = 'exec';
  104.  
  105. halt = 'halt';
  106. break = 'break';
  107.  
  108. equals = '=';
  109.  
  110. plus_equals = '+=';
  111. and_equals = '&=';
  112. or_equals = '|=';
  113. xor_equals = '^=';
  114. minus_equals = '-=';
  115. concat_equals = '~=';
  116.  
  117. arithmetic_left_shift_equals = '<<=';
  118. arithmetic_right_shift_equals = '>>=';
  119. logical_right_shift_equals = '>>>=';
  120.  
  121. multiply_equals = '*=';
  122. divide_equals = '/=';
  123. remainder_equals = '%=';
  124. power_equals = '**=';
  125. idivide_equals = '//=';
  126. modulo_equals = '%%=';
  127.  
  128. equal_to = '==';
  129. not_equal_to = '!=';
  130.  
  131. less_than = '<';
  132. less_or_equal = '<=';
  133. more_than = '>';
  134. more_or_equal = '>=';
  135.  
  136. plus = '+';
  137. and = '&';
  138. or = '|';
  139. xor = '^';
  140. minus = '-';
  141. concat = '~';
  142.  
  143. arithmetic_left_shift = '<<';
  144. arithmetic_right_shift = '>>';
  145. logical_right_shift = '>>>';
  146.  
  147. multiply = '*';
  148. divide = '/';
  149. remainder = '%';
  150. power = '**';
  151. idivide = '//';
  152. modulo = '%%';
  153.  
  154. not = 'not';
  155. neg = 'neg';
  156. inv = 'inv';
  157.  
  158. int_value = sign? digit+;
  159. bool_value = 'true' | 'false';
  160. float_value = sign? (digit+ ('.' digit*)? | '.' digit+);
  161. char_value = apostrophe c_char apostrophe;
  162. string_value = quote s_char_sequence quote;
  163.  
  164. label = '/' name;
  165. identifier = name;
  166.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement