vanta-engine 1.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 (162) hide show
  1. package/README.md +61 -0
  2. package/dist/engine.d.ts +18 -0
  3. package/dist/engine.d.ts.map +1 -0
  4. package/dist/engine.js +23 -0
  5. package/dist/engine.js.map +1 -0
  6. package/dist/graphics/assets/asset_format/format.d.ts +115 -0
  7. package/dist/graphics/assets/asset_format/format.d.ts.map +1 -0
  8. package/dist/graphics/assets/asset_format/format.js +29 -0
  9. package/dist/graphics/assets/asset_format/format.js.map +1 -0
  10. package/dist/graphics/assets/asset_loaders/obj.d.ts +127 -0
  11. package/dist/graphics/assets/asset_loaders/obj.d.ts.map +1 -0
  12. package/dist/graphics/assets/asset_loaders/obj.js +762 -0
  13. package/dist/graphics/assets/asset_loaders/obj.js.map +1 -0
  14. package/dist/graphics/assets/material.d.ts +33 -0
  15. package/dist/graphics/assets/material.d.ts.map +1 -0
  16. package/dist/graphics/assets/material.js +104 -0
  17. package/dist/graphics/assets/material.js.map +1 -0
  18. package/dist/graphics/assets/mesh.d.ts +17 -0
  19. package/dist/graphics/assets/mesh.d.ts.map +1 -0
  20. package/dist/graphics/assets/mesh.js +47 -0
  21. package/dist/graphics/assets/mesh.js.map +1 -0
  22. package/dist/graphics/assets/model.d.ts +13 -0
  23. package/dist/graphics/assets/model.d.ts.map +1 -0
  24. package/dist/graphics/assets/model.js +18 -0
  25. package/dist/graphics/assets/model.js.map +1 -0
  26. package/dist/graphics/assets/texture.d.ts +93 -0
  27. package/dist/graphics/assets/texture.d.ts.map +1 -0
  28. package/dist/graphics/assets/texture.js +318 -0
  29. package/dist/graphics/assets/texture.js.map +1 -0
  30. package/dist/graphics/assets/uniform_buffer.d.ts +28 -0
  31. package/dist/graphics/assets/uniform_buffer.d.ts.map +1 -0
  32. package/dist/graphics/assets/uniform_buffer.js +132 -0
  33. package/dist/graphics/assets/uniform_buffer.js.map +1 -0
  34. package/dist/graphics/assets/vaos.d.ts +9 -0
  35. package/dist/graphics/assets/vaos.d.ts.map +1 -0
  36. package/dist/graphics/assets/vaos.js +98 -0
  37. package/dist/graphics/assets/vaos.js.map +1 -0
  38. package/dist/graphics/framebuffer.d.ts +77 -0
  39. package/dist/graphics/framebuffer.d.ts.map +1 -0
  40. package/dist/graphics/framebuffer.js +265 -0
  41. package/dist/graphics/framebuffer.js.map +1 -0
  42. package/dist/graphics/graphics_manager.d.ts +70 -0
  43. package/dist/graphics/graphics_manager.d.ts.map +1 -0
  44. package/dist/graphics/graphics_manager.js +503 -0
  45. package/dist/graphics/graphics_manager.js.map +1 -0
  46. package/dist/graphics/shader_program.d.ts +66 -0
  47. package/dist/graphics/shader_program.d.ts.map +1 -0
  48. package/dist/graphics/shader_program.js +92 -0
  49. package/dist/graphics/shader_program.js.map +1 -0
  50. package/dist/graphics/utility.d.ts +4 -0
  51. package/dist/graphics/utility.d.ts.map +1 -0
  52. package/dist/graphics/utility.js +33 -0
  53. package/dist/graphics/utility.js.map +1 -0
  54. package/dist/hook_manager.d.ts +33 -0
  55. package/dist/hook_manager.d.ts.map +1 -0
  56. package/dist/hook_manager.js +102 -0
  57. package/dist/hook_manager.js.map +1 -0
  58. package/dist/index.d.ts +27 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +27 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/input/input_manager.d.ts +41 -0
  63. package/dist/input/input_manager.d.ts.map +1 -0
  64. package/dist/input/input_manager.js +121 -0
  65. package/dist/input/input_manager.js.map +1 -0
  66. package/dist/node/camera3d.d.ts +10 -0
  67. package/dist/node/camera3d.d.ts.map +1 -0
  68. package/dist/node/camera3d.js +25 -0
  69. package/dist/node/camera3d.js.map +1 -0
  70. package/dist/node/lights/directional_light.d.ts +20 -0
  71. package/dist/node/lights/directional_light.d.ts.map +1 -0
  72. package/dist/node/lights/directional_light.js +111 -0
  73. package/dist/node/lights/directional_light.js.map +1 -0
  74. package/dist/node/lights/light.d.ts +15 -0
  75. package/dist/node/lights/light.d.ts.map +1 -0
  76. package/dist/node/lights/light.js +24 -0
  77. package/dist/node/lights/light.js.map +1 -0
  78. package/dist/node/lights/point_light.d.ts +26 -0
  79. package/dist/node/lights/point_light.d.ts.map +1 -0
  80. package/dist/node/lights/point_light.js +109 -0
  81. package/dist/node/lights/point_light.js.map +1 -0
  82. package/dist/node/lights/spot_light.d.ts +13 -0
  83. package/dist/node/lights/spot_light.d.ts.map +1 -0
  84. package/dist/node/lights/spot_light.js +35 -0
  85. package/dist/node/lights/spot_light.js.map +1 -0
  86. package/dist/node/lights.d.ts +43 -0
  87. package/dist/node/lights.d.ts.map +1 -0
  88. package/dist/node/lights.js +201 -0
  89. package/dist/node/lights.js.map +1 -0
  90. package/dist/node/object3d.d.ts +10 -0
  91. package/dist/node/object3d.d.ts.map +1 -0
  92. package/dist/node/object3d.js +60 -0
  93. package/dist/node/object3d.js.map +1 -0
  94. package/dist/node/skybox.d.ts +15 -0
  95. package/dist/node/skybox.d.ts.map +1 -0
  96. package/dist/node/skybox.js +33 -0
  97. package/dist/node/skybox.js.map +1 -0
  98. package/dist/node/sprite2d.d.ts +14 -0
  99. package/dist/node/sprite2d.d.ts.map +1 -0
  100. package/dist/node/sprite2d.js +33 -0
  101. package/dist/node/sprite2d.js.map +1 -0
  102. package/dist/node.d.ts +76 -0
  103. package/dist/node.d.ts.map +1 -0
  104. package/dist/node.js +308 -0
  105. package/dist/node.js.map +1 -0
  106. package/dist/scene.d.ts +19 -0
  107. package/dist/scene.d.ts.map +1 -0
  108. package/dist/scene.js +50 -0
  109. package/dist/scene.js.map +1 -0
  110. package/dist/shader_language/grammar.d.ts +2 -0
  111. package/dist/shader_language/grammar.d.ts.map +1 -0
  112. package/dist/shader_language/grammar.js +971 -0
  113. package/dist/shader_language/grammar.js.map +1 -0
  114. package/dist/shader_language/tokenizer.d.ts +3 -0
  115. package/dist/shader_language/tokenizer.d.ts.map +1 -0
  116. package/dist/shader_language/tokenizer.js +50 -0
  117. package/dist/shader_language/tokenizer.js.map +1 -0
  118. package/dist/shaders/default_2d.fs.d.ts +3 -0
  119. package/dist/shaders/default_2d.fs.d.ts.map +1 -0
  120. package/dist/shaders/default_2d.fs.js +14 -0
  121. package/dist/shaders/default_2d.fs.js.map +1 -0
  122. package/dist/shaders/default_2d.vs.d.ts +3 -0
  123. package/dist/shaders/default_2d.vs.d.ts.map +1 -0
  124. package/dist/shaders/default_2d.vs.js +16 -0
  125. package/dist/shaders/default_2d.vs.js.map +1 -0
  126. package/dist/shaders/default_3d.fs.d.ts +3 -0
  127. package/dist/shaders/default_3d.fs.d.ts.map +1 -0
  128. package/dist/shaders/default_3d.fs.js +327 -0
  129. package/dist/shaders/default_3d.fs.js.map +1 -0
  130. package/dist/shaders/default_3d.vs.d.ts +3 -0
  131. package/dist/shaders/default_3d.vs.d.ts.map +1 -0
  132. package/dist/shaders/default_3d.vs.js +36 -0
  133. package/dist/shaders/default_3d.vs.js.map +1 -0
  134. package/dist/shaders/default_directional_shadow.fs.d.ts +3 -0
  135. package/dist/shaders/default_directional_shadow.fs.d.ts.map +1 -0
  136. package/dist/shaders/default_directional_shadow.fs.js +6 -0
  137. package/dist/shaders/default_directional_shadow.fs.js.map +1 -0
  138. package/dist/shaders/default_directional_shadow.vs.d.ts +3 -0
  139. package/dist/shaders/default_directional_shadow.vs.d.ts.map +1 -0
  140. package/dist/shaders/default_directional_shadow.vs.js +11 -0
  141. package/dist/shaders/default_directional_shadow.vs.js.map +1 -0
  142. package/dist/shaders/default_point_shadow.fs.d.ts +3 -0
  143. package/dist/shaders/default_point_shadow.fs.d.ts.map +1 -0
  144. package/dist/shaders/default_point_shadow.fs.js +18 -0
  145. package/dist/shaders/default_point_shadow.fs.js.map +1 -0
  146. package/dist/shaders/default_point_shadow.vs.d.ts +3 -0
  147. package/dist/shaders/default_point_shadow.vs.d.ts.map +1 -0
  148. package/dist/shaders/default_point_shadow.vs.js +14 -0
  149. package/dist/shaders/default_point_shadow.vs.js.map +1 -0
  150. package/dist/shaders/default_skybox.fs.d.ts +3 -0
  151. package/dist/shaders/default_skybox.fs.d.ts.map +1 -0
  152. package/dist/shaders/default_skybox.fs.js +14 -0
  153. package/dist/shaders/default_skybox.fs.js.map +1 -0
  154. package/dist/shaders/default_skybox.vs.d.ts +3 -0
  155. package/dist/shaders/default_skybox.vs.d.ts.map +1 -0
  156. package/dist/shaders/default_skybox.vs.js +23 -0
  157. package/dist/shaders/default_skybox.vs.js.map +1 -0
  158. package/dist/utility.d.ts +5 -0
  159. package/dist/utility.d.ts.map +1 -0
  160. package/dist/utility.js +19 -0
  161. package/dist/utility.js.map +1 -0
  162. package/package.json +47 -0
