occam-parsers 17.0.13 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/README.md +7 -5
  2. package/example.js +3482 -1257
  3. package/lib/basic/bnf.js +2 -2
  4. package/lib/bnf/bnf.js +2 -2
  5. package/lib/bnf/parser.js +7 -3
  6. package/lib/common/parser.js +2 -2
  7. package/lib/definition/ambiguousModifierRule.js +28 -6
  8. package/lib/definition/choiceOfParts.js +40 -12
  9. package/lib/definition/definition.js +29 -5
  10. package/lib/definition/definitions.js +36 -9
  11. package/lib/definition/document.js +31 -8
  12. package/lib/definition/error.js +27 -5
  13. package/lib/definition/lookAheadModifierRule.js +28 -6
  14. package/lib/definition/name.js +27 -5
  15. package/lib/definition/noWhitespacePart.js +27 -5
  16. package/lib/definition/partChoice.js +127 -0
  17. package/lib/definition/partRule/nonTerminal/ruleName.js +28 -6
  18. package/lib/definition/partRule/nonTerminal.js +28 -6
  19. package/lib/definition/partRule/terminal.js +28 -6
  20. package/lib/definition/precedence.js +132 -0
  21. package/lib/definition/quantifierRule.js +29 -7
  22. package/lib/definition/rule.js +31 -9
  23. package/lib/definition/ruleName.js +28 -6
  24. package/lib/definition/sequenceOfParts.js +30 -8
  25. package/lib/definition/significantTokenType.js +28 -6
  26. package/lib/definition/terminalSymbol.js +28 -6
  27. package/lib/definition.js +48 -4
  28. package/lib/example/view/basic.js +44 -21
  29. package/lib/example/view/bnf.js +5 -11
  30. package/lib/example/view/div/sizeable.js +2 -2
  31. package/lib/example/view/textarea/bnf.js +23 -2
  32. package/lib/example/view/textarea/content.js +23 -2
  33. package/lib/example/view/textarea/lexicalEntries.js +23 -2
  34. package/lib/example/view/textarea/parseTree.js +23 -2
  35. package/lib/example/view/textarea/tokens.js +23 -2
  36. package/lib/example/view/textarea.js +2 -2
  37. package/lib/example/view.js +13 -12
  38. package/lib/node/bnf/choiceOfParts.js +9 -2
  39. package/lib/node/bnf/definition.js +6 -4
  40. package/lib/node/bnf/definitions.js +4 -3
  41. package/lib/node/bnf/document.js +4 -13
  42. package/lib/node/bnf/endOfLine.js +2 -2
  43. package/lib/node/bnf/epsilon.js +2 -2
  44. package/lib/node/bnf/name.js +4 -3
  45. package/lib/node/bnf/noWhitespacePart.js +2 -2
  46. package/lib/node/bnf/part/terminal.js +4 -3
  47. package/lib/node/bnf/part.js +7 -6
  48. package/lib/node/bnf/partChoice.js +133 -0
  49. package/lib/node/bnf/precedence.js +130 -0
  50. package/lib/node/bnf/regularExpression.js +5 -4
  51. package/lib/node/bnf/rule.js +7 -6
  52. package/lib/node/bnf/ruleName.js +4 -3
  53. package/lib/node/bnf/sequenceOfParts.js +9 -2
  54. package/lib/node/bnf/significantTokenType.js +5 -4
  55. package/lib/node/bnf/terminalSymbol.js +5 -4
  56. package/lib/node/bnf/wildcard.js +2 -2
  57. package/lib/node/nonTerminal.js +17 -16
  58. package/lib/node/terminal/epsilon.js +2 -3
  59. package/lib/node/terminal/noWhitespace.js +2 -3
  60. package/lib/node/terminal.js +11 -1
  61. package/lib/parseTree/childNodes.js +4 -3
  62. package/lib/parseTree/horizontalBranch.js +1 -1
  63. package/lib/parseTree/verticalBranch.js +3 -11
  64. package/lib/parseTree.js +3 -4
  65. package/lib/part/nonTerminal/choiceOfParts.js +19 -28
  66. package/lib/part/nonTerminal/oneOrMoreParts.js +22 -15
  67. package/lib/part/nonTerminal/optionalPart.js +19 -12
  68. package/lib/part/nonTerminal/ruleName.js +19 -6
  69. package/lib/part/nonTerminal/sequenceOfParts.js +10 -15
  70. package/lib/part/nonTerminal/zeroOrMoreParts.js +23 -15
  71. package/lib/part/terminal/endOfLine.js +11 -3
  72. package/lib/part/terminal/epsilon.js +11 -3
  73. package/lib/part/terminal/noWhitespace.js +11 -3
  74. package/lib/part/terminal/regularExpression.js +14 -5
  75. package/lib/part/terminal/significantTokenType.js +11 -3
  76. package/lib/part/terminal/terminalSymbol.js +11 -3
  77. package/lib/part/terminal/wildcard.js +11 -3
  78. package/lib/partChoice.js +89 -0
  79. package/lib/rule/ambiguousModifier.js +27 -5
  80. package/lib/rule/choiceOfParts.js +27 -5
  81. package/lib/rule/definition.js +27 -5
  82. package/lib/rule/definitions.js +27 -5
  83. package/lib/rule/document.js +27 -5
  84. package/lib/rule/endOfLine.js +27 -5
  85. package/lib/rule/epsilon.js +27 -5
  86. package/lib/rule/error.js +27 -5
  87. package/lib/rule/lookAheadModifier.js +27 -5
  88. package/lib/rule/name.js +27 -5
  89. package/lib/rule/noWhitespacePart.js +27 -5
  90. package/lib/rule/nonTerminalPart.js +29 -7
  91. package/lib/rule/oneOrMoreQuantifier.js +27 -5
  92. package/lib/rule/optionalQuantifier.js +27 -5
  93. package/lib/rule/part.js +29 -7
  94. package/lib/rule/partChoice.js +126 -0
  95. package/lib/rule/precedence.js +126 -0
  96. package/lib/rule/quantifier.js +29 -7
  97. package/lib/rule/regularExpression.js +27 -5
  98. package/lib/rule/rule.js +27 -5
  99. package/lib/rule/ruleName.js +27 -5
  100. package/lib/rule/sequenceOfParts.js +27 -5
  101. package/lib/rule/significantTokenType.js +27 -5
  102. package/lib/rule/terminalPart.js +33 -11
  103. package/lib/rule/terminalSymbol.js +27 -5
  104. package/lib/rule/wildcard.js +27 -5
  105. package/lib/rule/zeroOrMoreQuantifier.js +27 -5
  106. package/lib/rule.js +37 -110
  107. package/lib/ruleNames.js +9 -1
  108. package/lib/utilities/bnf.js +4 -3
  109. package/lib/utilities/lookAhead.js +30 -19
  110. package/lib/utilities/node.js +46 -0
  111. package/package.json +2 -2
  112. package/src/basic/bnf.js +17 -21
  113. package/src/bnf/bnf.js +8 -4
  114. package/src/bnf/parser.js +34 -26
  115. package/src/common/parser.js +3 -1
  116. package/src/definition/ambiguousModifierRule.js +7 -5
  117. package/src/definition/choiceOfParts.js +30 -21
  118. package/src/definition/definition.js +13 -7
  119. package/src/definition/definitions.js +24 -16
  120. package/src/definition/document.js +16 -11
  121. package/src/definition/error.js +6 -4
  122. package/src/definition/lookAheadModifierRule.js +7 -5
  123. package/src/definition/name.js +7 -5
  124. package/src/definition/noWhitespacePart.js +7 -5
  125. package/src/definition/partChoice.js +23 -0
  126. package/src/definition/partRule/nonTerminal/ruleName.js +9 -7
  127. package/src/definition/partRule/nonTerminal.js +8 -6
  128. package/src/definition/partRule/terminal.js +9 -7
  129. package/src/definition/precedence.js +34 -0
  130. package/src/definition/quantifierRule.js +8 -6
  131. package/src/definition/rule.js +12 -10
  132. package/src/definition/ruleName.js +7 -5
  133. package/src/definition/sequenceOfParts.js +9 -7
  134. package/src/definition/significantTokenType.js +7 -5
  135. package/src/definition/terminalSymbol.js +7 -5
  136. package/src/definition.js +58 -12
  137. package/src/example/view/basic.js +30 -7
  138. package/src/example/view/bnf.js +5 -18
  139. package/src/example/view/div/sizeable.js +1 -1
  140. package/src/example/view/textarea/bnf.js +10 -1
  141. package/src/example/view/textarea/content.js +9 -1
  142. package/src/example/view/textarea/lexicalEntries.js +9 -1
  143. package/src/example/view/textarea/parseTree.js +10 -1
  144. package/src/example/view/textarea/tokens.js +9 -1
  145. package/src/example/view/textarea.js +0 -1
  146. package/src/example/view.js +15 -13
  147. package/src/node/bnf/choiceOfParts.js +14 -2
  148. package/src/node/bnf/definition.js +11 -4
  149. package/src/node/bnf/definitions.js +3 -3
  150. package/src/node/bnf/document.js +4 -20
  151. package/src/node/bnf/endOfLine.js +1 -1
  152. package/src/node/bnf/epsilon.js +1 -1
  153. package/src/node/bnf/name.js +3 -1
  154. package/src/node/bnf/noWhitespacePart.js +1 -1
  155. package/src/node/bnf/part/terminal.js +3 -1
  156. package/src/node/bnf/part.js +7 -4
  157. package/src/node/bnf/partChoice.js +27 -0
  158. package/src/node/bnf/precedence.js +21 -0
  159. package/src/node/bnf/regularExpression.js +4 -2
  160. package/src/node/bnf/rule.js +4 -3
  161. package/src/node/bnf/ruleName.js +4 -2
  162. package/src/node/bnf/sequenceOfParts.js +14 -2
  163. package/src/node/bnf/significantTokenType.js +4 -2
  164. package/src/node/bnf/terminalSymbol.js +4 -2
  165. package/src/node/bnf/wildcard.js +1 -1
  166. package/src/node/nonTerminal.js +11 -9
  167. package/src/node/terminal/epsilon.js +1 -6
  168. package/src/node/terminal/noWhitespace.js +1 -6
  169. package/src/node/terminal.js +11 -0
  170. package/src/parseTree/childNodes.js +3 -1
  171. package/src/parseTree/horizontalBranch.js +3 -1
  172. package/src/parseTree/verticalBranch.js +7 -5
  173. package/src/parseTree.js +3 -4
  174. package/src/part/nonTerminal/choiceOfParts.js +17 -33
  175. package/src/part/nonTerminal/oneOrMoreParts.js +20 -14
  176. package/src/part/nonTerminal/optionalPart.js +17 -11
  177. package/src/part/nonTerminal/ruleName.js +18 -6
  178. package/src/part/nonTerminal/sequenceOfParts.js +10 -19
  179. package/src/part/nonTerminal/zeroOrMoreParts.js +22 -12
  180. package/src/part/terminal/endOfLine.js +8 -2
  181. package/src/part/terminal/epsilon.js +8 -2
  182. package/src/part/terminal/noWhitespace.js +8 -2
  183. package/src/part/terminal/regularExpression.js +11 -3
  184. package/src/part/terminal/significantTokenType.js +8 -2
  185. package/src/part/terminal/terminalSymbol.js +8 -2
  186. package/src/part/terminal/wildcard.js +8 -2
  187. package/src/partChoice.js +57 -0
  188. package/src/rule/ambiguousModifier.js +6 -5
  189. package/src/rule/choiceOfParts.js +6 -5
  190. package/src/rule/definition.js +6 -5
  191. package/src/rule/definitions.js +6 -5
  192. package/src/rule/document.js +6 -5
  193. package/src/rule/endOfLine.js +6 -5
  194. package/src/rule/epsilon.js +6 -5
  195. package/src/rule/error.js +6 -5
  196. package/src/rule/lookAheadModifier.js +6 -5
  197. package/src/rule/name.js +6 -5
  198. package/src/rule/noWhitespacePart.js +5 -4
  199. package/src/rule/nonTerminalPart.js +8 -7
  200. package/src/rule/oneOrMoreQuantifier.js +7 -6
  201. package/src/rule/optionalQuantifier.js +7 -6
  202. package/src/rule/part.js +8 -7
  203. package/src/rule/partChoice.js +22 -0
  204. package/src/rule/precedence.js +22 -0
  205. package/src/rule/quantifier.js +8 -7
  206. package/src/rule/regularExpression.js +7 -6
  207. package/src/rule/rule.js +6 -5
  208. package/src/rule/ruleName.js +6 -5
  209. package/src/rule/sequenceOfParts.js +5 -4
  210. package/src/rule/significantTokenType.js +7 -6
  211. package/src/rule/terminalPart.js +12 -11
  212. package/src/rule/terminalSymbol.js +6 -5
  213. package/src/rule/wildcard.js +6 -5
  214. package/src/rule/zeroOrMoreQuantifier.js +7 -6
  215. package/src/rule.js +40 -69
  216. package/src/ruleNames.js +2 -0
  217. package/src/utilities/bnf.js +4 -1
  218. package/src/utilities/lookAhead.js +20 -9
  219. package/src/utilities/node.js +41 -0
  220. package/lib/utilities/array.js +0 -64
  221. package/src/utilities/array.js +0 -23
package/README.md CHANGED
@@ -30,7 +30,7 @@ All parsers share common functionality. The last two parse content according to
30
30
 
31
31
  definitions ::= definition ( "|" definition )* ;
32
32
 
33
- definition ::= part+ ;
33
+ definition ::= part+ precedence? ;
34
34
 
35
35
  part ::= nonTerminalPart quantifier*
36
36
 
@@ -59,15 +59,15 @@ All parsers share common functionality. The last two parse content according to
59
59
  | wildcard
60
60
 
61
61
  | epsilon
62
-
62
+
63
63
  ;
64
64
 
65
65
  noWhitespacePart ::= "<NO_WHITESPACE>" ;
66
66
 
67
- choiceOfParts ::= "(" part ( "|" part )+ ")" ;
68
-
69
67
  sequenceOfParts ::= "(" part part+ ")" ;
70
68
 
69
+ choiceOfParts ::= "(" part precedence? ( "|" part precedence? )+ ")" ;
70
+
71
71
  ruleName ::= [name] ;
72
72
 
73
73
  significantTokenType ::= [type] ;
@@ -76,8 +76,10 @@ All parsers share common functionality. The last two parse content according to
76
76
 
77
77
  terminalSymbol ::= [string-literal] ;
78
78
 
79
+ precedence ::= "("<NO_WHITESPACE>[number]<NO_WHITESPACE>")" ;
80
+
79
81
  endOfLine ::= "<END_OF_LINE>" ;
80
-
82
+
81
83
  wildcard ::= "." ;
82
84
 
83
85
  epsilon ::= "ε" ;