@@ -0,0 +1,971 @@
1
+ // @ts-nocheck
2
+ // Generated by JavaScript APG, Version [`apg-js2`](https://github.com/ldthomas/apg-js2)
3
+ export default function () {
4
+ "use strict";
5
+ //```
6
+ // SUMMARY
7
+ // rules = 37
8
+ // udts = 0
9
+ // opcodes = 705
10
+ // --- ABNF original opcodes
11
+ // ALT = 22
12
+ // CAT = 91
13
+ // REP = 194
14
+ // RNM = 242
15
+ // TLS = 88
16
+ // TBS = 65
17
+ // TRG = 3
18
+ // --- SABNF superset opcodes
19
+ // UDT = 0
20
+ // AND = 0
21
+ // NOT = 0
22
+ // BKA = 0
23
+ // BKN = 0
24
+ // BKR = 0
25
+ // ABG = 0
26
+ // AEN = 0
27
+ // characters = [9 - 125]
28
+ //```
29
+ /* OBJECT IDENTIFIER (for internal parser use) */
30
+ this.grammarObject = 'grammarObject';
31
+ /* RULES */
32
+ this.rules = [];
33
+ this.rules[0] = { name: 'WSP', lower: 'wsp', index: 0, isBkr: false };
34
+ this.rules[1] = { name: 'CR', lower: 'cr', index: 1, isBkr: false };
35
+ this.rules[2] = { name: 'LF', lower: 'lf', index: 2, isBkr: false };
36
+ this.rules[3] = { name: 'CRLF', lower: 'crlf', index: 3, isBkr: false };
37
+ this.rules[4] = { name: 'NEWLINE', lower: 'newline', index: 4, isBkr: false };
38
+ this.rules[5] = { name: 'DIGIT', lower: 'digit', index: 5, isBkr: false };
39
+ this.rules[6] = { name: 'ALPHA', lower: 'alpha', index: 6, isBkr: false };
40
+ this.rules[7] = { name: 'INTEGER', lower: 'integer', index: 7, isBkr: false };
41
+ this.rules[8] = { name: 'FLOAT', lower: 'float', index: 8, isBkr: false };
42
+ this.rules[9] = { name: 'LITERAL', lower: 'literal', index: 9, isBkr: false };
43
+ this.rules[10] = { name: 'LABEL', lower: 'label', index: 10, isBkr: false };
44
+ this.rules[11] = { name: 'PATH', lower: 'path', index: 11, isBkr: false };
45
+ this.rules[12] = { name: 'IMPORT', lower: 'import', index: 12, isBkr: false };
46
+ this.rules[13] = { name: 'EXTENSION', lower: 'extension', index: 13, isBkr: false };
47
+ this.rules[14] = { name: 'BASE-TYPE', lower: 'base-type', index: 14, isBkr: false };
48
+ this.rules[15] = { name: 'PRECISION', lower: 'precision', index: 15, isBkr: false };
49
+ this.rules[16] = { name: 'TYPE', lower: 'type', index: 16, isBkr: false };
50
+ this.rules[17] = { name: 'VERTEX-ATTRIBUTE-DESCRIPTOR', lower: 'vertex-attribute-descriptor', index: 17, isBkr: false };
51
+ this.rules[18] = { name: 'DESCRIPTOR', lower: 'descriptor', index: 18, isBkr: false };
52
+ this.rules[19] = { name: 'DECLARATION', lower: 'declaration', index: 19, isBkr: false };
53
+ this.rules[20] = { name: 'ARGUMENTS', lower: 'arguments', index: 20, isBkr: false };
54
+ this.rules[21] = { name: 'CALL', lower: 'call', index: 21, isBkr: false };
55
+ this.rules[22] = { name: 'PRIMARY', lower: 'primary', index: 22, isBkr: false };
56
+ this.rules[23] = { name: 'ELEMENT', lower: 'element', index: 23, isBkr: false };
57
+ this.rules[24] = { name: 'FACTOR', lower: 'factor', index: 24, isBkr: false };
58
+ this.rules[25] = { name: 'TERM', lower: 'term', index: 25, isBkr: false };
59
+ this.rules[26] = { name: 'CAST-EXPR', lower: 'cast-expr', index: 26, isBkr: false };
60
+ this.rules[27] = { name: 'EXPRESSION', lower: 'expression', index: 27, isBkr: false };
61
+ this.rules[28] = { name: 'PARENTHESES', lower: 'parentheses', index: 28, isBkr: false };
62
+ this.rules[29] = { name: 'ASSIGNMENT-LHS', lower: 'assignment-lhs', index: 29, isBkr: false };
63
+ this.rules[30] = { name: 'ASSIGNMENT', lower: 'assignment', index: 30, isBkr: false };
64
+ this.rules[31] = { name: 'STATEMENT', lower: 'statement', index: 31, isBkr: false };
65
+ this.rules[32] = { name: 'STATEMENT-LINE', lower: 'statement-line', index: 32, isBkr: false };
66
+ this.rules[33] = { name: 'FUNCTION-BODY', lower: 'function-body', index: 33, isBkr: false };
67
+ this.rules[34] = { name: 'FUNCTION-DEFINITION-ARGUMENTS', lower: 'function-definition-arguments', index: 34, isBkr: false };
68
+ this.rules[35] = { name: 'FUNCTION-DEFINITION', lower: 'function-definition', index: 35, isBkr: false };
69
+ this.rules[36] = { name: 'ROOT', lower: 'root', index: 36, isBkr: false };
70
+ /* UDTS */
71
+ this.udts = [];
72
+ /* OPCODES */
73
+ /* WSP */
74
+ this.rules[0].opcodes = [];
75
+ this.rules[0].opcodes[0] = { type: 1, children: [1, 2] }; // ALT
76
+ this.rules[0].opcodes[1] = { type: 6, string: [32] }; // TBS
77
+ this.rules[0].opcodes[2] = { type: 6, string: [9] }; // TBS
78
+ /* CR */
79
+ this.rules[1].opcodes = [];
80
+ this.rules[1].opcodes[0] = { type: 6, string: [13] }; // TBS
81
+ /* LF */
82
+ this.rules[2].opcodes = [];
83
+ this.rules[2].opcodes[0] = { type: 6, string: [10] }; // TBS
84
+ /* CRLF */
85
+ this.rules[3].opcodes = [];
86
+ this.rules[3].opcodes[0] = { type: 2, children: [1, 2] }; // CAT
87
+ this.rules[3].opcodes[1] = { type: 4, index: 1 }; // RNM(CR)
88
+ this.rules[3].opcodes[2] = { type: 4, index: 2 }; // RNM(LF)
89
+ /* NEWLINE */
90
+ this.rules[4].opcodes = [];
91
+ this.rules[4].opcodes[0] = { type: 1, children: [1, 2, 3] }; // ALT
92
+ this.rules[4].opcodes[1] = { type: 4, index: 3 }; // RNM(CRLF)
93
+ this.rules[4].opcodes[2] = { type: 4, index: 2 }; // RNM(LF)
94
+ this.rules[4].opcodes[3] = { type: 4, index: 1 }; // RNM(CR)
95
+ /* DIGIT */
96
+ this.rules[5].opcodes = [];
97
+ this.rules[5].opcodes[0] = { type: 5, min: 48, max: 57 }; // TRG
98
+ /* ALPHA */
99
+ this.rules[6].opcodes = [];
100
+ this.rules[6].opcodes[0] = { type: 1, children: [1, 2] }; // ALT
101
+ this.rules[6].opcodes[1] = { type: 5, min: 65, max: 90 }; // TRG
102
+ this.rules[6].opcodes[2] = { type: 5, min: 97, max: 122 }; // TRG
103
+ /* INTEGER */
104
+ this.rules[7].opcodes = [];
105
+ this.rules[7].opcodes[0] = { type: 2, children: [1, 5] }; // CAT
106
+ this.rules[7].opcodes[1] = { type: 3, min: 0, max: 1 }; // REP
107
+ this.rules[7].opcodes[2] = { type: 1, children: [3, 4] }; // ALT
108
+ this.rules[7].opcodes[3] = { type: 7, string: [45] }; // TLS
109
+ this.rules[7].opcodes[4] = { type: 7, string: [43] }; // TLS
110
+ this.rules[7].opcodes[5] = { type: 3, min: 1, max: Infinity }; // REP
111
+ this.rules[7].opcodes[6] = { type: 4, index: 5 }; // RNM(DIGIT)
112
+ /* FLOAT */
113
+ this.rules[8].opcodes = [];
114
+ this.rules[8].opcodes[0] = { type: 2, children: [1, 5, 7, 8] }; // CAT
115
+ this.rules[8].opcodes[1] = { type: 3, min: 0, max: 1 }; // REP
116
+ this.rules[8].opcodes[2] = { type: 1, children: [3, 4] }; // ALT
117
+ this.rules[8].opcodes[3] = { type: 7, string: [45] }; // TLS
118
+ this.rules[8].opcodes[4] = { type: 7, string: [43] }; // TLS
119
+ this.rules[8].opcodes[5] = { type: 3, min: 1, max: Infinity }; // REP
120
+ this.rules[8].opcodes[6] = { type: 4, index: 5 }; // RNM(DIGIT)
121
+ this.rules[8].opcodes[7] = { type: 7, string: [46] }; // TLS
122
+ this.rules[8].opcodes[8] = { type: 3, min: 1, max: Infinity }; // REP
123
+ this.rules[8].opcodes[9] = { type: 4, index: 5 }; // RNM(DIGIT)
124
+ /* LITERAL */
125
+ this.rules[9].opcodes = [];
126
+ this.rules[9].opcodes[0] = { type: 1, children: [1, 2] }; // ALT
127
+ this.rules[9].opcodes[1] = { type: 4, index: 8 }; // RNM(FLOAT)
128
+ this.rules[9].opcodes[2] = { type: 4, index: 7 }; // RNM(INTEGER)
129
+ /* LABEL */
130
+ this.rules[10].opcodes = [];
131
+ this.rules[10].opcodes[0] = { type: 2, children: [1, 5] }; // CAT
132
+ this.rules[10].opcodes[1] = { type: 3, min: 1, max: Infinity }; // REP
133
+ this.rules[10].opcodes[2] = { type: 1, children: [3, 4] }; // ALT
134
+ this.rules[10].opcodes[3] = { type: 7, string: [95] }; // TLS
135
+ this.rules[10].opcodes[4] = { type: 4, index: 6 }; // RNM(ALPHA)
136
+ this.rules[10].opcodes[5] = { type: 3, min: 0, max: Infinity }; // REP
137
+ this.rules[10].opcodes[6] = { type: 1, children: [7, 8, 9] }; // ALT
138
+ this.rules[10].opcodes[7] = { type: 7, string: [95] }; // TLS
139
+ this.rules[10].opcodes[8] = { type: 4, index: 6 }; // RNM(ALPHA)
140
+ this.rules[10].opcodes[9] = { type: 4, index: 5 }; // RNM(DIGIT)
141
+ /* PATH */
142
+ this.rules[11].opcodes = [];
143
+ this.rules[11].opcodes[0] = { type: 3, min: 1, max: Infinity }; // REP
144
+ this.rules[11].opcodes[1] = { type: 1, children: [2, 3] }; // ALT
145
+ this.rules[11].opcodes[2] = { type: 4, index: 10 }; // RNM(LABEL)
146
+ this.rules[11].opcodes[3] = { type: 7, string: [46] }; // TLS
147
+ /* IMPORT */
148
+ this.rules[12].opcodes = [];
149
+ this.rules[12].opcodes[0] = { type: 1, children: [1, 14] }; // ALT
150
+ this.rules[12].opcodes[1] = { type: 2, children: [2, 3, 5, 6, 8] }; // CAT
151
+ this.rules[12].opcodes[2] = { type: 6, string: [105, 109, 112, 111, 114, 116] }; // TBS
152
+ this.rules[12].opcodes[3] = { type: 3, min: 1, max: Infinity }; // REP
153
+ this.rules[12].opcodes[4] = { type: 4, index: 0 }; // RNM(WSP)
154
+ this.rules[12].opcodes[5] = { type: 4, index: 11 }; // RNM(PATH)
155
+ this.rules[12].opcodes[6] = { type: 3, min: 1, max: Infinity }; // REP
156
+ this.rules[12].opcodes[7] = { type: 4, index: 0 }; // RNM(WSP)
157
+ this.rules[12].opcodes[8] = { type: 3, min: 0, max: 1 }; // REP
158
+ this.rules[12].opcodes[9] = { type: 2, children: [10, 11, 13] }; // CAT
159
+ this.rules[12].opcodes[10] = { type: 6, string: [97, 115] }; // TBS
160
+ this.rules[12].opcodes[11] = { type: 3, min: 1, max: Infinity }; // REP
161
+ this.rules[12].opcodes[12] = { type: 4, index: 0 }; // RNM(WSP)
162
+ this.rules[12].opcodes[13] = { type: 4, index: 10 }; // RNM(LABEL)
163
+ this.rules[12].opcodes[14] = { type: 2, children: [15, 16, 18, 19, 21, 22, 24] }; // CAT
164
+ this.rules[12].opcodes[15] = { type: 6, string: [102, 114, 111, 109] }; // TBS
165
+ this.rules[12].opcodes[16] = { type: 3, min: 1, max: Infinity }; // REP
166
+ this.rules[12].opcodes[17] = { type: 4, index: 0 }; // RNM(WSP)
167
+ this.rules[12].opcodes[18] = { type: 4, index: 11 }; // RNM(PATH)
168
+ this.rules[12].opcodes[19] = { type: 3, min: 1, max: Infinity }; // REP
169
+ this.rules[12].opcodes[20] = { type: 4, index: 0 }; // RNM(WSP)
170
+ this.rules[12].opcodes[21] = { type: 6, string: [105, 109, 112, 111, 114, 116] }; // TBS
171
+ this.rules[12].opcodes[22] = { type: 3, min: 1, max: Infinity }; // REP
172
+ this.rules[12].opcodes[23] = { type: 4, index: 0 }; // RNM(WSP)
173
+ this.rules[12].opcodes[24] = { type: 1, children: [25, 33, 61, 87] }; // ALT
174
+ this.rules[12].opcodes[25] = { type: 2, children: [26, 27] }; // CAT
175
+ this.rules[12].opcodes[26] = { type: 4, index: 11 }; // RNM(PATH)
176
+ this.rules[12].opcodes[27] = { type: 3, min: 0, max: 1 }; // REP
177
+ this.rules[12].opcodes[28] = { type: 2, children: [29, 30, 32] }; // CAT
178
+ this.rules[12].opcodes[29] = { type: 6, string: [97, 115] }; // TBS
179
+ this.rules[12].opcodes[30] = { type: 3, min: 1, max: Infinity }; // REP
180
+ this.rules[12].opcodes[31] = { type: 4, index: 0 }; // RNM(WSP)
181
+ this.rules[12].opcodes[32] = { type: 4, index: 10 }; // RNM(LABEL)
182
+ this.rules[12].opcodes[33] = { type: 2, children: [34, 35, 36, 37, 45, 58, 60] }; // CAT
183
+ this.rules[12].opcodes[34] = { type: 7, string: [40] }; // TLS
184
+ this.rules[12].opcodes[35] = { type: 4, index: 0 }; // RNM(WSP)
185
+ this.rules[12].opcodes[36] = { type: 4, index: 11 }; // RNM(PATH)
186
+ this.rules[12].opcodes[37] = { type: 3, min: 0, max: 1 }; // REP
187
+ this.rules[12].opcodes[38] = { type: 2, children: [39, 41, 42, 44] }; // CAT
188
+ this.rules[12].opcodes[39] = { type: 3, min: 1, max: Infinity }; // REP
189
+ this.rules[12].opcodes[40] = { type: 4, index: 0 }; // RNM(WSP)
190
+ this.rules[12].opcodes[41] = { type: 6, string: [97, 115] }; // TBS
191
+ this.rules[12].opcodes[42] = { type: 3, min: 1, max: Infinity }; // REP
192
+ this.rules[12].opcodes[43] = { type: 4, index: 0 }; // RNM(WSP)
193
+ this.rules[12].opcodes[44] = { type: 4, index: 10 }; // RNM(LABEL)
194
+ this.rules[12].opcodes[45] = { type: 3, min: 0, max: Infinity }; // REP
195
+ this.rules[12].opcodes[46] = { type: 2, children: [47, 49, 50, 52, 53] }; // CAT
196
+ this.rules[12].opcodes[47] = { type: 3, min: 0, max: Infinity }; // REP
197
+ this.rules[12].opcodes[48] = { type: 4, index: 0 }; // RNM(WSP)
198
+ this.rules[12].opcodes[49] = { type: 7, string: [44] }; // TLS
199
+ this.rules[12].opcodes[50] = { type: 3, min: 0, max: Infinity }; // REP
200
+ this.rules[12].opcodes[51] = { type: 4, index: 0 }; // RNM(WSP)
201
+ this.rules[12].opcodes[52] = { type: 4, index: 11 }; // RNM(PATH)
202
+ this.rules[12].opcodes[53] = { type: 3, min: 0, max: 1 }; // REP
203
+ this.rules[12].opcodes[54] = { type: 2, children: [55, 56, 57] }; // CAT
204
+ this.rules[12].opcodes[55] = { type: 6, string: [97, 115] }; // TBS
205
+ this.rules[12].opcodes[56] = { type: 4, index: 0 }; // RNM(WSP)
206
+ this.rules[12].opcodes[57] = { type: 4, index: 10 }; // RNM(LABEL)
207
+ this.rules[12].opcodes[58] = { type: 3, min: 0, max: Infinity }; // REP
208
+ this.rules[12].opcodes[59] = { type: 4, index: 0 }; // RNM(WSP)
209
+ this.rules[12].opcodes[60] = { type: 7, string: [41] }; // TLS
210
+ this.rules[12].opcodes[61] = { type: 2, children: [62, 63, 71] }; // CAT
211
+ this.rules[12].opcodes[62] = { type: 4, index: 11 }; // RNM(PATH)
212
+ this.rules[12].opcodes[63] = { type: 3, min: 0, max: 1 }; // REP
213
+ this.rules[12].opcodes[64] = { type: 2, children: [65, 67, 68, 70] }; // CAT
214
+ this.rules[12].opcodes[65] = { type: 3, min: 1, max: Infinity }; // REP
215
+ this.rules[12].opcodes[66] = { type: 4, index: 0 }; // RNM(WSP)
216
+ this.rules[12].opcodes[67] = { type: 6, string: [97, 115] }; // TBS
217
+ this.rules[12].opcodes[68] = { type: 3, min: 1, max: Infinity }; // REP
218
+ this.rules[12].opcodes[69] = { type: 4, index: 0 }; // RNM(WSP)
219
+ this.rules[12].opcodes[70] = { type: 4, index: 10 }; // RNM(LABEL)
220
+ this.rules[12].opcodes[71] = { type: 3, min: 0, max: Infinity }; // REP
221
+ this.rules[12].opcodes[72] = { type: 2, children: [73, 75, 76, 78, 79] }; // CAT
222
+ this.rules[12].opcodes[73] = { type: 3, min: 0, max: Infinity }; // REP
223
+ this.rules[12].opcodes[74] = { type: 4, index: 0 }; // RNM(WSP)
224
+ this.rules[12].opcodes[75] = { type: 7, string: [44] }; // TLS
225
+ this.rules[12].opcodes[76] = { type: 3, min: 0, max: Infinity }; // REP
226
+ this.rules[12].opcodes[77] = { type: 4, index: 0 }; // RNM(WSP)
227
+ this.rules[12].opcodes[78] = { type: 4, index: 11 }; // RNM(PATH)
228
+ this.rules[12].opcodes[79] = { type: 3, min: 0, max: 1 }; // REP
229
+ this.rules[12].opcodes[80] = { type: 2, children: [81, 83, 84, 86] }; // CAT
230
+ this.rules[12].opcodes[81] = { type: 3, min: 1, max: Infinity }; // REP
231
+ this.rules[12].opcodes[82] = { type: 4, index: 0 }; // RNM(WSP)
232
+ this.rules[12].opcodes[83] = { type: 6, string: [97, 115] }; // TBS
233
+ this.rules[12].opcodes[84] = { type: 3, min: 1, max: Infinity }; // REP
234
+ this.rules[12].opcodes[85] = { type: 4, index: 0 }; // RNM(WSP)
235
+ this.rules[12].opcodes[86] = { type: 4, index: 10 }; // RNM(LABEL)
236
+ this.rules[12].opcodes[87] = { type: 7, string: [42] }; // TLS
237
+ /* EXTENSION */
238
+ this.rules[13].opcodes = [];
239
+ this.rules[13].opcodes[0] = { type: 2, children: [1, 2, 4, 5, 7] }; // CAT
240
+ this.rules[13].opcodes[1] = { type: 6, string: [101, 120, 116, 101, 110, 115, 105, 111, 110] }; // TBS
241
+ this.rules[13].opcodes[2] = { type: 3, min: 1, max: Infinity }; // REP
242
+ this.rules[13].opcodes[3] = { type: 4, index: 0 }; // RNM(WSP)
243
+ this.rules[13].opcodes[4] = { type: 4, index: 10 }; // RNM(LABEL)
244
+ this.rules[13].opcodes[5] = { type: 3, min: 1, max: Infinity }; // REP
245
+ this.rules[13].opcodes[6] = { type: 4, index: 0 }; // RNM(WSP)
246
+ this.rules[13].opcodes[7] = { type: 1, children: [8, 9] }; // ALT
247
+ this.rules[13].opcodes[8] = { type: 6, string: [111, 112, 116, 105, 111, 110, 97, 108] }; // TBS
248
+ this.rules[13].opcodes[9] = { type: 6, string: [114, 101, 113, 117, 105, 114, 101, 100] }; // TBS
249
+ /* BASE-TYPE */
250
+ this.rules[14].opcodes = [];
251
+ this.rules[14].opcodes[0] = { type: 1, children: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 25, 38, 51, 64, 77, 90, 103, 116, 129, 142, 155, 168, 181, 194, 207, 220, 233, 246, 259, 272, 285, 298] }; // ALT
252
+ this.rules[14].opcodes[1] = { type: 6, string: [102, 112, 49, 48] }; // TBS
253
+ this.rules[14].opcodes[2] = { type: 6, string: [102, 49, 54] }; // TBS
254
+ this.rules[14].opcodes[3] = { type: 6, string: [102, 51, 50] }; // TBS
255
+ this.rules[14].opcodes[4] = { type: 6, string: [105, 56] }; // TBS
256
+ this.rules[14].opcodes[5] = { type: 6, string: [105, 49, 54] }; // TBS
257
+ this.rules[14].opcodes[6] = { type: 6, string: [105, 51, 50] }; // TBS
258
+ this.rules[14].opcodes[7] = { type: 6, string: [117, 56] }; // TBS
259
+ this.rules[14].opcodes[8] = { type: 6, string: [117, 49, 54] }; // TBS
260
+ this.rules[14].opcodes[9] = { type: 6, string: [117, 51, 50] }; // TBS
261
+ this.rules[14].opcodes[10] = { type: 6, string: [110, 111, 110, 101] }; // TBS
262
+ this.rules[14].opcodes[11] = { type: 6, string: [98, 111, 111, 108] }; // TBS
263
+ this.rules[14].opcodes[12] = { type: 2, children: [13, 14] }; // CAT
264
+ this.rules[14].opcodes[13] = { type: 6, string: [118, 101, 99, 50] }; // TBS
265
+ this.rules[14].opcodes[14] = { type: 3, min: 0, max: 1 }; // REP
266
+ this.rules[14].opcodes[15] = { type: 2, children: [16, 18, 19, 21, 22, 24] }; // CAT
267
+ this.rules[14].opcodes[16] = { type: 3, min: 0, max: Infinity }; // REP
268
+ this.rules[14].opcodes[17] = { type: 4, index: 0 }; // RNM(WSP)
269
+ this.rules[14].opcodes[18] = { type: 7, string: [123] }; // TLS
270
+ this.rules[14].opcodes[19] = { type: 3, min: 0, max: Infinity }; // REP
271
+ this.rules[14].opcodes[20] = { type: 4, index: 0 }; // RNM(WSP)
272
+ this.rules[14].opcodes[21] = { type: 4, index: 15 }; // RNM(PRECISION)
273
+ this.rules[14].opcodes[22] = { type: 3, min: 0, max: Infinity }; // REP
274
+ this.rules[14].opcodes[23] = { type: 4, index: 0 }; // RNM(WSP)
275
+ this.rules[14].opcodes[24] = { type: 7, string: [125] }; // TLS
276
+ this.rules[14].opcodes[25] = { type: 2, children: [26, 27] }; // CAT
277
+ this.rules[14].opcodes[26] = { type: 6, string: [118, 101, 99, 51] }; // TBS
278
+ this.rules[14].opcodes[27] = { type: 3, min: 0, max: 1 }; // REP
279
+ this.rules[14].opcodes[28] = { type: 2, children: [29, 31, 32, 34, 35, 37] }; // CAT
280
+ this.rules[14].opcodes[29] = { type: 3, min: 0, max: Infinity }; // REP
281
+ this.rules[14].opcodes[30] = { type: 4, index: 0 }; // RNM(WSP)
282
+ this.rules[14].opcodes[31] = { type: 7, string: [123] }; // TLS
283
+ this.rules[14].opcodes[32] = { type: 3, min: 0, max: Infinity }; // REP
284
+ this.rules[14].opcodes[33] = { type: 4, index: 0 }; // RNM(WSP)
285
+ this.rules[14].opcodes[34] = { type: 4, index: 15 }; // RNM(PRECISION)
286
+ this.rules[14].opcodes[35] = { type: 3, min: 0, max: Infinity }; // REP
287
+ this.rules[14].opcodes[36] = { type: 4, index: 0 }; // RNM(WSP)
288
+ this.rules[14].opcodes[37] = { type: 7, string: [125] }; // TLS
289
+ this.rules[14].opcodes[38] = { type: 2, children: [39, 40] }; // CAT
290
+ this.rules[14].opcodes[39] = { type: 6, string: [118, 101, 99, 52] }; // TBS
291
+ this.rules[14].opcodes[40] = { type: 3, min: 0, max: 1 }; // REP
292
+ this.rules[14].opcodes[41] = { type: 2, children: [42, 44, 45, 47, 48, 50] }; // CAT
293
+ this.rules[14].opcodes[42] = { type: 3, min: 0, max: Infinity }; // REP
294
+ this.rules[14].opcodes[43] = { type: 4, index: 0 }; // RNM(WSP)
295
+ this.rules[14].opcodes[44] = { type: 7, string: [123] }; // TLS
296
+ this.rules[14].opcodes[45] = { type: 3, min: 0, max: Infinity }; // REP
297
+ this.rules[14].opcodes[46] = { type: 4, index: 0 }; // RNM(WSP)
298
+ this.rules[14].opcodes[47] = { type: 4, index: 15 }; // RNM(PRECISION)
299
+ this.rules[14].opcodes[48] = { type: 3, min: 0, max: Infinity }; // REP
300
+ this.rules[14].opcodes[49] = { type: 4, index: 0 }; // RNM(WSP)
301
+ this.rules[14].opcodes[50] = { type: 7, string: [125] }; // TLS
302
+ this.rules[14].opcodes[51] = { type: 2, children: [52, 53] }; // CAT
303
+ this.rules[14].opcodes[52] = { type: 6, string: [109, 97, 116, 50] }; // TBS
304
+ this.rules[14].opcodes[53] = { type: 3, min: 0, max: 1 }; // REP
305
+ this.rules[14].opcodes[54] = { type: 2, children: [55, 57, 58, 60, 61, 63] }; // CAT
306
+ this.rules[14].opcodes[55] = { type: 3, min: 0, max: Infinity }; // REP
307
+ this.rules[14].opcodes[56] = { type: 4, index: 0 }; // RNM(WSP)
308
+ this.rules[14].opcodes[57] = { type: 7, string: [123] }; // TLS
309
+ this.rules[14].opcodes[58] = { type: 3, min: 0, max: Infinity }; // REP
310
+ this.rules[14].opcodes[59] = { type: 4, index: 0 }; // RNM(WSP)
311
+ this.rules[14].opcodes[60] = { type: 4, index: 15 }; // RNM(PRECISION)
312
+ this.rules[14].opcodes[61] = { type: 3, min: 0, max: Infinity }; // REP
313
+ this.rules[14].opcodes[62] = { type: 4, index: 0 }; // RNM(WSP)
314
+ this.rules[14].opcodes[63] = { type: 7, string: [125] }; // TLS
315
+ this.rules[14].opcodes[64] = { type: 2, children: [65, 66] }; // CAT
316
+ this.rules[14].opcodes[65] = { type: 6, string: [109, 97, 116, 51] }; // TBS
317
+ this.rules[14].opcodes[66] = { type: 3, min: 0, max: 1 }; // REP
318
+ this.rules[14].opcodes[67] = { type: 2, children: [68, 70, 71, 73, 74, 76] }; // CAT
319
+ this.rules[14].opcodes[68] = { type: 3, min: 0, max: Infinity }; // REP
320
+ this.rules[14].opcodes[69] = { type: 4, index: 0 }; // RNM(WSP)
321
+ this.rules[14].opcodes[70] = { type: 7, string: [123] }; // TLS
322
+ this.rules[14].opcodes[71] = { type: 3, min: 0, max: Infinity }; // REP
323
+ this.rules[14].opcodes[72] = { type: 4, index: 0 }; // RNM(WSP)
324
+ this.rules[14].opcodes[73] = { type: 4, index: 15 }; // RNM(PRECISION)
325
+ this.rules[14].opcodes[74] = { type: 3, min: 0, max: Infinity }; // REP
326
+ this.rules[14].opcodes[75] = { type: 4, index: 0 }; // RNM(WSP)
327
+ this.rules[14].opcodes[76] = { type: 7, string: [125] }; // TLS
328
+ this.rules[14].opcodes[77] = { type: 2, children: [78, 79] }; // CAT
329
+ this.rules[14].opcodes[78] = { type: 6, string: [109, 97, 116, 52] }; // TBS
330
+ this.rules[14].opcodes[79] = { type: 3, min: 0, max: 1 }; // REP
331
+ this.rules[14].opcodes[80] = { type: 2, children: [81, 83, 84, 86, 87, 89] }; // CAT
332
+ this.rules[14].opcodes[81] = { type: 3, min: 0, max: Infinity }; // REP
333
+ this.rules[14].opcodes[82] = { type: 4, index: 0 }; // RNM(WSP)
334
+ this.rules[14].opcodes[83] = { type: 7, string: [123] }; // TLS
335
+ this.rules[14].opcodes[84] = { type: 3, min: 0, max: Infinity }; // REP
336
+ this.rules[14].opcodes[85] = { type: 4, index: 0 }; // RNM(WSP)
337
+ this.rules[14].opcodes[86] = { type: 4, index: 15 }; // RNM(PRECISION)
338
+ this.rules[14].opcodes[87] = { type: 3, min: 0, max: Infinity }; // REP
339
+ this.rules[14].opcodes[88] = { type: 4, index: 0 }; // RNM(WSP)
340
+ this.rules[14].opcodes[89] = { type: 7, string: [125] }; // TLS
341
+ this.rules[14].opcodes[90] = { type: 2, children: [91, 92] }; // CAT
342
+ this.rules[14].opcodes[91] = { type: 6, string: [109, 97, 116, 50, 120, 51] }; // TBS
343
+ this.rules[14].opcodes[92] = { type: 3, min: 0, max: 1 }; // REP
344
+ this.rules[14].opcodes[93] = { type: 2, children: [94, 96, 97, 99, 100, 102] }; // CAT
345
+ this.rules[14].opcodes[94] = { type: 3, min: 0, max: Infinity }; // REP
346
+ this.rules[14].opcodes[95] = { type: 4, index: 0 }; // RNM(WSP)
347
+ this.rules[14].opcodes[96] = { type: 7, string: [123] }; // TLS
348
+ this.rules[14].opcodes[97] = { type: 3, min: 0, max: Infinity }; // REP
349
+ this.rules[14].opcodes[98] = { type: 4, index: 0 }; // RNM(WSP)
350
+ this.rules[14].opcodes[99] = { type: 4, index: 15 }; // RNM(PRECISION)
351
+ this.rules[14].opcodes[100] = { type: 3, min: 0, max: Infinity }; // REP
352
+ this.rules[14].opcodes[101] = { type: 4, index: 0 }; // RNM(WSP)
353
+ this.rules[14].opcodes[102] = { type: 7, string: [125] }; // TLS
354
+ this.rules[14].opcodes[103] = { type: 2, children: [104, 105] }; // CAT
355
+ this.rules[14].opcodes[104] = { type: 6, string: [109, 97, 116, 51, 120, 50] }; // TBS
356
+ this.rules[14].opcodes[105] = { type: 3, min: 0, max: 1 }; // REP
357
+ this.rules[14].opcodes[106] = { type: 2, children: [107, 109, 110, 112, 113, 115] }; // CAT
358
+ this.rules[14].opcodes[107] = { type: 3, min: 0, max: Infinity }; // REP
359
+ this.rules[14].opcodes[108] = { type: 4, index: 0 }; // RNM(WSP)
360
+ this.rules[14].opcodes[109] = { type: 7, string: [123] }; // TLS
361
+ this.rules[14].opcodes[110] = { type: 3, min: 0, max: Infinity }; // REP
362
+ this.rules[14].opcodes[111] = { type: 4, index: 0 }; // RNM(WSP)
363
+ this.rules[14].opcodes[112] = { type: 4, index: 15 }; // RNM(PRECISION)
364
+ this.rules[14].opcodes[113] = { type: 3, min: 0, max: Infinity }; // REP
365
+ this.rules[14].opcodes[114] = { type: 4, index: 0 }; // RNM(WSP)
366
+ this.rules[14].opcodes[115] = { type: 7, string: [125] }; // TLS
367
+ this.rules[14].opcodes[116] = { type: 2, children: [117, 118] }; // CAT
368
+ this.rules[14].opcodes[117] = { type: 6, string: [109, 97, 116, 52, 120, 50] }; // TBS
369
+ this.rules[14].opcodes[118] = { type: 3, min: 0, max: 1 }; // REP
370
+ this.rules[14].opcodes[119] = { type: 2, children: [120, 122, 123, 125, 126, 128] }; // CAT
371
+ this.rules[14].opcodes[120] = { type: 3, min: 0, max: Infinity }; // REP
372
+ this.rules[14].opcodes[121] = { type: 4, index: 0 }; // RNM(WSP)
373
+ this.rules[14].opcodes[122] = { type: 7, string: [123] }; // TLS
374
+ this.rules[14].opcodes[123] = { type: 3, min: 0, max: Infinity }; // REP
375
+ this.rules[14].opcodes[124] = { type: 4, index: 0 }; // RNM(WSP)
376
+ this.rules[14].opcodes[125] = { type: 4, index: 15 }; // RNM(PRECISION)
377
+ this.rules[14].opcodes[126] = { type: 3, min: 0, max: Infinity }; // REP
378
+ this.rules[14].opcodes[127] = { type: 4, index: 0 }; // RNM(WSP)
379
+ this.rules[14].opcodes[128] = { type: 7, string: [125] }; // TLS
380
+ this.rules[14].opcodes[129] = { type: 2, children: [130, 131] }; // CAT
381
+ this.rules[14].opcodes[130] = { type: 6, string: [109, 97, 116, 50, 120, 52] }; // TBS
382
+ this.rules[14].opcodes[131] = { type: 3, min: 0, max: 1 }; // REP
383
+ this.rules[14].opcodes[132] = { type: 2, children: [133, 135, 136, 138, 139, 141] }; // CAT
384
+ this.rules[14].opcodes[133] = { type: 3, min: 0, max: Infinity }; // REP
385
+ this.rules[14].opcodes[134] = { type: 4, index: 0 }; // RNM(WSP)
386
+ this.rules[14].opcodes[135] = { type: 7, string: [123] }; // TLS
387
+ this.rules[14].opcodes[136] = { type: 3, min: 0, max: Infinity }; // REP
388
+ this.rules[14].opcodes[137] = { type: 4, index: 0 }; // RNM(WSP)
389
+ this.rules[14].opcodes[138] = { type: 4, index: 15 }; // RNM(PRECISION)
390
+ this.rules[14].opcodes[139] = { type: 3, min: 0, max: Infinity }; // REP
391
+ this.rules[14].opcodes[140] = { type: 4, index: 0 }; // RNM(WSP)
392
+ this.rules[14].opcodes[141] = { type: 7, string: [125] }; // TLS
393
+ this.rules[14].opcodes[142] = { type: 2, children: [143, 144] }; // CAT
394
+ this.rules[14].opcodes[143] = { type: 6, string: [109, 97, 116, 51, 120, 52] }; // TBS
395
+ this.rules[14].opcodes[144] = { type: 3, min: 0, max: 1 }; // REP
396
+ this.rules[14].opcodes[145] = { type: 2, children: [146, 148, 149, 151, 152, 154] }; // CAT
397
+ this.rules[14].opcodes[146] = { type: 3, min: 0, max: Infinity }; // REP
398
+ this.rules[14].opcodes[147] = { type: 4, index: 0 }; // RNM(WSP)
399
+ this.rules[14].opcodes[148] = { type: 7, string: [123] }; // TLS
400
+ this.rules[14].opcodes[149] = { type: 3, min: 0, max: Infinity }; // REP
401
+ this.rules[14].opcodes[150] = { type: 4, index: 0 }; // RNM(WSP)
402
+ this.rules[14].opcodes[151] = { type: 4, index: 15 }; // RNM(PRECISION)
403
+ this.rules[14].opcodes[152] = { type: 3, min: 0, max: Infinity }; // REP
404
+ this.rules[14].opcodes[153] = { type: 4, index: 0 }; // RNM(WSP)
405
+ this.rules[14].opcodes[154] = { type: 7, string: [125] }; // TLS
406
+ this.rules[14].opcodes[155] = { type: 2, children: [156, 157] }; // CAT
407
+ this.rules[14].opcodes[156] = { type: 6, string: [109, 97, 116, 52, 120, 51] }; // TBS
408
+ this.rules[14].opcodes[157] = { type: 3, min: 0, max: 1 }; // REP
409
+ this.rules[14].opcodes[158] = { type: 2, children: [159, 161, 162, 164, 165, 167] }; // CAT
410
+ this.rules[14].opcodes[159] = { type: 3, min: 0, max: Infinity }; // REP
411
+ this.rules[14].opcodes[160] = { type: 4, index: 0 }; // RNM(WSP)
412
+ this.rules[14].opcodes[161] = { type: 7, string: [123] }; // TLS
413
+ this.rules[14].opcodes[162] = { type: 3, min: 0, max: Infinity }; // REP
414
+ this.rules[14].opcodes[163] = { type: 4, index: 0 }; // RNM(WSP)
415
+ this.rules[14].opcodes[164] = { type: 4, index: 15 }; // RNM(PRECISION)
416
+ this.rules[14].opcodes[165] = { type: 3, min: 0, max: Infinity }; // REP
417
+ this.rules[14].opcodes[166] = { type: 4, index: 0 }; // RNM(WSP)
418
+ this.rules[14].opcodes[167] = { type: 7, string: [125] }; // TLS
419
+ this.rules[14].opcodes[168] = { type: 2, children: [169, 170] }; // CAT
420
+ this.rules[14].opcodes[169] = { type: 6, string: [105] }; // TBS
421
+ this.rules[14].opcodes[170] = { type: 3, min: 0, max: 1 }; // REP
422
+ this.rules[14].opcodes[171] = { type: 2, children: [172, 174, 175, 177, 178, 180] }; // CAT
423
+ this.rules[14].opcodes[172] = { type: 3, min: 0, max: Infinity }; // REP
424
+ this.rules[14].opcodes[173] = { type: 4, index: 0 }; // RNM(WSP)
425
+ this.rules[14].opcodes[174] = { type: 7, string: [123] }; // TLS
426
+ this.rules[14].opcodes[175] = { type: 3, min: 0, max: Infinity }; // REP
427
+ this.rules[14].opcodes[176] = { type: 4, index: 0 }; // RNM(WSP)
428
+ this.rules[14].opcodes[177] = { type: 4, index: 15 }; // RNM(PRECISION)
429
+ this.rules[14].opcodes[178] = { type: 3, min: 0, max: Infinity }; // REP
430
+ this.rules[14].opcodes[179] = { type: 4, index: 0 }; // RNM(WSP)
431
+ this.rules[14].opcodes[180] = { type: 7, string: [125] }; // TLS
432
+ this.rules[14].opcodes[181] = { type: 2, children: [182, 183] }; // CAT
433
+ this.rules[14].opcodes[182] = { type: 6, string: [117] }; // TBS
434
+ this.rules[14].opcodes[183] = { type: 3, min: 0, max: 1 }; // REP
435
+ this.rules[14].opcodes[184] = { type: 2, children: [185, 187, 188, 190, 191, 193] }; // CAT
436
+ this.rules[14].opcodes[185] = { type: 3, min: 0, max: Infinity }; // REP
437
+ this.rules[14].opcodes[186] = { type: 4, index: 0 }; // RNM(WSP)
438
+ this.rules[14].opcodes[187] = { type: 7, string: [123] }; // TLS
439
+ this.rules[14].opcodes[188] = { type: 3, min: 0, max: Infinity }; // REP
440
+ this.rules[14].opcodes[189] = { type: 4, index: 0 }; // RNM(WSP)
441
+ this.rules[14].opcodes[190] = { type: 4, index: 15 }; // RNM(PRECISION)
442
+ this.rules[14].opcodes[191] = { type: 3, min: 0, max: Infinity }; // REP
443
+ this.rules[14].opcodes[192] = { type: 4, index: 0 }; // RNM(WSP)
444
+ this.rules[14].opcodes[193] = { type: 7, string: [125] }; // TLS
445
+ this.rules[14].opcodes[194] = { type: 2, children: [195, 196] }; // CAT
446
+ this.rules[14].opcodes[195] = { type: 6, string: [102] }; // TBS
447
+ this.rules[14].opcodes[196] = { type: 3, min: 0, max: 1 }; // REP
448
+ this.rules[14].opcodes[197] = { type: 2, children: [198, 200, 201, 203, 204, 206] }; // CAT
449
+ this.rules[14].opcodes[198] = { type: 3, min: 0, max: Infinity }; // REP
450
+ this.rules[14].opcodes[199] = { type: 4, index: 0 }; // RNM(WSP)
451
+ this.rules[14].opcodes[200] = { type: 7, string: [123] }; // TLS
452
+ this.rules[14].opcodes[201] = { type: 3, min: 0, max: Infinity }; // REP
453
+ this.rules[14].opcodes[202] = { type: 4, index: 0 }; // RNM(WSP)
454
+ this.rules[14].opcodes[203] = { type: 4, index: 15 }; // RNM(PRECISION)
455
+ this.rules[14].opcodes[204] = { type: 3, min: 0, max: Infinity }; // REP
456
+ this.rules[14].opcodes[205] = { type: 4, index: 0 }; // RNM(WSP)
457
+ this.rules[14].opcodes[206] = { type: 7, string: [125] }; // TLS
458
+ this.rules[14].opcodes[207] = { type: 2, children: [208, 209] }; // CAT
459
+ this.rules[14].opcodes[208] = { type: 6, string: [116, 101, 120, 95, 49, 100] }; // TBS
460
+ this.rules[14].opcodes[209] = { type: 3, min: 0, max: 1 }; // REP
461
+ this.rules[14].opcodes[210] = { type: 2, children: [211, 213, 214, 216, 217, 219] }; // CAT
462
+ this.rules[14].opcodes[211] = { type: 3, min: 0, max: Infinity }; // REP
463
+ this.rules[14].opcodes[212] = { type: 4, index: 0 }; // RNM(WSP)
464
+ this.rules[14].opcodes[213] = { type: 7, string: [123] }; // TLS
465
+ this.rules[14].opcodes[214] = { type: 3, min: 0, max: Infinity }; // REP
466
+ this.rules[14].opcodes[215] = { type: 4, index: 0 }; // RNM(WSP)
467
+ this.rules[14].opcodes[216] = { type: 4, index: 15 }; // RNM(PRECISION)
468
+ this.rules[14].opcodes[217] = { type: 3, min: 0, max: Infinity }; // REP
469
+ this.rules[14].opcodes[218] = { type: 4, index: 0 }; // RNM(WSP)
470
+ this.rules[14].opcodes[219] = { type: 7, string: [125] }; // TLS
471
+ this.rules[14].opcodes[220] = { type: 2, children: [221, 222] }; // CAT
472
+ this.rules[14].opcodes[221] = { type: 6, string: [116, 101, 120, 95, 50, 100] }; // TBS
473
+ this.rules[14].opcodes[222] = { type: 3, min: 0, max: 1 }; // REP
474
+ this.rules[14].opcodes[223] = { type: 2, children: [224, 226, 227, 229, 230, 232] }; // CAT
475
+ this.rules[14].opcodes[224] = { type: 3, min: 0, max: Infinity }; // REP
476
+ this.rules[14].opcodes[225] = { type: 4, index: 0 }; // RNM(WSP)
477
+ this.rules[14].opcodes[226] = { type: 7, string: [123] }; // TLS
478
+ this.rules[14].opcodes[227] = { type: 3, min: 0, max: Infinity }; // REP
479
+ this.rules[14].opcodes[228] = { type: 4, index: 0 }; // RNM(WSP)
480
+ this.rules[14].opcodes[229] = { type: 4, index: 15 }; // RNM(PRECISION)
481
+ this.rules[14].opcodes[230] = { type: 3, min: 0, max: Infinity }; // REP
482
+ this.rules[14].opcodes[231] = { type: 4, index: 0 }; // RNM(WSP)
483
+ this.rules[14].opcodes[232] = { type: 7, string: [125] }; // TLS
484
+ this.rules[14].opcodes[233] = { type: 2, children: [234, 235] }; // CAT
485
+ this.rules[14].opcodes[234] = { type: 6, string: [116, 101, 120, 95, 50, 100, 95, 97, 114, 114, 97, 121] }; // TBS
486
+ this.rules[14].opcodes[235] = { type: 3, min: 0, max: 1 }; // REP
487
+ this.rules[14].opcodes[236] = { type: 2, children: [237, 239, 240, 242, 243, 245] }; // CAT
488
+ this.rules[14].opcodes[237] = { type: 3, min: 0, max: Infinity }; // REP
489
+ this.rules[14].opcodes[238] = { type: 4, index: 0 }; // RNM(WSP)
490
+ this.rules[14].opcodes[239] = { type: 7, string: [123] }; // TLS
491
+ this.rules[14].opcodes[240] = { type: 3, min: 0, max: Infinity }; // REP
492
+ this.rules[14].opcodes[241] = { type: 4, index: 0 }; // RNM(WSP)
493
+ this.rules[14].opcodes[242] = { type: 4, index: 15 }; // RNM(PRECISION)
494
+ this.rules[14].opcodes[243] = { type: 3, min: 0, max: Infinity }; // REP
495
+ this.rules[14].opcodes[244] = { type: 4, index: 0 }; // RNM(WSP)
496
+ this.rules[14].opcodes[245] = { type: 7, string: [125] }; // TLS
497
+ this.rules[14].opcodes[246] = { type: 2, children: [247, 248] }; // CAT
498
+ this.rules[14].opcodes[247] = { type: 6, string: [116, 101, 120, 95, 51, 100] }; // TBS
499
+ this.rules[14].opcodes[248] = { type: 3, min: 0, max: 1 }; // REP
500
+ this.rules[14].opcodes[249] = { type: 2, children: [250, 252, 253, 255, 256, 258] }; // CAT
501
+ this.rules[14].opcodes[250] = { type: 3, min: 0, max: Infinity }; // REP
502
+ this.rules[14].opcodes[251] = { type: 4, index: 0 }; // RNM(WSP)
503
+ this.rules[14].opcodes[252] = { type: 7, string: [123] }; // TLS
504
+ this.rules[14].opcodes[253] = { type: 3, min: 0, max: Infinity }; // REP
505
+ this.rules[14].opcodes[254] = { type: 4, index: 0 }; // RNM(WSP)
506
+ this.rules[14].opcodes[255] = { type: 4, index: 15 }; // RNM(PRECISION)
507
+ this.rules[14].opcodes[256] = { type: 3, min: 0, max: Infinity }; // REP
508
+ this.rules[14].opcodes[257] = { type: 4, index: 0 }; // RNM(WSP)
509
+ this.rules[14].opcodes[258] = { type: 7, string: [125] }; // TLS
510
+ this.rules[14].opcodes[259] = { type: 2, children: [260, 261] }; // CAT
511
+ this.rules[14].opcodes[260] = { type: 6, string: [116, 101, 120, 95, 99, 117, 98, 101] }; // TBS
512
+ this.rules[14].opcodes[261] = { type: 3, min: 0, max: 1 }; // REP
513
+ this.rules[14].opcodes[262] = { type: 2, children: [263, 265, 266, 268, 269, 271] }; // CAT
514
+ this.rules[14].opcodes[263] = { type: 3, min: 0, max: Infinity }; // REP
515
+ this.rules[14].opcodes[264] = { type: 4, index: 0 }; // RNM(WSP)
516
+ this.rules[14].opcodes[265] = { type: 7, string: [123] }; // TLS
517
+ this.rules[14].opcodes[266] = { type: 3, min: 0, max: Infinity }; // REP
518
+ this.rules[14].opcodes[267] = { type: 4, index: 0 }; // RNM(WSP)
519
+ this.rules[14].opcodes[268] = { type: 4, index: 15 }; // RNM(PRECISION)
520
+ this.rules[14].opcodes[269] = { type: 3, min: 0, max: Infinity }; // REP
521
+ this.rules[14].opcodes[270] = { type: 4, index: 0 }; // RNM(WSP)
522
+ this.rules[14].opcodes[271] = { type: 7, string: [125] }; // TLS
523
+ this.rules[14].opcodes[272] = { type: 2, children: [273, 274] }; // CAT
524
+ this.rules[14].opcodes[273] = { type: 6, string: [116, 101, 120, 95, 50, 100, 95, 115, 104, 97, 100, 111, 119] }; // TBS
525
+ this.rules[14].opcodes[274] = { type: 3, min: 0, max: 1 }; // REP
526
+ this.rules[14].opcodes[275] = { type: 2, children: [276, 278, 279, 281, 282, 284] }; // CAT
527
+ this.rules[14].opcodes[276] = { type: 3, min: 0, max: Infinity }; // REP
528
+ this.rules[14].opcodes[277] = { type: 4, index: 0 }; // RNM(WSP)
529
+ this.rules[14].opcodes[278] = { type: 7, string: [123] }; // TLS
530
+ this.rules[14].opcodes[279] = { type: 3, min: 0, max: Infinity }; // REP
531
+ this.rules[14].opcodes[280] = { type: 4, index: 0 }; // RNM(WSP)
532
+ this.rules[14].opcodes[281] = { type: 4, index: 15 }; // RNM(PRECISION)
533
+ this.rules[14].opcodes[282] = { type: 3, min: 0, max: Infinity }; // REP
534
+ this.rules[14].opcodes[283] = { type: 4, index: 0 }; // RNM(WSP)
535
+ this.rules[14].opcodes[284] = { type: 7, string: [125] }; // TLS
536
+ this.rules[14].opcodes[285] = { type: 2, children: [286, 287] }; // CAT
537
+ this.rules[14].opcodes[286] = { type: 6, string: [116, 101, 120, 95, 50, 100, 95, 115, 104, 97, 100, 111, 119, 95, 97, 114, 114, 97, 121] }; // TBS
538
+ this.rules[14].opcodes[287] = { type: 3, min: 0, max: 1 }; // REP
539
+ this.rules[14].opcodes[288] = { type: 2, children: [289, 291, 292, 294, 295, 297] }; // CAT
540
+ this.rules[14].opcodes[289] = { type: 3, min: 0, max: Infinity }; // REP
541
+ this.rules[14].opcodes[290] = { type: 4, index: 0 }; // RNM(WSP)
542
+ this.rules[14].opcodes[291] = { type: 7, string: [123] }; // TLS
543
+ this.rules[14].opcodes[292] = { type: 3, min: 0, max: Infinity }; // REP
544
+ this.rules[14].opcodes[293] = { type: 4, index: 0 }; // RNM(WSP)
545
+ this.rules[14].opcodes[294] = { type: 4, index: 15 }; // RNM(PRECISION)
546
+ this.rules[14].opcodes[295] = { type: 3, min: 0, max: Infinity }; // REP
547
+ this.rules[14].opcodes[296] = { type: 4, index: 0 }; // RNM(WSP)
548
+ this.rules[14].opcodes[297] = { type: 7, string: [125] }; // TLS
549
+ this.rules[14].opcodes[298] = { type: 2, children: [299, 300] }; // CAT
550
+ this.rules[14].opcodes[299] = { type: 6, string: [116, 101, 120, 95, 99, 117, 98, 101, 95, 115, 104, 97, 100, 111, 119] }; // TBS
551
+ this.rules[14].opcodes[300] = { type: 3, min: 0, max: 1 }; // REP
552
+ this.rules[14].opcodes[301] = { type: 2, children: [302, 304, 305, 307, 308, 310] }; // CAT
553
+ this.rules[14].opcodes[302] = { type: 3, min: 0, max: Infinity }; // REP
554
+ this.rules[14].opcodes[303] = { type: 4, index: 0 }; // RNM(WSP)
555
+ this.rules[14].opcodes[304] = { type: 7, string: [123] }; // TLS
556
+ this.rules[14].opcodes[305] = { type: 3, min: 0, max: Infinity }; // REP
557
+ this.rules[14].opcodes[306] = { type: 4, index: 0 }; // RNM(WSP)
558
+ this.rules[14].opcodes[307] = { type: 4, index: 15 }; // RNM(PRECISION)
559
+ this.rules[14].opcodes[308] = { type: 3, min: 0, max: Infinity }; // REP
560
+ this.rules[14].opcodes[309] = { type: 4, index: 0 }; // RNM(WSP)
561
+ this.rules[14].opcodes[310] = { type: 7, string: [125] }; // TLS
562
+ /* PRECISION */
563
+ this.rules[15].opcodes = [];
564
+ this.rules[15].opcodes[0] = { type: 1, children: [1, 2, 3] }; // ALT
565
+ this.rules[15].opcodes[1] = { type: 6, string: [108, 112] }; // TBS
566
+ this.rules[15].opcodes[2] = { type: 6, string: [109, 112] }; // TBS
567
+ this.rules[15].opcodes[3] = { type: 6, string: [104, 112] }; // TBS
568
+ /* TYPE */
569
+ this.rules[16].opcodes = [];
570
+ this.rules[16].opcodes[0] = { type: 1, children: [1, 9, 20, 21] }; // ALT
571
+ this.rules[16].opcodes[1] = { type: 2, children: [2, 3, 5, 6, 8] }; // CAT
572
+ this.rules[16].opcodes[2] = { type: 4, index: 14 }; // RNM(BASE-TYPE)
573
+ this.rules[16].opcodes[3] = { type: 3, min: 0, max: Infinity }; // REP
574
+ this.rules[16].opcodes[4] = { type: 4, index: 0 }; // RNM(WSP)
575
+ this.rules[16].opcodes[5] = { type: 7, string: [91] }; // TLS
576
+ this.rules[16].opcodes[6] = { type: 3, min: 0, max: Infinity }; // REP
577
+ this.rules[16].opcodes[7] = { type: 4, index: 0 }; // RNM(WSP)
578
+ this.rules[16].opcodes[8] = { type: 7, string: [93] }; // TLS
579
+ this.rules[16].opcodes[9] = { type: 2, children: [10, 11, 13, 14, 16, 17, 19] }; // CAT
580
+ this.rules[16].opcodes[10] = { type: 4, index: 14 }; // RNM(BASE-TYPE)
581
+ this.rules[16].opcodes[11] = { type: 3, min: 0, max: Infinity }; // REP
582
+ this.rules[16].opcodes[12] = { type: 4, index: 0 }; // RNM(WSP)
583
+ this.rules[16].opcodes[13] = { type: 7, string: [60] }; // TLS
584
+ this.rules[16].opcodes[14] = { type: 3, min: 0, max: Infinity }; // REP
585
+ this.rules[16].opcodes[15] = { type: 4, index: 0 }; // RNM(WSP)
586
+ this.rules[16].opcodes[16] = { type: 4, index: 14 }; // RNM(BASE-TYPE)
587
+ this.rules[16].opcodes[17] = { type: 3, min: 0, max: Infinity }; // REP
588
+ this.rules[16].opcodes[18] = { type: 4, index: 0 }; // RNM(WSP)
589
+ this.rules[16].opcodes[19] = { type: 7, string: [62] }; // TLS
590
+ this.rules[16].opcodes[20] = { type: 4, index: 14 }; // RNM(BASE-TYPE)
591
+ this.rules[16].opcodes[21] = { type: 4, index: 10 }; // RNM(LABEL)
592
+ /* VERTEX-ATTRIBUTE-DESCRIPTOR */
593
+ this.rules[17].opcodes = [];
594
+ this.rules[17].opcodes[0] = { type: 2, children: [1, 2, 4, 5, 7, 8, 10] }; // CAT
595
+ this.rules[17].opcodes[1] = { type: 6, string: [118, 101, 114, 116, 101, 120] }; // TBS
596
+ this.rules[17].opcodes[2] = { type: 3, min: 0, max: Infinity }; // REP
597
+ this.rules[17].opcodes[3] = { type: 4, index: 0 }; // RNM(WSP)
598
+ this.rules[17].opcodes[4] = { type: 7, string: [91] }; // TLS
599
+ this.rules[17].opcodes[5] = { type: 3, min: 0, max: Infinity }; // REP
600
+ this.rules[17].opcodes[6] = { type: 4, index: 0 }; // RNM(WSP)
601
+ this.rules[17].opcodes[7] = { type: 4, index: 5 }; // RNM(DIGIT)
602
+ this.rules[17].opcodes[8] = { type: 3, min: 0, max: Infinity }; // REP
603
+ this.rules[17].opcodes[9] = { type: 4, index: 0 }; // RNM(WSP)
604
+ this.rules[17].opcodes[10] = { type: 7, string: [93] }; // TLS
605
+ /* DESCRIPTOR */
606
+ this.rules[18].opcodes = [];
607
+ this.rules[18].opcodes[0] = { type: 1, children: [1, 2, 3, 4, 5, 6] }; // ALT
608
+ this.rules[18].opcodes[1] = { type: 6, string: [117, 110, 105, 102, 111, 114, 109] }; // TBS
609
+ this.rules[18].opcodes[2] = { type: 6, string: [105, 110] }; // TBS
610
+ this.rules[18].opcodes[3] = { type: 6, string: [100, 101, 102] }; // TBS
611
+ this.rules[18].opcodes[4] = { type: 4, index: 17 }; // RNM(VERTEX-ATTRIBUTE-DESCRIPTOR)
612
+ this.rules[18].opcodes[5] = { type: 6, string: [109, 117, 116] }; // TBS
613
+ this.rules[18].opcodes[6] = { type: 6, string: [111, 117, 116] }; // TBS
614
+ /* DECLARATION */
615
+ this.rules[19].opcodes = [];
616
+ this.rules[19].opcodes[0] = { type: 2, children: [1, 6, 7, 9, 10, 12] }; // CAT
617
+ this.rules[19].opcodes[1] = { type: 3, min: 0, max: Infinity }; // REP
618
+ this.rules[19].opcodes[2] = { type: 2, children: [3, 4] }; // CAT
619
+ this.rules[19].opcodes[3] = { type: 4, index: 18 }; // RNM(DESCRIPTOR)
620
+ this.rules[19].opcodes[4] = { type: 3, min: 1, max: Infinity }; // REP
621
+ this.rules[19].opcodes[5] = { type: 4, index: 0 }; // RNM(WSP)
622
+ this.rules[19].opcodes[6] = { type: 4, index: 10 }; // RNM(LABEL)
623
+ this.rules[19].opcodes[7] = { type: 3, min: 0, max: Infinity }; // REP
624
+ this.rules[19].opcodes[8] = { type: 4, index: 0 }; // RNM(WSP)
625
+ this.rules[19].opcodes[9] = { type: 7, string: [58] }; // TLS
626
+ this.rules[19].opcodes[10] = { type: 3, min: 0, max: Infinity }; // REP
627
+ this.rules[19].opcodes[11] = { type: 4, index: 0 }; // RNM(WSP)
628
+ this.rules[19].opcodes[12] = { type: 4, index: 16 }; // RNM(TYPE)
629
+ /* ARGUMENTS */
630
+ this.rules[20].opcodes = [];
631
+ this.rules[20].opcodes[0] = { type: 2, children: [1, 2] }; // CAT
632
+ this.rules[20].opcodes[1] = { type: 4, index: 27 }; // RNM(EXPRESSION)
633
+ this.rules[20].opcodes[2] = { type: 3, min: 0, max: Infinity }; // REP
634
+ this.rules[20].opcodes[3] = { type: 2, children: [4, 6, 7, 9] }; // CAT
635
+ this.rules[20].opcodes[4] = { type: 3, min: 0, max: Infinity }; // REP
636
+ this.rules[20].opcodes[5] = { type: 4, index: 0 }; // RNM(WSP)
637
+ this.rules[20].opcodes[6] = { type: 7, string: [44] }; // TLS
638
+ this.rules[20].opcodes[7] = { type: 3, min: 0, max: Infinity }; // REP
639
+ this.rules[20].opcodes[8] = { type: 4, index: 0 }; // RNM(WSP)
640
+ this.rules[20].opcodes[9] = { type: 4, index: 27 }; // RNM(EXPRESSION)
641
+ /* CALL */
642
+ this.rules[21].opcodes = [];
643
+ this.rules[21].opcodes[0] = { type: 2, children: [1, 2, 4, 5, 7, 9, 11] }; // CAT
644
+ this.rules[21].opcodes[1] = { type: 4, index: 11 }; // RNM(PATH)
645
+ this.rules[21].opcodes[2] = { type: 3, min: 0, max: Infinity }; // REP
646
+ this.rules[21].opcodes[3] = { type: 4, index: 0 }; // RNM(WSP)
647
+ this.rules[21].opcodes[4] = { type: 7, string: [40] }; // TLS
648
+ this.rules[21].opcodes[5] = { type: 3, min: 0, max: Infinity }; // REP
649
+ this.rules[21].opcodes[6] = { type: 4, index: 0 }; // RNM(WSP)
650
+ this.rules[21].opcodes[7] = { type: 3, min: 0, max: 1 }; // REP
651
+ this.rules[21].opcodes[8] = { type: 4, index: 20 }; // RNM(ARGUMENTS)
652
+ this.rules[21].opcodes[9] = { type: 3, min: 0, max: Infinity }; // REP
653
+ this.rules[21].opcodes[10] = { type: 4, index: 0 }; // RNM(WSP)
654
+ this.rules[21].opcodes[11] = { type: 7, string: [41] }; // TLS
655
+ /* PRIMARY */
656
+ this.rules[22].opcodes = [];
657
+ this.rules[22].opcodes[0] = { type: 1, children: [1, 2, 3, 4] }; // ALT
658
+ this.rules[22].opcodes[1] = { type: 4, index: 9 }; // RNM(LITERAL)
659
+ this.rules[22].opcodes[2] = { type: 4, index: 21 }; // RNM(CALL)
660
+ this.rules[22].opcodes[3] = { type: 4, index: 11 }; // RNM(PATH)
661
+ this.rules[22].opcodes[4] = { type: 4, index: 28 }; // RNM(PARENTHESES)
662
+ /* ELEMENT */
663
+ this.rules[23].opcodes = [];
664
+ this.rules[23].opcodes[0] = { type: 2, children: [1, 2] }; // CAT
665
+ this.rules[23].opcodes[1] = { type: 4, index: 22 }; // RNM(PRIMARY)
666
+ this.rules[23].opcodes[2] = { type: 3, min: 0, max: Infinity }; // REP
667
+ this.rules[23].opcodes[3] = { type: 2, children: [4, 6, 7, 9, 10, 12] }; // CAT
668
+ this.rules[23].opcodes[4] = { type: 3, min: 0, max: Infinity }; // REP
669
+ this.rules[23].opcodes[5] = { type: 4, index: 0 }; // RNM(WSP)
670
+ this.rules[23].opcodes[6] = { type: 7, string: [91] }; // TLS
671
+ this.rules[23].opcodes[7] = { type: 3, min: 0, max: Infinity }; // REP
672
+ this.rules[23].opcodes[8] = { type: 4, index: 0 }; // RNM(WSP)
673
+ this.rules[23].opcodes[9] = { type: 4, index: 27 }; // RNM(EXPRESSION)
674
+ this.rules[23].opcodes[10] = { type: 3, min: 0, max: Infinity }; // REP
675
+ this.rules[23].opcodes[11] = { type: 4, index: 0 }; // RNM(WSP)
676
+ this.rules[23].opcodes[12] = { type: 7, string: [93] }; // TLS
677
+ /* FACTOR */
678
+ this.rules[24].opcodes = [];
679
+ this.rules[24].opcodes[0] = { type: 2, children: [1, 2] }; // CAT
680
+ this.rules[24].opcodes[1] = { type: 4, index: 23 }; // RNM(ELEMENT)
681
+ this.rules[24].opcodes[2] = { type: 3, min: 0, max: Infinity }; // REP
682
+ this.rules[24].opcodes[3] = { type: 2, children: [4, 6, 10, 12] }; // CAT
683
+ this.rules[24].opcodes[4] = { type: 3, min: 0, max: Infinity }; // REP
684
+ this.rules[24].opcodes[5] = { type: 4, index: 0 }; // RNM(WSP)
685
+ this.rules[24].opcodes[6] = { type: 1, children: [7, 8, 9] }; // ALT
686
+ this.rules[24].opcodes[7] = { type: 7, string: [42] }; // TLS
687
+ this.rules[24].opcodes[8] = { type: 7, string: [47] }; // TLS
688
+ this.rules[24].opcodes[9] = { type: 7, string: [37] }; // TLS
689
+ this.rules[24].opcodes[10] = { type: 3, min: 0, max: Infinity }; // REP
690
+ this.rules[24].opcodes[11] = { type: 4, index: 0 }; // RNM(WSP)
691
+ this.rules[24].opcodes[12] = { type: 4, index: 23 }; // RNM(ELEMENT)
692
+ /* TERM */
693
+ this.rules[25].opcodes = [];
694
+ this.rules[25].opcodes[0] = { type: 2, children: [1, 2] }; // CAT
695
+ this.rules[25].opcodes[1] = { type: 4, index: 24 }; // RNM(FACTOR)
696
+ this.rules[25].opcodes[2] = { type: 3, min: 0, max: Infinity }; // REP
697
+ this.rules[25].opcodes[3] = { type: 2, children: [4, 6, 9, 11] }; // CAT
698
+ this.rules[25].opcodes[4] = { type: 3, min: 0, max: Infinity }; // REP
699
+ this.rules[25].opcodes[5] = { type: 4, index: 0 }; // RNM(WSP)
700
+ this.rules[25].opcodes[6] = { type: 1, children: [7, 8] }; // ALT
701
+ this.rules[25].opcodes[7] = { type: 7, string: [43] }; // TLS
702
+ this.rules[25].opcodes[8] = { type: 7, string: [45] }; // TLS
703
+ this.rules[25].opcodes[9] = { type: 3, min: 0, max: Infinity }; // REP
704
+ this.rules[25].opcodes[10] = { type: 4, index: 0 }; // RNM(WSP)
705
+ this.rules[25].opcodes[11] = { type: 4, index: 24 }; // RNM(FACTOR)
706
+ /* CAST-EXPR */
707
+ this.rules[26].opcodes = [];
708
+ this.rules[26].opcodes[0] = { type: 2, children: [1, 2] }; // CAT
709
+ this.rules[26].opcodes[1] = { type: 4, index: 25 }; // RNM(TERM)
710
+ this.rules[26].opcodes[2] = { type: 3, min: 0, max: 1 }; // REP
711
+ this.rules[26].opcodes[3] = { type: 2, children: [4, 6, 7, 9] }; // CAT
712
+ this.rules[26].opcodes[4] = { type: 3, min: 0, max: Infinity }; // REP
713
+ this.rules[26].opcodes[5] = { type: 4, index: 0 }; // RNM(WSP)
714
+ this.rules[26].opcodes[6] = { type: 6, string: [97, 115] }; // TBS
715
+ this.rules[26].opcodes[7] = { type: 3, min: 0, max: Infinity }; // REP
716
+ this.rules[26].opcodes[8] = { type: 4, index: 0 }; // RNM(WSP)
717
+ this.rules[26].opcodes[9] = { type: 4, index: 16 }; // RNM(TYPE)
718
+ /* EXPRESSION */
719
+ this.rules[27].opcodes = [];
720
+ this.rules[27].opcodes[0] = { type: 4, index: 26 }; // RNM(CAST-EXPR)
721
+ /* PARENTHESES */
722
+ this.rules[28].opcodes = [];
723
+ this.rules[28].opcodes[0] = { type: 2, children: [1, 2, 4, 5, 7] }; // CAT
724
+ this.rules[28].opcodes[1] = { type: 7, string: [40] }; // TLS
725
+ this.rules[28].opcodes[2] = { type: 3, min: 0, max: Infinity }; // REP
726
+ this.rules[28].opcodes[3] = { type: 4, index: 0 }; // RNM(WSP)
727
+ this.rules[28].opcodes[4] = { type: 4, index: 27 }; // RNM(EXPRESSION)
728
+ this.rules[28].opcodes[5] = { type: 3, min: 0, max: Infinity }; // REP
729
+ this.rules[28].opcodes[6] = { type: 4, index: 0 }; // RNM(WSP)
730
+ this.rules[28].opcodes[7] = { type: 7, string: [41] }; // TLS
731
+ /* ASSIGNMENT-LHS */
732
+ this.rules[29].opcodes = [];
733
+ this.rules[29].opcodes[0] = { type: 2, children: [1, 2, 4] }; // CAT
734
+ this.rules[29].opcodes[1] = { type: 4, index: 11 }; // RNM(PATH)
735
+ this.rules[29].opcodes[2] = { type: 3, min: 0, max: Infinity }; // REP
736
+ this.rules[29].opcodes[3] = { type: 4, index: 0 }; // RNM(WSP)
737
+ this.rules[29].opcodes[4] = { type: 3, min: 0, max: Infinity }; // REP
738
+ this.rules[29].opcodes[5] = { type: 2, children: [6, 7, 9, 10, 12] }; // CAT
739
+ this.rules[29].opcodes[6] = { type: 7, string: [91] }; // TLS
740
+ this.rules[29].opcodes[7] = { type: 3, min: 0, max: Infinity }; // REP
741
+ this.rules[29].opcodes[8] = { type: 4, index: 0 }; // RNM(WSP)
742
+ this.rules[29].opcodes[9] = { type: 4, index: 27 }; // RNM(EXPRESSION)
743
+ this.rules[29].opcodes[10] = { type: 3, min: 0, max: Infinity }; // REP
744
+ this.rules[29].opcodes[11] = { type: 4, index: 0 }; // RNM(WSP)
745
+ this.rules[29].opcodes[12] = { type: 7, string: [93] }; // TLS
746
+ /* ASSIGNMENT */
747
+ this.rules[30].opcodes = [];
748
+ this.rules[30].opcodes[0] = { type: 1, children: [1, 2] }; // ALT
749
+ this.rules[30].opcodes[1] = { type: 4, index: 19 }; // RNM(DECLARATION)
750
+ this.rules[30].opcodes[2] = { type: 2, children: [3, 4, 6, 7, 9] }; // CAT
751
+ this.rules[30].opcodes[3] = { type: 4, index: 29 }; // RNM(ASSIGNMENT-LHS)
752
+ this.rules[30].opcodes[4] = { type: 3, min: 0, max: Infinity }; // REP
753
+ this.rules[30].opcodes[5] = { type: 4, index: 0 }; // RNM(WSP)
754
+ this.rules[30].opcodes[6] = { type: 7, string: [61] }; // TLS
755
+ this.rules[30].opcodes[7] = { type: 3, min: 0, max: Infinity }; // REP
756
+ this.rules[30].opcodes[8] = { type: 4, index: 0 }; // RNM(WSP)
757
+ this.rules[30].opcodes[9] = { type: 4, index: 27 }; // RNM(EXPRESSION)
758
+ /* STATEMENT */
759
+ this.rules[31].opcodes = [];
760
+ this.rules[31].opcodes[0] = { type: 1, children: [1, 2, 3, 4, 5, 6, 11] }; // ALT
761
+ this.rules[31].opcodes[1] = { type: 4, index: 19 }; // RNM(DECLARATION)
762
+ this.rules[31].opcodes[2] = { type: 4, index: 30 }; // RNM(ASSIGNMENT)
763
+ this.rules[31].opcodes[3] = { type: 4, index: 27 }; // RNM(EXPRESSION)
764
+ this.rules[31].opcodes[4] = { type: 6, string: [98, 114, 101, 97, 107] }; // TBS
765
+ this.rules[31].opcodes[5] = { type: 6, string: [99, 111, 110, 116, 105, 110, 117, 101] }; // TBS
766
+ this.rules[31].opcodes[6] = { type: 2, children: [7, 8, 10] }; // CAT
767
+ this.rules[31].opcodes[7] = { type: 6, string: [114, 101, 116, 117, 114, 110] }; // TBS
768
+ this.rules[31].opcodes[8] = { type: 3, min: 1, max: Infinity }; // REP
769
+ this.rules[31].opcodes[9] = { type: 4, index: 0 }; // RNM(WSP)
770
+ this.rules[31].opcodes[10] = { type: 4, index: 27 }; // RNM(EXPRESSION)
771
+ this.rules[31].opcodes[11] = { type: 6, string: [100, 105, 115, 99, 97, 114, 100] }; // TBS
772
+ /* STATEMENT-LINE */
773
+ this.rules[32].opcodes = [];
774
+ this.rules[32].opcodes[0] = { type: 2, children: [1, 3, 5, 7] }; // CAT
775
+ this.rules[32].opcodes[1] = { type: 3, min: 0, max: Infinity }; // REP
776
+ this.rules[32].opcodes[2] = { type: 4, index: 0 }; // RNM(WSP)
777
+ this.rules[32].opcodes[3] = { type: 3, min: 0, max: 1 }; // REP
778
+ this.rules[32].opcodes[4] = { type: 4, index: 31 }; // RNM(STATEMENT)
779
+ this.rules[32].opcodes[5] = { type: 3, min: 0, max: Infinity }; // REP
780
+ this.rules[32].opcodes[6] = { type: 4, index: 0 }; // RNM(WSP)
781
+ this.rules[32].opcodes[7] = { type: 4, index: 4 }; // RNM(NEWLINE)
782
+ /* FUNCTION-BODY */
783
+ this.rules[33].opcodes = [];
784
+ this.rules[33].opcodes[0] = { type: 3, min: 1, max: Infinity }; // REP
785
+ this.rules[33].opcodes[1] = { type: 4, index: 32 }; // RNM(STATEMENT-LINE)
786
+ /* FUNCTION-DEFINITION-ARGUMENTS */
787
+ this.rules[34].opcodes = [];
788
+ this.rules[34].opcodes[0] = { type: 2, children: [1, 2] }; // CAT
789
+ this.rules[34].opcodes[1] = { type: 4, index: 19 }; // RNM(DECLARATION)
790
+ this.rules[34].opcodes[2] = { type: 3, min: 0, max: Infinity }; // REP
791
+ this.rules[34].opcodes[3] = { type: 2, children: [4, 6, 7, 9] }; // CAT
792
+ this.rules[34].opcodes[4] = { type: 3, min: 0, max: Infinity }; // REP
793
+ this.rules[34].opcodes[5] = { type: 4, index: 0 }; // RNM(WSP)
794
+ this.rules[34].opcodes[6] = { type: 7, string: [44] }; // TLS
795
+ this.rules[34].opcodes[7] = { type: 3, min: 0, max: Infinity }; // REP
796
+ this.rules[34].opcodes[8] = { type: 4, index: 0 }; // RNM(WSP)
797
+ this.rules[34].opcodes[9] = { type: 4, index: 19 }; // RNM(DECLARATION)
798
+ /* FUNCTION-DEFINITION */
799
+ this.rules[35].opcodes = [];
800
+ this.rules[35].opcodes[0] = { type: 2, children: [1, 2, 4, 5, 7, 16, 18, 19, 21, 23, 25, 26, 28, 34, 36, 37, 39, 41, 43, 45] }; // CAT
801
+ this.rules[35].opcodes[1] = { type: 6, string: [102, 117, 110, 99] }; // TBS
802
+ this.rules[35].opcodes[2] = { type: 3, min: 0, max: Infinity }; // REP
803
+ this.rules[35].opcodes[3] = { type: 4, index: 0 }; // RNM(WSP)
804
+ this.rules[35].opcodes[4] = { type: 4, index: 10 }; // RNM(LABEL)
805
+ this.rules[35].opcodes[5] = { type: 3, min: 0, max: Infinity }; // REP
806
+ this.rules[35].opcodes[6] = { type: 4, index: 0 }; // RNM(WSP)
807
+ this.rules[35].opcodes[7] = { type: 3, min: 0, max: 1 }; // REP
808
+ this.rules[35].opcodes[8] = { type: 2, children: [9, 10, 12, 13, 15] }; // CAT
809
+ this.rules[35].opcodes[9] = { type: 7, string: [60] }; // TLS
810
+ this.rules[35].opcodes[10] = { type: 3, min: 0, max: Infinity }; // REP
811
+ this.rules[35].opcodes[11] = { type: 4, index: 0 }; // RNM(WSP)
812
+ this.rules[35].opcodes[12] = { type: 4, index: 10 }; // RNM(LABEL)
813
+ this.rules[35].opcodes[13] = { type: 3, min: 0, max: Infinity }; // REP
814
+ this.rules[35].opcodes[14] = { type: 4, index: 0 }; // RNM(WSP)
815
+ this.rules[35].opcodes[15] = { type: 7, string: [62] }; // TLS
816
+ this.rules[35].opcodes[16] = { type: 3, min: 0, max: Infinity }; // REP
817
+ this.rules[35].opcodes[17] = { type: 4, index: 0 }; // RNM(WSP)
818
+ this.rules[35].opcodes[18] = { type: 7, string: [40] }; // TLS
819
+ this.rules[35].opcodes[19] = { type: 3, min: 0, max: Infinity }; // REP
820
+ this.rules[35].opcodes[20] = { type: 4, index: 0 }; // RNM(WSP)
821
+ this.rules[35].opcodes[21] = { type: 3, min: 0, max: 1 }; // REP
822
+ this.rules[35].opcodes[22] = { type: 4, index: 34 }; // RNM(FUNCTION-DEFINITION-ARGUMENTS)
823
+ this.rules[35].opcodes[23] = { type: 3, min: 0, max: Infinity }; // REP
824
+ this.rules[35].opcodes[24] = { type: 4, index: 0 }; // RNM(WSP)
825
+ this.rules[35].opcodes[25] = { type: 7, string: [41] }; // TLS
826
+ this.rules[35].opcodes[26] = { type: 3, min: 0, max: Infinity }; // REP
827
+ this.rules[35].opcodes[27] = { type: 4, index: 0 }; // RNM(WSP)
828
+ this.rules[35].opcodes[28] = { type: 3, min: 0, max: 1 }; // REP
829
+ this.rules[35].opcodes[29] = { type: 2, children: [30, 31, 33] }; // CAT
830
+ this.rules[35].opcodes[30] = { type: 7, string: [45, 62] }; // TLS
831
+ this.rules[35].opcodes[31] = { type: 3, min: 0, max: Infinity }; // REP
832
+ this.rules[35].opcodes[32] = { type: 4, index: 0 }; // RNM(WSP)
833
+ this.rules[35].opcodes[33] = { type: 4, index: 16 }; // RNM(TYPE)
834
+ this.rules[35].opcodes[34] = { type: 3, min: 0, max: Infinity }; // REP
835
+ this.rules[35].opcodes[35] = { type: 4, index: 0 }; // RNM(WSP)
836
+ this.rules[35].opcodes[36] = { type: 7, string: [58] }; // TLS
837
+ this.rules[35].opcodes[37] = { type: 3, min: 0, max: Infinity }; // REP
838
+ this.rules[35].opcodes[38] = { type: 4, index: 0 }; // RNM(WSP)
839
+ this.rules[35].opcodes[39] = { type: 3, min: 0, max: 1 }; // REP
840
+ this.rules[35].opcodes[40] = { type: 4, index: 4 }; // RNM(NEWLINE)
841
+ this.rules[35].opcodes[41] = { type: 3, min: 0, max: Infinity }; // REP
842
+ this.rules[35].opcodes[42] = { type: 4, index: 33 }; // RNM(FUNCTION-BODY)
843
+ this.rules[35].opcodes[43] = { type: 3, min: 0, max: Infinity }; // REP
844
+ this.rules[35].opcodes[44] = { type: 4, index: 0 }; // RNM(WSP)
845
+ this.rules[35].opcodes[45] = { type: 4, index: 4 }; // RNM(NEWLINE)
846
+ /* ROOT */
847
+ this.rules[36].opcodes = [];
848
+ this.rules[36].opcodes[0] = { type: 3, min: 0, max: Infinity }; // REP
849
+ this.rules[36].opcodes[1] = { type: 1, children: [2, 3] }; // ALT
850
+ this.rules[36].opcodes[2] = { type: 4, index: 35 }; // RNM(FUNCTION-DEFINITION)
851
+ this.rules[36].opcodes[3] = { type: 4, index: 32 }; // RNM(STATEMENT-LINE)
852
+ // The `toString()` function will display the original grammar file(s) that produced these opcodes.
853
+ this.toString = function () {
854
+ var str = "";
855
+ str += "; LOWEST LEVEL\r\n";
856
+ str += "WSP = %d32 / %d9\r\n";
857
+ str += "CR = %d13\r\n";
858
+ str += "LF = %d10\r\n";
859
+ str += "CRLF = CR LF\r\n";
860
+ str += "NEWLINE = CRLF / LF / CR\r\n";
861
+ str += "DIGIT = %x30-39\r\n";
862
+ str += "ALPHA = %x41-5A / %x61-7A\r\n";
863
+ str += "\r\n";
864
+ str += "; LITERAL\r\n";
865
+ str += "INTEGER = [\"-\" / \"+\"] 1*DIGIT\r\n";
866
+ str += "FLOAT = [\"-\" / \"+\"] 1*DIGIT \".\" 1*DIGIT\r\n";
867
+ str += "LITERAL = FLOAT / INTEGER\r\n";
868
+ str += "\r\n";
869
+ str += "; LABEL\r\n";
870
+ str += "LABEL = 1*(\"_\" / ALPHA) *(\"_\" / ALPHA / DIGIT)\r\n";
871
+ str += "\r\n";
872
+ str += "; dot operator\r\n";
873
+ str += "PATH = 1*(LABEL / \".\")\r\n";
874
+ str += "\r\n";
875
+ str += "; IMPORTS\r\n";
876
+ str += "IMPORT = %s\"import\" 1*WSP PATH 1*WSP [%s\"as\" 1*WSP LABEL]\r\n";
877
+ str += "IMPORT =/ %s\"from\" 1*WSP PATH 1*WSP %s\"import\" 1*WSP ((PATH [%s\"as\" 1*WSP LABEL]) / ( \"(\" WSP PATH [1*WSP %s\"as\" 1*WSP LABEL] *(*WSP \",\" *WSP PATH [%s\"as\" WSP LABEL]) *WSP \")\") / (PATH [1*WSP %s\"as\" 1*WSP LABEL] *(*WSP \",\" *WSP PATH [1*WSP %s\"as\" 1*WSP LABEL])) / \"*\")\r\n";
878
+ str += "\r\n";
879
+ str += "; EXTENSION\r\n";
880
+ str += "EXTENSION = %s\"extension\" 1*WSP LABEL 1*WSP (%s\"optional\" / %s\"required\")\r\n";
881
+ str += "\r\n";
882
+ str += "; TYPES\r\n";
883
+ str += "BASE-TYPE = %s\"fp10\" ; fixed point\r\n";
884
+ str += "BASE-TYPE =/ %s\"f16\" / %s\"f32\" / %s\"i8\" / %s\"i16\" / %s\"i32\" / %s\"u8\" / %s\"u16\" / %s\"u32\"\r\n";
885
+ str += "BASE-TYPE =/ %s\"none\" ; void\r\n";
886
+ str += "BASE-TYPE =/ %s\"bool\"\r\n";
887
+ str += "; precision descriptors for types\r\n";
888
+ str += "PRECISION = %s\"lp\" / %s\"mp\" / %s\"hp\"\r\n";
889
+ str += "BASE-TYPE =/ %s\"vec2\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
890
+ str += "BASE-TYPE =/ %s\"vec3\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
891
+ str += "BASE-TYPE =/ %s\"vec4\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
892
+ str += "BASE-TYPE =/ %s\"mat2\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
893
+ str += "BASE-TYPE =/ %s\"mat3\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
894
+ str += "BASE-TYPE =/ %s\"mat4\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
895
+ str += "BASE-TYPE =/ %s\"mat2x3\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
896
+ str += "BASE-TYPE =/ %s\"mat3x2\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
897
+ str += "BASE-TYPE =/ %s\"mat4x2\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
898
+ str += "BASE-TYPE =/ %s\"mat2x4\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
899
+ str += "BASE-TYPE =/ %s\"mat3x4\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
900
+ str += "BASE-TYPE =/ %s\"mat4x3\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
901
+ str += "BASE-TYPE =/ %s\"i\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
902
+ str += "BASE-TYPE =/ %s\"u\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
903
+ str += "BASE-TYPE =/ %s\"f\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
904
+ str += "BASE-TYPE =/ %s\"tex_1d\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
905
+ str += "BASE-TYPE =/ %s\"tex_2d\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
906
+ str += "BASE-TYPE =/ %s\"tex_2d_array\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
907
+ str += "BASE-TYPE =/ %s\"tex_3d\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
908
+ str += "BASE-TYPE =/ %s\"tex_cube\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
909
+ str += "BASE-TYPE =/ %s\"tex_2d_shadow\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
910
+ str += "BASE-TYPE =/ %s\"tex_2d_shadow_array\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
911
+ str += "BASE-TYPE =/ %s\"tex_cube_shadow\" [*WSP \"{\" *WSP PRECISION *WSP \"}\"]\r\n";
912
+ str += "TYPE = BASE-TYPE *WSP \"[\" *WSP \"]\"\r\n";
913
+ str += "TYPE =/ BASE-TYPE *WSP \"<\" *WSP BASE-TYPE *WSP \">\"\r\n";
914
+ str += "TYPE =/ BASE-TYPE\r\n";
915
+ str += "TYPE =/ LABEL\r\n";
916
+ str += "\r\n";
917
+ str += "; DESCRIPTOR\r\n";
918
+ str += "VERTEX-ATTRIBUTE-DESCRIPTOR = %s\"vertex\" *WSP \"[\" *WSP DIGIT *WSP \"]\"\r\n";
919
+ str += "DESCRIPTOR = %s\"uniform\" / %s\"in\" / %s\"def\" / VERTEX-ATTRIBUTE-DESCRIPTOR\r\n";
920
+ str += "DESCRIPTOR =/ %s\"mut\" ; inout qualifier\r\n";
921
+ str += "DESCRIPTOR =/ %s\"out\" ; out qualifier ; in qualifier is not implemented since it is default\r\n";
922
+ str += "\r\n";
923
+ str += "; VARIABLE DECLARATION\r\n";
924
+ str += "DECLARATION = (*((DESCRIPTOR) 1*WSP)) LABEL *WSP \":\" *WSP TYPE\r\n";
925
+ str += "\r\n";
926
+ str += "; FUNCTION CALL\r\n";
927
+ str += "ARGUMENTS = EXPRESSION *( *WSP \",\" *WSP EXPRESSION )\r\n";
928
+ str += "CALL = PATH *WSP \"(\" *WSP [ARGUMENTS] *WSP \")\"\r\n";
929
+ str += "\r\n";
930
+ str += "; 1. The base units (Things that don't start with an expression)\r\n";
931
+ str += "PRIMARY = LITERAL / CALL / PATH / PARENTHESES\r\n";
932
+ str += "\r\n";
933
+ str += "; 2. Handle Indexing (e.g., myVar[0])\r\n";
934
+ str += "; We put this here so it attaches to a LABEL or CALL\r\n";
935
+ str += "ELEMENT = PRIMARY *( *WSP \"[\" *WSP EXPRESSION *WSP \"]\" )\r\n";
936
+ str += "\r\n";
937
+ str += "; 3. Handle Math (Simplified version of precedence)\r\n";
938
+ str += "; We use a 'factor' for multiplication and a 'term' for addition\r\n";
939
+ str += "FACTOR = ELEMENT *( *WSP ( \"*\" / \"/\" / \"%\" ) *WSP ELEMENT )\r\n";
940
+ str += "TERM = FACTOR *( *WSP ( \"+\" / \"-\" ) *WSP FACTOR )\r\n";
941
+ str += "\r\n";
942
+ str += "; 4. Handle Casting (as)\r\n";
943
+ str += "CAST-EXPR = TERM [ *WSP %s\"as\" *WSP TYPE ]\r\n";
944
+ str += "\r\n";
945
+ str += "; 5. Final Expression\r\n";
946
+ str += "EXPRESSION = CAST-EXPR\r\n";
947
+ str += "PARENTHESES = \"(\" *WSP EXPRESSION *WSP \")\"\r\n";
948
+ str += "\r\n";
949
+ str += "; ASSIGNMENT\r\n";
950
+ str += "ASSIGNMENT-LHS = PATH *WSP *( \"[\" *WSP EXPRESSION *WSP \"]\" )\r\n";
951
+ str += "ASSIGNMENT = DECLARATION\r\n";
952
+ str += "ASSIGNMENT =/ ASSIGNMENT-LHS *WSP \"=\" *WSP EXPRESSION\r\n";
953
+ str += "\r\n";
954
+ str += "; STATEMENT\r\n";
955
+ str += "STATEMENT = DECLARATION / ASSIGNMENT / EXPRESSION / %s\"break\" / %s\"continue\"\r\n";
956
+ str += "STATEMENT =/ %s\"return\" 1*WSP EXPRESSION\r\n";
957
+ str += "STATEMENT =/ %s\"discard\"\r\n";
958
+ str += "STATEMENT-LINE = *WSP [STATEMENT] *WSP NEWLINE\r\n";
959
+ str += "\r\n";
960
+ str += "\r\n";
961
+ str += "; FUNCTION DEFINITION\r\n";
962
+ str += "FUNCTION-BODY = 1*STATEMENT-LINE\r\n";
963
+ str += "FUNCTION-DEFINITION-ARGUMENTS = DECLARATION *( *WSP \",\" *WSP DECLARATION )\r\n";
964
+ str += "FUNCTION-DEFINITION = %s\"func\" *WSP LABEL *WSP [\"<\" *WSP LABEL *WSP \">\"] *WSP \"(\" *WSP [FUNCTION-DEFINITION-ARGUMENTS] *WSP \")\" *WSP [\"->\" *WSP TYPE] *WSP \":\" *WSP [NEWLINE] *FUNCTION-BODY *WSP NEWLINE\r\n";
965
+ str += "\r\n";
966
+ str += "; ROOT\r\n";
967
+ str += "ROOT = *(FUNCTION-DEFINITION / STATEMENT-LINE)\n";
968
+ return str;
969
+ };
970
+ }
971
+ //# sourceMappingURL=grammar.js.map