react-native-divkit 0.1.0-alpha.1

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 (322) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +340 -0
  3. package/dist/DivKit.d.ts +68 -0
  4. package/dist/DivKit.d.ts.map +1 -0
  5. package/dist/DivKit.js +400 -0
  6. package/dist/DivKit.js.map +1 -0
  7. package/dist/actions/array.d.ts +8 -0
  8. package/dist/actions/array.d.ts.map +1 -0
  9. package/dist/actions/array.js +139 -0
  10. package/dist/actions/array.js.map +1 -0
  11. package/dist/actions/copyToClipboard.d.ts +22 -0
  12. package/dist/actions/copyToClipboard.d.ts.map +1 -0
  13. package/dist/actions/copyToClipboard.js +63 -0
  14. package/dist/actions/copyToClipboard.js.map +1 -0
  15. package/dist/actions/dict.d.ts +6 -0
  16. package/dist/actions/dict.d.ts.map +1 -0
  17. package/dist/actions/dict.js +58 -0
  18. package/dist/actions/dict.js.map +1 -0
  19. package/dist/actions/index.d.ts +11 -0
  20. package/dist/actions/index.d.ts.map +1 -0
  21. package/dist/actions/index.js +11 -0
  22. package/dist/actions/index.js.map +1 -0
  23. package/dist/actions/updateStructure.d.ts +6 -0
  24. package/dist/actions/updateStructure.d.ts.map +1 -0
  25. package/dist/actions/updateStructure.js +116 -0
  26. package/dist/actions/updateStructure.js.map +1 -0
  27. package/dist/components/DivComponent.d.ts +29 -0
  28. package/dist/components/DivComponent.d.ts.map +1 -0
  29. package/dist/components/DivComponent.js +62 -0
  30. package/dist/components/DivComponent.js.map +1 -0
  31. package/dist/components/container/DivContainer.d.ts +26 -0
  32. package/dist/components/container/DivContainer.d.ts.map +1 -0
  33. package/dist/components/container/DivContainer.js +172 -0
  34. package/dist/components/container/DivContainer.js.map +1 -0
  35. package/dist/components/container/index.d.ts +3 -0
  36. package/dist/components/container/index.d.ts.map +1 -0
  37. package/dist/components/container/index.js +2 -0
  38. package/dist/components/container/index.js.map +1 -0
  39. package/dist/components/image/DivImage.d.ts +29 -0
  40. package/dist/components/image/DivImage.d.ts.map +1 -0
  41. package/dist/components/image/DivImage.js +122 -0
  42. package/dist/components/image/DivImage.js.map +1 -0
  43. package/dist/components/image/index.d.ts +3 -0
  44. package/dist/components/image/index.d.ts.map +1 -0
  45. package/dist/components/image/index.js +2 -0
  46. package/dist/components/image/index.js.map +1 -0
  47. package/dist/components/index.d.ts +14 -0
  48. package/dist/components/index.d.ts.map +1 -0
  49. package/dist/components/index.js +11 -0
  50. package/dist/components/index.js.map +1 -0
  51. package/dist/components/state/DivState.d.ts +26 -0
  52. package/dist/components/state/DivState.d.ts.map +1 -0
  53. package/dist/components/state/DivState.js +121 -0
  54. package/dist/components/state/DivState.js.map +1 -0
  55. package/dist/components/state/index.d.ts +3 -0
  56. package/dist/components/state/index.d.ts.map +1 -0
  57. package/dist/components/state/index.js +2 -0
  58. package/dist/components/state/index.js.map +1 -0
  59. package/dist/components/text/DivText.d.ts +28 -0
  60. package/dist/components/text/DivText.d.ts.map +1 -0
  61. package/dist/components/text/DivText.js +143 -0
  62. package/dist/components/text/DivText.js.map +1 -0
  63. package/dist/components/text/index.d.ts +3 -0
  64. package/dist/components/text/index.d.ts.map +1 -0
  65. package/dist/components/text/index.js +2 -0
  66. package/dist/components/text/index.js.map +1 -0
  67. package/dist/components/utilities/Outer.d.ts +17 -0
  68. package/dist/components/utilities/Outer.d.ts.map +1 -0
  69. package/dist/components/utilities/Outer.js +210 -0
  70. package/dist/components/utilities/Outer.js.map +1 -0
  71. package/dist/components/utilities/Unknown.d.ts +11 -0
  72. package/dist/components/utilities/Unknown.d.ts.map +1 -0
  73. package/dist/components/utilities/Unknown.js +50 -0
  74. package/dist/components/utilities/Unknown.js.map +1 -0
  75. package/dist/components/utilities/index.d.ts +5 -0
  76. package/dist/components/utilities/index.d.ts.map +1 -0
  77. package/dist/components/utilities/index.js +3 -0
  78. package/dist/components/utilities/index.js.map +1 -0
  79. package/dist/context/ActionContext.d.ts +25 -0
  80. package/dist/context/ActionContext.d.ts.map +1 -0
  81. package/dist/context/ActionContext.js +20 -0
  82. package/dist/context/ActionContext.js.map +1 -0
  83. package/dist/context/DivKitContext.d.ts +33 -0
  84. package/dist/context/DivKitContext.d.ts.map +1 -0
  85. package/dist/context/DivKitContext.js +14 -0
  86. package/dist/context/DivKitContext.js.map +1 -0
  87. package/dist/context/EnabledContext.d.ts +31 -0
  88. package/dist/context/EnabledContext.d.ts.map +1 -0
  89. package/dist/context/EnabledContext.js +31 -0
  90. package/dist/context/EnabledContext.js.map +1 -0
  91. package/dist/context/StateContext.d.ts +57 -0
  92. package/dist/context/StateContext.d.ts.map +1 -0
  93. package/dist/context/StateContext.js +20 -0
  94. package/dist/context/StateContext.js.map +1 -0
  95. package/dist/context/index.d.ts +9 -0
  96. package/dist/context/index.d.ts.map +1 -0
  97. package/dist/context/index.js +9 -0
  98. package/dist/context/index.js.map +1 -0
  99. package/dist/expressions/bigint.d.ts +8 -0
  100. package/dist/expressions/bigint.d.ts.map +1 -0
  101. package/dist/expressions/bigint.js +31 -0
  102. package/dist/expressions/bigint.js.map +1 -0
  103. package/dist/expressions/const.d.ts +15 -0
  104. package/dist/expressions/const.d.ts.map +1 -0
  105. package/dist/expressions/const.js +15 -0
  106. package/dist/expressions/const.js.map +1 -0
  107. package/dist/expressions/eval.d.ts +77 -0
  108. package/dist/expressions/eval.d.ts.map +1 -0
  109. package/dist/expressions/eval.js +459 -0
  110. package/dist/expressions/eval.js.map +1 -0
  111. package/dist/expressions/expressions.d.ts +7 -0
  112. package/dist/expressions/expressions.d.ts.map +1 -0
  113. package/dist/expressions/expressions.js +3191 -0
  114. package/dist/expressions/expressions.js.map +1 -0
  115. package/dist/expressions/funcs/array.d.ts +2 -0
  116. package/dist/expressions/funcs/array.d.ts.map +1 -0
  117. package/dist/expressions/funcs/array.js +381 -0
  118. package/dist/expressions/funcs/array.js.map +1 -0
  119. package/dist/expressions/funcs/colors.d.ts +2 -0
  120. package/dist/expressions/funcs/colors.d.ts.map +1 -0
  121. package/dist/expressions/funcs/colors.js +75 -0
  122. package/dist/expressions/funcs/colors.js.map +1 -0
  123. package/dist/expressions/funcs/customFuncs.d.ts +8 -0
  124. package/dist/expressions/funcs/customFuncs.d.ts.map +1 -0
  125. package/dist/expressions/funcs/customFuncs.js +114 -0
  126. package/dist/expressions/funcs/customFuncs.js.map +1 -0
  127. package/dist/expressions/funcs/datetime.d.ts +2 -0
  128. package/dist/expressions/funcs/datetime.d.ts.map +1 -0
  129. package/dist/expressions/funcs/datetime.js +182 -0
  130. package/dist/expressions/funcs/datetime.js.map +1 -0
  131. package/dist/expressions/funcs/dict.d.ts +2 -0
  132. package/dist/expressions/funcs/dict.d.ts.map +1 -0
  133. package/dist/expressions/funcs/dict.js +170 -0
  134. package/dist/expressions/funcs/dict.js.map +1 -0
  135. package/dist/expressions/funcs/funcs.d.ts +80 -0
  136. package/dist/expressions/funcs/funcs.d.ts.map +1 -0
  137. package/dist/expressions/funcs/funcs.js +146 -0
  138. package/dist/expressions/funcs/funcs.js.map +1 -0
  139. package/dist/expressions/funcs/index.d.ts +2 -0
  140. package/dist/expressions/funcs/index.d.ts.map +1 -0
  141. package/dist/expressions/funcs/index.js +23 -0
  142. package/dist/expressions/funcs/index.js.map +1 -0
  143. package/dist/expressions/funcs/interval.d.ts +2 -0
  144. package/dist/expressions/funcs/interval.d.ts.map +1 -0
  145. package/dist/expressions/funcs/interval.js +61 -0
  146. package/dist/expressions/funcs/interval.js.map +1 -0
  147. package/dist/expressions/funcs/math.d.ts +2 -0
  148. package/dist/expressions/funcs/math.d.ts.map +1 -0
  149. package/dist/expressions/funcs/math.js +324 -0
  150. package/dist/expressions/funcs/math.js.map +1 -0
  151. package/dist/expressions/funcs/std.d.ts +2 -0
  152. package/dist/expressions/funcs/std.d.ts.map +1 -0
  153. package/dist/expressions/funcs/std.js +293 -0
  154. package/dist/expressions/funcs/std.js.map +1 -0
  155. package/dist/expressions/funcs/stored.d.ts +4 -0
  156. package/dist/expressions/funcs/stored.d.ts.map +1 -0
  157. package/dist/expressions/funcs/stored.js +62 -0
  158. package/dist/expressions/funcs/stored.js.map +1 -0
  159. package/dist/expressions/funcs/strings.d.ts +2 -0
  160. package/dist/expressions/funcs/strings.d.ts.map +1 -0
  161. package/dist/expressions/funcs/strings.js +158 -0
  162. package/dist/expressions/funcs/strings.js.map +1 -0
  163. package/dist/expressions/funcs/trigonometry.d.ts +2 -0
  164. package/dist/expressions/funcs/trigonometry.d.ts.map +1 -0
  165. package/dist/expressions/funcs/trigonometry.js +92 -0
  166. package/dist/expressions/funcs/trigonometry.js.map +1 -0
  167. package/dist/expressions/json.d.ts +18 -0
  168. package/dist/expressions/json.d.ts.map +1 -0
  169. package/dist/expressions/json.js +271 -0
  170. package/dist/expressions/json.js.map +1 -0
  171. package/dist/expressions/parserCache.d.ts +4 -0
  172. package/dist/expressions/parserCache.d.ts.map +1 -0
  173. package/dist/expressions/parserCache.js +23 -0
  174. package/dist/expressions/parserCache.js.map +1 -0
  175. package/dist/expressions/simpleUnescapeString.d.ts +2 -0
  176. package/dist/expressions/simpleUnescapeString.d.ts.map +1 -0
  177. package/dist/expressions/simpleUnescapeString.js +61 -0
  178. package/dist/expressions/simpleUnescapeString.js.map +1 -0
  179. package/dist/expressions/utils.d.ts +29 -0
  180. package/dist/expressions/utils.d.ts.map +1 -0
  181. package/dist/expressions/utils.js +236 -0
  182. package/dist/expressions/utils.js.map +1 -0
  183. package/dist/expressions/variable.d.ts +82 -0
  184. package/dist/expressions/variable.d.ts.map +1 -0
  185. package/dist/expressions/variable.js +337 -0
  186. package/dist/expressions/variable.js.map +1 -0
  187. package/dist/expressions/walk.d.ts +7 -0
  188. package/dist/expressions/walk.d.ts.map +1 -0
  189. package/dist/expressions/walk.js +39 -0
  190. package/dist/expressions/walk.js.map +1 -0
  191. package/dist/hooks/index.d.ts +8 -0
  192. package/dist/hooks/index.d.ts.map +1 -0
  193. package/dist/hooks/index.js +11 -0
  194. package/dist/hooks/index.js.map +1 -0
  195. package/dist/hooks/useAction.d.ts +102 -0
  196. package/dist/hooks/useAction.d.ts.map +1 -0
  197. package/dist/hooks/useAction.js +116 -0
  198. package/dist/hooks/useAction.js.map +1 -0
  199. package/dist/hooks/useDerivedFromVars.d.ts +72 -0
  200. package/dist/hooks/useDerivedFromVars.d.ts.map +1 -0
  201. package/dist/hooks/useDerivedFromVars.js +100 -0
  202. package/dist/hooks/useDerivedFromVars.js.map +1 -0
  203. package/dist/hooks/useVariable.d.ts +86 -0
  204. package/dist/hooks/useVariable.d.ts.map +1 -0
  205. package/dist/hooks/useVariable.js +130 -0
  206. package/dist/hooks/useVariable.js.map +1 -0
  207. package/dist/index.d.ts +30 -0
  208. package/dist/index.d.ts.map +1 -0
  209. package/dist/index.js +28 -0
  210. package/dist/index.js.map +1 -0
  211. package/dist/stores/createObservable.d.ts +38 -0
  212. package/dist/stores/createObservable.d.ts.map +1 -0
  213. package/dist/stores/createObservable.js +49 -0
  214. package/dist/stores/createObservable.js.map +1 -0
  215. package/dist/utils/applyTemplate.d.ts +8 -0
  216. package/dist/utils/applyTemplate.d.ts.map +1 -0
  217. package/dist/utils/applyTemplate.js +94 -0
  218. package/dist/utils/applyTemplate.js.map +1 -0
  219. package/dist/utils/correctColor.d.ts +18 -0
  220. package/dist/utils/correctColor.d.ts.map +1 -0
  221. package/dist/utils/correctColor.js +79 -0
  222. package/dist/utils/correctColor.js.map +1 -0
  223. package/dist/utils/escapeRegExp.d.ts +2 -0
  224. package/dist/utils/escapeRegExp.d.ts.map +1 -0
  225. package/dist/utils/escapeRegExp.js +4 -0
  226. package/dist/utils/escapeRegExp.js.map +1 -0
  227. package/dist/utils/formatDate.d.ts +6 -0
  228. package/dist/utils/formatDate.d.ts.map +1 -0
  229. package/dist/utils/formatDate.js +325 -0
  230. package/dist/utils/formatDate.js.map +1 -0
  231. package/dist/utils/padLeft.d.ts +2 -0
  232. package/dist/utils/padLeft.d.ts.map +1 -0
  233. package/dist/utils/padLeft.js +7 -0
  234. package/dist/utils/padLeft.js.map +1 -0
  235. package/dist/utils/uniq.d.ts +2 -0
  236. package/dist/utils/uniq.d.ts.map +1 -0
  237. package/dist/utils/uniq.js +4 -0
  238. package/dist/utils/uniq.js.map +1 -0
  239. package/dist/utils/wrapError.d.ts +10 -0
  240. package/dist/utils/wrapError.d.ts.map +1 -0
  241. package/dist/utils/wrapError.js +9 -0
  242. package/dist/utils/wrapError.js.map +1 -0
  243. package/package.json +58 -0
  244. package/src/DivKit.tsx +542 -0
  245. package/src/actions/array.ts +170 -0
  246. package/src/actions/copyToClipboard.ts +82 -0
  247. package/src/actions/dict.ts +71 -0
  248. package/src/actions/index.ts +11 -0
  249. package/src/actions/updateStructure.ts +134 -0
  250. package/src/components/DivComponent.tsx +75 -0
  251. package/src/components/README.md +230 -0
  252. package/src/components/container/DivContainer.tsx +222 -0
  253. package/src/components/container/index.ts +2 -0
  254. package/src/components/image/DivImage.tsx +172 -0
  255. package/src/components/image/index.ts +2 -0
  256. package/src/components/index.ts +20 -0
  257. package/src/components/state/DivState.tsx +146 -0
  258. package/src/components/state/index.ts +2 -0
  259. package/src/components/text/DivText.tsx +186 -0
  260. package/src/components/text/index.ts +2 -0
  261. package/src/components/utilities/Outer.tsx +239 -0
  262. package/src/components/utilities/README.md +175 -0
  263. package/src/components/utilities/Unknown.tsx +60 -0
  264. package/src/components/utilities/index.ts +4 -0
  265. package/src/context/ActionContext.tsx +37 -0
  266. package/src/context/DivKitContext.tsx +54 -0
  267. package/src/context/EnabledContext.tsx +50 -0
  268. package/src/context/StateContext.tsx +75 -0
  269. package/src/context/index.ts +33 -0
  270. package/src/expressions/ast.d.ts +101 -0
  271. package/src/expressions/bigint.ts +38 -0
  272. package/src/expressions/const.ts +16 -0
  273. package/src/expressions/eval.ts +669 -0
  274. package/src/expressions/expressions.peggy +235 -0
  275. package/src/expressions/expressions.ts +2854 -0
  276. package/src/expressions/funcs/array.ts +412 -0
  277. package/src/expressions/funcs/colors.ts +100 -0
  278. package/src/expressions/funcs/customFuncs.ts +139 -0
  279. package/src/expressions/funcs/datetime.ts +232 -0
  280. package/src/expressions/funcs/dict.ts +207 -0
  281. package/src/expressions/funcs/funcs.ts +323 -0
  282. package/src/expressions/funcs/index.ts +23 -0
  283. package/src/expressions/funcs/interval.ts +76 -0
  284. package/src/expressions/funcs/math.ts +395 -0
  285. package/src/expressions/funcs/std.ts +392 -0
  286. package/src/expressions/funcs/stored.ts +62 -0
  287. package/src/expressions/funcs/strings.ts +200 -0
  288. package/src/expressions/funcs/trigonometry.ts +108 -0
  289. package/src/expressions/json.ts +367 -0
  290. package/src/expressions/parserCache.ts +32 -0
  291. package/src/expressions/simpleUnescapeString.ts +57 -0
  292. package/src/expressions/utils.ts +271 -0
  293. package/src/expressions/variable.ts +429 -0
  294. package/src/expressions/walk.ts +43 -0
  295. package/src/hooks/README.md +265 -0
  296. package/src/hooks/index.ts +28 -0
  297. package/src/hooks/useAction.ts +152 -0
  298. package/src/hooks/useDerivedFromVars.ts +187 -0
  299. package/src/hooks/useVariable.ts +157 -0
  300. package/src/index.ts +97 -0
  301. package/src/stores/createObservable.ts +64 -0
  302. package/src/types/alignment.d.ts +13 -0
  303. package/src/types/background.d.ts +71 -0
  304. package/src/types/base.d.ts +224 -0
  305. package/src/types/border.d.ts +46 -0
  306. package/src/types/componentContext.d.ts +98 -0
  307. package/src/types/container.d.ts +40 -0
  308. package/src/types/edgeInserts.d.ts +9 -0
  309. package/src/types/general.d.ts +3 -0
  310. package/src/types/image.d.ts +33 -0
  311. package/src/types/imageScale.d.ts +1 -0
  312. package/src/types/layoutParams.d.ts +27 -0
  313. package/src/types/sizes.d.ts +37 -0
  314. package/src/types/state.d.ts +19 -0
  315. package/src/types/text.d.ts +126 -0
  316. package/src/utils/applyTemplate.ts +145 -0
  317. package/src/utils/correctColor.ts +102 -0
  318. package/src/utils/escapeRegExp.ts +3 -0
  319. package/src/utils/formatDate.ts +385 -0
  320. package/src/utils/padLeft.ts +6 -0
  321. package/src/utils/uniq.ts +3 -0
  322. package/src/utils/wrapError.ts +21 -0
@@ -0,0 +1,2854 @@
1
+ // @ts-nocheck
2
+ // Generated by Peggy 3.0.2.
3
+ //
4
+ // https://peggyjs.org/
5
+
6
+
7
+ import { toBigInt } from './bigint';
8
+
9
+ function buildConditionalExpression(expr, tail) {
10
+ if (tail && tail[3] && tail[7]) {
11
+ return {type: 'ConditionalExpression', test: expr, consequent: tail[3], alternate: tail[7]};
12
+ }
13
+
14
+ return expr;
15
+ }
16
+
17
+ function buildTryExpression(expr, tail) {
18
+ if (tail && tail[3]) {
19
+ return {type: 'TryExpression', test: expr, alternate: tail[3]};
20
+ }
21
+
22
+ return expr;
23
+ }
24
+
25
+ function buildBinaryExpression(head, tail) {
26
+ if (!tail.length) {
27
+ return head;
28
+ }
29
+
30
+ return tail.reduce((result, element) => {
31
+ return {
32
+ type: 'BinaryExpression',
33
+ operator: element[1],
34
+ left: result,
35
+ right: element[3]
36
+ };
37
+ }, head);
38
+ }
39
+
40
+ function buildLogicalExpression(head, tail) {
41
+ if (!tail.length) {
42
+ return head;
43
+ }
44
+
45
+ return tail.reduce((result, element) => {
46
+ return {
47
+ type: 'LogicalExpression',
48
+ operator: element[1],
49
+ left: result,
50
+ right: element[3]
51
+ };
52
+ }, head);
53
+ }
54
+
55
+ function buildMethodCall(head, tail) {
56
+ if (!tail.length) {
57
+ return head;
58
+ }
59
+
60
+ return tail.reduce((result, element) => {
61
+ if (!element[5]) {
62
+ throw new Error('Method expected after .');
63
+ }
64
+ return {
65
+ type: 'MethodExpression',
66
+ object: result,
67
+ method: element[3],
68
+ arguments: element[5][2]
69
+ };
70
+ }, head);
71
+ }
72
+
73
+ function buildVariableOrBoolean(txt) {
74
+ if (txt === 'true' || txt === 'false') {
75
+ return {type: 'BooleanLiteral', value: txt === 'true'};
76
+ }
77
+
78
+ return {type: 'Variable', id: {type: 'Identifier', name: txt}};
79
+ }
80
+
81
+ function buildString(list) {
82
+ if (list.every(it => typeof it === 'string')) {
83
+ return {type: 'StringLiteral', value: list.join('')};
84
+ }
85
+ let res = list.reduce((result, element) => {
86
+ if (typeof element === 'string' && typeof result[result.length - 1] === 'string') {
87
+ result[result.length - 1] += element;
88
+ } else {
89
+ result.push(element);
90
+ }
91
+ return result;
92
+ }, []).reduce((result, element) => {
93
+ if (typeof element === 'string') {
94
+ result.quasis.push({type: 'StringLiteral', value: element});
95
+ } else {
96
+ if (result.quasis.length === result.expressions.length) {
97
+ result.quasis.push({type: 'StringLiteral', value: ''});
98
+ }
99
+ result.expressions.push(element);
100
+ }
101
+ return result;
102
+ }, {
103
+ type: 'TemplateLiteral',
104
+ quasis: [],
105
+ expressions: []
106
+ });
107
+
108
+ if (res.quasis.length === res.expressions.length) {
109
+ res.quasis.push({type: 'StringLiteral', value: ''});
110
+ }
111
+
112
+ return res;
113
+ }
114
+
115
+ function convertToInt64(str) {
116
+ try {
117
+ return toBigInt(str);
118
+ } catch (_err) {
119
+ throw new Error(`Value ${str} can't be converted to Integer type.`);
120
+ }
121
+ }
122
+
123
+ function escapeChar(char) {
124
+ if (char === "'" || char === '\\') {
125
+ return char;
126
+ }
127
+ throw new Error('Incorrect string escape');
128
+ }
129
+
130
+ function peg$subclass(child, parent) {
131
+ function C() { this.constructor = child; }
132
+ C.prototype = parent.prototype;
133
+ child.prototype = new C();
134
+ }
135
+
136
+ function peg$SyntaxError(message, expected, found, location) {
137
+ var self = Error.call(this, message);
138
+ // istanbul ignore next Check is a necessary evil to support older environments
139
+ if (Object.setPrototypeOf) {
140
+ Object.setPrototypeOf(self, peg$SyntaxError.prototype);
141
+ }
142
+ self.expected = expected;
143
+ self.found = found;
144
+ self.location = location;
145
+ self.name = "SyntaxError";
146
+ return self;
147
+ }
148
+
149
+ peg$subclass(peg$SyntaxError, Error);
150
+
151
+ function peg$padEnd(str, targetLength, padString) {
152
+ padString = padString || " ";
153
+ if (str.length > targetLength) { return str; }
154
+ targetLength -= str.length;
155
+ padString += padString.repeat(targetLength);
156
+ return str + padString.slice(0, targetLength);
157
+ }
158
+
159
+ peg$SyntaxError.prototype.format = function(sources) {
160
+ var str = "Error: " + this.message;
161
+ if (this.location) {
162
+ var src = null;
163
+ var k;
164
+ for (k = 0; k < sources.length; k++) {
165
+ if (sources[k].source === this.location.source) {
166
+ src = sources[k].text.split(/\r\n|\n|\r/g);
167
+ break;
168
+ }
169
+ }
170
+ var s = this.location.start;
171
+ var offset_s = (this.location.source && (typeof this.location.source.offset === "function"))
172
+ ? this.location.source.offset(s)
173
+ : s;
174
+ var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column;
175
+ if (src) {
176
+ var e = this.location.end;
177
+ var filler = peg$padEnd("", offset_s.line.toString().length, ' ');
178
+ var line = src[s.line - 1];
179
+ var last = s.line === e.line ? e.column : line.length + 1;
180
+ var hatLen = (last - s.column) || 1;
181
+ str += "\n --> " + loc + "\n"
182
+ + filler + " |\n"
183
+ + offset_s.line + " | " + line + "\n"
184
+ + filler + " | " + peg$padEnd("", s.column - 1, ' ')
185
+ + peg$padEnd("", hatLen, "^");
186
+ } else {
187
+ str += "\n at " + loc;
188
+ }
189
+ }
190
+ return str;
191
+ };
192
+
193
+ peg$SyntaxError.buildMessage = function(expected, found) {
194
+ var DESCRIBE_EXPECTATION_FNS = {
195
+ literal: function(expectation) {
196
+ return "\"" + literalEscape(expectation.text) + "\"";
197
+ },
198
+
199
+ class: function(expectation) {
200
+ var escapedParts = expectation.parts.map(function(part) {
201
+ return Array.isArray(part)
202
+ ? classEscape(part[0]) + "-" + classEscape(part[1])
203
+ : classEscape(part);
204
+ });
205
+
206
+ return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
207
+ },
208
+
209
+ any: function() {
210
+ return "any character";
211
+ },
212
+
213
+ end: function() {
214
+ return "end of input";
215
+ },
216
+
217
+ other: function(expectation) {
218
+ return expectation.description;
219
+ }
220
+ };
221
+
222
+ function hex(ch) {
223
+ return ch.charCodeAt(0).toString(16).toUpperCase();
224
+ }
225
+
226
+ function literalEscape(s) {
227
+ return s
228
+ .replace(/\\/g, "\\\\")
229
+ .replace(/"/g, "\\\"")
230
+ .replace(/\0/g, "\\0")
231
+ .replace(/\t/g, "\\t")
232
+ .replace(/\n/g, "\\n")
233
+ .replace(/\r/g, "\\r")
234
+ .replace(/[\x00-\x0F]/g, function(ch) { return "\\x0" + hex(ch); })
235
+ .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); });
236
+ }
237
+
238
+ function classEscape(s) {
239
+ return s
240
+ .replace(/\\/g, "\\\\")
241
+ .replace(/\]/g, "\\]")
242
+ .replace(/\^/g, "\\^")
243
+ .replace(/-/g, "\\-")
244
+ .replace(/\0/g, "\\0")
245
+ .replace(/\t/g, "\\t")
246
+ .replace(/\n/g, "\\n")
247
+ .replace(/\r/g, "\\r")
248
+ .replace(/[\x00-\x0F]/g, function(ch) { return "\\x0" + hex(ch); })
249
+ .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); });
250
+ }
251
+
252
+ function describeExpectation(expectation) {
253
+ return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
254
+ }
255
+
256
+ function describeExpected(expected) {
257
+ var descriptions = expected.map(describeExpectation);
258
+ var i, j;
259
+
260
+ descriptions.sort();
261
+
262
+ if (descriptions.length > 0) {
263
+ for (i = 1, j = 1; i < descriptions.length; i++) {
264
+ if (descriptions[i - 1] !== descriptions[i]) {
265
+ descriptions[j] = descriptions[i];
266
+ j++;
267
+ }
268
+ }
269
+ descriptions.length = j;
270
+ }
271
+
272
+ switch (descriptions.length) {
273
+ case 1:
274
+ return descriptions[0];
275
+
276
+ case 2:
277
+ return descriptions[0] + " or " + descriptions[1];
278
+
279
+ default:
280
+ return descriptions.slice(0, -1).join(", ")
281
+ + ", or "
282
+ + descriptions[descriptions.length - 1];
283
+ }
284
+ }
285
+
286
+ function describeFound(found) {
287
+ return found ? "\"" + literalEscape(found) + "\"" : "end of input";
288
+ }
289
+
290
+ return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";
291
+ };
292
+
293
+ function peg$parse(input, options) {
294
+ options = options !== undefined ? options : {};
295
+
296
+ var peg$FAILED = {};
297
+ var peg$source = options.grammarSource;
298
+
299
+ var peg$startRuleFunctions = { start: peg$parsestart, JsonStringContents: peg$parseJsonStringContents };
300
+ var peg$startRuleFunction = peg$parsestart;
301
+
302
+ var peg$c0 = "@{";
303
+ var peg$c1 = "}";
304
+ var peg$c2 = "@{}";
305
+ var peg$c3 = "\\";
306
+ var peg$c4 = "?";
307
+ var peg$c5 = ":";
308
+ var peg$c6 = "!:";
309
+ var peg$c7 = "||";
310
+ var peg$c8 = "&&";
311
+ var peg$c9 = "==";
312
+ var peg$c10 = "!=";
313
+ var peg$c11 = ">=";
314
+ var peg$c12 = ">";
315
+ var peg$c13 = "<=";
316
+ var peg$c14 = "<";
317
+ var peg$c15 = "+";
318
+ var peg$c16 = "-";
319
+ var peg$c17 = "/";
320
+ var peg$c18 = "*";
321
+ var peg$c19 = "%";
322
+ var peg$c20 = "!";
323
+ var peg$c21 = ".";
324
+ var peg$c22 = "(";
325
+ var peg$c23 = ")";
326
+ var peg$c24 = ",";
327
+ var peg$c25 = "'";
328
+ var peg$c26 = "e";
329
+ var peg$c27 = "E";
330
+
331
+ var peg$r0 = /^[^}]/;
332
+ var peg$r1 = /^[^'}]/;
333
+ var peg$r2 = /^[0-9]/;
334
+ var peg$r3 = /^[a-zA-Z_]/;
335
+ var peg$r4 = /^[a-zA-Z_0-9]/;
336
+ var peg$r5 = /^[ \t\r\n]/;
337
+
338
+ var peg$e0 = peg$literalExpectation("@{", false);
339
+ var peg$e1 = peg$literalExpectation("}", false);
340
+ var peg$e2 = peg$literalExpectation("@{}", false);
341
+ var peg$e3 = peg$literalExpectation("\\", false);
342
+ var peg$e4 = peg$anyExpectation();
343
+ var peg$e5 = peg$classExpectation(["}"], true, false);
344
+ var peg$e6 = peg$literalExpectation("?", false);
345
+ var peg$e7 = peg$literalExpectation(":", false);
346
+ var peg$e8 = peg$literalExpectation("!:", false);
347
+ var peg$e9 = peg$literalExpectation("||", false);
348
+ var peg$e10 = peg$literalExpectation("&&", false);
349
+ var peg$e11 = peg$literalExpectation("==", false);
350
+ var peg$e12 = peg$literalExpectation("!=", false);
351
+ var peg$e13 = peg$literalExpectation(">=", false);
352
+ var peg$e14 = peg$literalExpectation(">", false);
353
+ var peg$e15 = peg$literalExpectation("<=", false);
354
+ var peg$e16 = peg$literalExpectation("<", false);
355
+ var peg$e17 = peg$literalExpectation("+", false);
356
+ var peg$e18 = peg$literalExpectation("-", false);
357
+ var peg$e19 = peg$literalExpectation("/", false);
358
+ var peg$e20 = peg$literalExpectation("*", false);
359
+ var peg$e21 = peg$literalExpectation("%", false);
360
+ var peg$e22 = peg$literalExpectation("!", false);
361
+ var peg$e23 = peg$literalExpectation(".", false);
362
+ var peg$e24 = peg$literalExpectation("(", false);
363
+ var peg$e25 = peg$literalExpectation(")", false);
364
+ var peg$e26 = peg$literalExpectation(",", false);
365
+ var peg$e27 = peg$otherExpectation("string");
366
+ var peg$e28 = peg$literalExpectation("'", false);
367
+ var peg$e29 = peg$classExpectation(["'", "}"], true, false);
368
+ var peg$e30 = peg$otherExpectation("integer");
369
+ var peg$e31 = peg$classExpectation([["0", "9"]], false, false);
370
+ var peg$e32 = peg$otherExpectation("number");
371
+ var peg$e33 = peg$literalExpectation("e", false);
372
+ var peg$e34 = peg$literalExpectation("E", false);
373
+ var peg$e35 = peg$classExpectation([["a", "z"], ["A", "Z"], "_"], false, false);
374
+ var peg$e36 = peg$classExpectation([["a", "z"], ["A", "Z"], "_", ["0", "9"]], false, false);
375
+ var peg$e37 = peg$otherExpectation("whitespace");
376
+ var peg$e38 = peg$classExpectation([" ", "\t", "\r", "\n"], false, false);
377
+
378
+ var peg$f0 = function(expr) { return expr; };
379
+ var peg$f1 = function(list) { return buildString(list); };
380
+ var peg$f2 = function(expr) { return expr; };
381
+ var peg$f3 = function() { return ''; };
382
+ var peg$f4 = function() { return text(); };
383
+ var peg$f5 = function() { throw new Error("Error tokenizing '" + input + "'."); };
384
+ var peg$f6 = function() { throw new Error("Error tokenizing '" + input + "'."); };
385
+ var peg$f7 = function(str) { return str; };
386
+ var peg$f8 = function(char) { return escapeChar(char); };
387
+ var peg$f9 = function() { throw new Error("Error tokenizing '" + input + "'."); };
388
+ var peg$f10 = function(expr, tail) { return buildConditionalExpression(expr, tail); };
389
+ var peg$f11 = function(expr, tail) { return buildTryExpression(expr, tail); };
390
+ var peg$f12 = function(head, tail) { return buildLogicalExpression(head, tail); };
391
+ var peg$f13 = function(head, tail) { return buildLogicalExpression(head, tail); };
392
+ var peg$f14 = function(head, tail) { return buildBinaryExpression(head, tail); };
393
+ var peg$f15 = function(head, tail) { return buildBinaryExpression(head, tail); };
394
+ var peg$f16 = function(head, tail) { return buildBinaryExpression(head, tail); };
395
+ var peg$f17 = function(head, tail) { return buildBinaryExpression(head, tail); };
396
+ var peg$f18 = function(val) { return val; };
397
+ var peg$f19 = function(val) { return val; };
398
+ var peg$f20 = function(op, expr) { return {type: 'UnaryExpression', operator: op, argument: expr}; };
399
+ var peg$f21 = function() { throw new Error("Incorrect unary operator"); };
400
+ var peg$f22 = function(head, tail) { return buildMethodCall(head, tail); };
401
+ var peg$f23 = function(id, args) { return {type: 'CallExpression', callee: id, arguments: args}; };
402
+ var peg$f24 = function(expr, list) { return [expr, ...list]; };
403
+ var peg$f25 = function(expr) { return expr; };
404
+ var peg$f26 = function(str) { return str; };
405
+ var peg$f27 = function(list) { return buildString(list); };
406
+ var peg$f28 = function(expr) { return expr; };
407
+ var peg$f29 = function() { return ''; };
408
+ var peg$f30 = function() { return text(); };
409
+ var peg$f31 = function() { throw new Error("Error tokenizing '" + input + "'."); };
410
+ var peg$f32 = function() { throw new Error("Error tokenizing '" + input + "'."); };
411
+ var peg$f33 = function(str) { return str; };
412
+ var peg$f34 = function(char) { return escapeChar(char); };
413
+ var peg$f35 = function() { throw new Error("Error tokenizing '" + input + "'."); };
414
+ var peg$f36 = function() { return {type: 'IntegerLiteral', value: convertToInt64(text())}; };
415
+ var peg$f37 = function() { return {type: 'NumberLiteral', value: parseFloat(text())}; };
416
+ var peg$f38 = function() { return {type: 'NumberLiteral', value: parseFloat(text())}; };
417
+ var peg$f39 = function() { const txt = text(); if (/\.\./.test(txt) || /\.$/.test(txt)) {throw new Error('Unexpected token: .')} return buildVariableOrBoolean(txt); };
418
+ var peg$f40 = function() { return {type: 'Identifier', name: text()}; };
419
+ var peg$currPos = 0;
420
+ var peg$savedPos = 0;
421
+ var peg$posDetailsCache = [{ line: 1, column: 1 }];
422
+ var peg$maxFailPos = 0;
423
+ var peg$maxFailExpected = [];
424
+ var peg$silentFails = 0;
425
+
426
+ var peg$result;
427
+
428
+ if ("startRule" in options) {
429
+ if (!(options.startRule in peg$startRuleFunctions)) {
430
+ throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
431
+ }
432
+
433
+ peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
434
+ }
435
+
436
+ function text() {
437
+ return input.substring(peg$savedPos, peg$currPos);
438
+ }
439
+
440
+ function offset() {
441
+ return peg$savedPos;
442
+ }
443
+
444
+ function range() {
445
+ return {
446
+ source: peg$source,
447
+ start: peg$savedPos,
448
+ end: peg$currPos
449
+ };
450
+ }
451
+
452
+ function location() {
453
+ return peg$computeLocation(peg$savedPos, peg$currPos);
454
+ }
455
+
456
+ function expected(description, location) {
457
+ location = location !== undefined
458
+ ? location
459
+ : peg$computeLocation(peg$savedPos, peg$currPos);
460
+
461
+ throw peg$buildStructuredError(
462
+ [peg$otherExpectation(description)],
463
+ input.substring(peg$savedPos, peg$currPos),
464
+ location
465
+ );
466
+ }
467
+
468
+ function error(message, location) {
469
+ location = location !== undefined
470
+ ? location
471
+ : peg$computeLocation(peg$savedPos, peg$currPos);
472
+
473
+ throw peg$buildSimpleError(message, location);
474
+ }
475
+
476
+ function peg$literalExpectation(text, ignoreCase) {
477
+ return { type: "literal", text: text, ignoreCase: ignoreCase };
478
+ }
479
+
480
+ function peg$classExpectation(parts, inverted, ignoreCase) {
481
+ return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase };
482
+ }
483
+
484
+ function peg$anyExpectation() {
485
+ return { type: "any" };
486
+ }
487
+
488
+ function peg$endExpectation() {
489
+ return { type: "end" };
490
+ }
491
+
492
+ function peg$otherExpectation(description) {
493
+ return { type: "other", description: description };
494
+ }
495
+
496
+ function peg$computePosDetails(pos) {
497
+ var details = peg$posDetailsCache[pos];
498
+ var p;
499
+
500
+ if (details) {
501
+ return details;
502
+ } else {
503
+ p = pos - 1;
504
+ while (!peg$posDetailsCache[p]) {
505
+ p--;
506
+ }
507
+
508
+ details = peg$posDetailsCache[p];
509
+ details = {
510
+ line: details.line,
511
+ column: details.column
512
+ };
513
+
514
+ while (p < pos) {
515
+ if (input.charCodeAt(p) === 10) {
516
+ details.line++;
517
+ details.column = 1;
518
+ } else {
519
+ details.column++;
520
+ }
521
+
522
+ p++;
523
+ }
524
+
525
+ peg$posDetailsCache[pos] = details;
526
+
527
+ return details;
528
+ }
529
+ }
530
+
531
+ function peg$computeLocation(startPos, endPos, offset) {
532
+ var startPosDetails = peg$computePosDetails(startPos);
533
+ var endPosDetails = peg$computePosDetails(endPos);
534
+
535
+ var res = {
536
+ source: peg$source,
537
+ start: {
538
+ offset: startPos,
539
+ line: startPosDetails.line,
540
+ column: startPosDetails.column
541
+ },
542
+ end: {
543
+ offset: endPos,
544
+ line: endPosDetails.line,
545
+ column: endPosDetails.column
546
+ }
547
+ };
548
+ if (offset && peg$source && (typeof peg$source.offset === "function")) {
549
+ res.start = peg$source.offset(res.start);
550
+ res.end = peg$source.offset(res.end);
551
+ }
552
+ return res;
553
+ }
554
+
555
+ function peg$fail(expected) {
556
+ if (peg$currPos < peg$maxFailPos) { return; }
557
+
558
+ if (peg$currPos > peg$maxFailPos) {
559
+ peg$maxFailPos = peg$currPos;
560
+ peg$maxFailExpected = [];
561
+ }
562
+
563
+ peg$maxFailExpected.push(expected);
564
+ }
565
+
566
+ function peg$buildSimpleError(message, location) {
567
+ return new peg$SyntaxError(message, null, null, location);
568
+ }
569
+
570
+ function peg$buildStructuredError(expected, found, location) {
571
+ return new peg$SyntaxError(
572
+ peg$SyntaxError.buildMessage(expected, found),
573
+ expected,
574
+ found,
575
+ location
576
+ );
577
+ }
578
+
579
+ function peg$parsestart() {
580
+ var s0, s1, s2, s3;
581
+
582
+ s0 = peg$currPos;
583
+ s1 = peg$parse_();
584
+ s2 = peg$parseExpression();
585
+ if (s2 !== peg$FAILED) {
586
+ s3 = peg$parse_();
587
+ peg$savedPos = s0;
588
+ s0 = peg$f0(s2);
589
+ } else {
590
+ peg$currPos = s0;
591
+ s0 = peg$FAILED;
592
+ }
593
+
594
+ return s0;
595
+ }
596
+
597
+ function peg$parseJsonStringContents() {
598
+ var s0, s1, s2;
599
+
600
+ s0 = peg$currPos;
601
+ s1 = [];
602
+ s2 = peg$parseJsonStringChar();
603
+ while (s2 !== peg$FAILED) {
604
+ s1.push(s2);
605
+ s2 = peg$parseJsonStringChar();
606
+ }
607
+ peg$savedPos = s0;
608
+ s1 = peg$f1(s1);
609
+ s0 = s1;
610
+
611
+ return s0;
612
+ }
613
+
614
+ function peg$parseJsonStringChar() {
615
+ var s0, s1, s2, s3, s4, s5;
616
+
617
+ s0 = peg$currPos;
618
+ if (input.substr(peg$currPos, 2) === peg$c0) {
619
+ s1 = peg$c0;
620
+ peg$currPos += 2;
621
+ } else {
622
+ s1 = peg$FAILED;
623
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
624
+ }
625
+ if (s1 !== peg$FAILED) {
626
+ s2 = peg$parse_();
627
+ s3 = peg$parseExpression();
628
+ if (s3 !== peg$FAILED) {
629
+ s4 = peg$parse_();
630
+ if (input.charCodeAt(peg$currPos) === 125) {
631
+ s5 = peg$c1;
632
+ peg$currPos++;
633
+ } else {
634
+ s5 = peg$FAILED;
635
+ if (peg$silentFails === 0) { peg$fail(peg$e1); }
636
+ }
637
+ if (s5 !== peg$FAILED) {
638
+ peg$savedPos = s0;
639
+ s0 = peg$f2(s3);
640
+ } else {
641
+ peg$currPos = s0;
642
+ s0 = peg$FAILED;
643
+ }
644
+ } else {
645
+ peg$currPos = s0;
646
+ s0 = peg$FAILED;
647
+ }
648
+ } else {
649
+ peg$currPos = s0;
650
+ s0 = peg$FAILED;
651
+ }
652
+ if (s0 === peg$FAILED) {
653
+ s0 = peg$currPos;
654
+ if (input.substr(peg$currPos, 3) === peg$c2) {
655
+ s1 = peg$c2;
656
+ peg$currPos += 3;
657
+ } else {
658
+ s1 = peg$FAILED;
659
+ if (peg$silentFails === 0) { peg$fail(peg$e2); }
660
+ }
661
+ if (s1 !== peg$FAILED) {
662
+ peg$savedPos = s0;
663
+ s1 = peg$f3();
664
+ }
665
+ s0 = s1;
666
+ if (s0 === peg$FAILED) {
667
+ s0 = peg$currPos;
668
+ s1 = peg$currPos;
669
+ peg$silentFails++;
670
+ if (input.charCodeAt(peg$currPos) === 92) {
671
+ s2 = peg$c3;
672
+ peg$currPos++;
673
+ } else {
674
+ s2 = peg$FAILED;
675
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
676
+ }
677
+ if (s2 === peg$FAILED) {
678
+ if (input.substr(peg$currPos, 2) === peg$c0) {
679
+ s2 = peg$c0;
680
+ peg$currPos += 2;
681
+ } else {
682
+ s2 = peg$FAILED;
683
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
684
+ }
685
+ }
686
+ peg$silentFails--;
687
+ if (s2 === peg$FAILED) {
688
+ s1 = undefined;
689
+ } else {
690
+ peg$currPos = s1;
691
+ s1 = peg$FAILED;
692
+ }
693
+ if (s1 !== peg$FAILED) {
694
+ if (input.length > peg$currPos) {
695
+ s2 = input.charAt(peg$currPos);
696
+ peg$currPos++;
697
+ } else {
698
+ s2 = peg$FAILED;
699
+ if (peg$silentFails === 0) { peg$fail(peg$e4); }
700
+ }
701
+ if (s2 !== peg$FAILED) {
702
+ peg$savedPos = s0;
703
+ s0 = peg$f4();
704
+ } else {
705
+ peg$currPos = s0;
706
+ s0 = peg$FAILED;
707
+ }
708
+ } else {
709
+ peg$currPos = s0;
710
+ s0 = peg$FAILED;
711
+ }
712
+ if (s0 === peg$FAILED) {
713
+ s0 = peg$currPos;
714
+ if (input.substr(peg$currPos, 2) === peg$c0) {
715
+ s1 = peg$c0;
716
+ peg$currPos += 2;
717
+ } else {
718
+ s1 = peg$FAILED;
719
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
720
+ }
721
+ if (s1 !== peg$FAILED) {
722
+ s2 = [];
723
+ if (peg$r0.test(input.charAt(peg$currPos))) {
724
+ s3 = input.charAt(peg$currPos);
725
+ peg$currPos++;
726
+ } else {
727
+ s3 = peg$FAILED;
728
+ if (peg$silentFails === 0) { peg$fail(peg$e5); }
729
+ }
730
+ if (s3 !== peg$FAILED) {
731
+ while (s3 !== peg$FAILED) {
732
+ s2.push(s3);
733
+ if (peg$r0.test(input.charAt(peg$currPos))) {
734
+ s3 = input.charAt(peg$currPos);
735
+ peg$currPos++;
736
+ } else {
737
+ s3 = peg$FAILED;
738
+ if (peg$silentFails === 0) { peg$fail(peg$e5); }
739
+ }
740
+ }
741
+ } else {
742
+ s2 = peg$FAILED;
743
+ }
744
+ if (s2 !== peg$FAILED) {
745
+ if (input.charCodeAt(peg$currPos) === 125) {
746
+ s3 = peg$c1;
747
+ peg$currPos++;
748
+ } else {
749
+ s3 = peg$FAILED;
750
+ if (peg$silentFails === 0) { peg$fail(peg$e1); }
751
+ }
752
+ if (s3 !== peg$FAILED) {
753
+ peg$savedPos = s0;
754
+ s0 = peg$f5();
755
+ } else {
756
+ peg$currPos = s0;
757
+ s0 = peg$FAILED;
758
+ }
759
+ } else {
760
+ peg$currPos = s0;
761
+ s0 = peg$FAILED;
762
+ }
763
+ } else {
764
+ peg$currPos = s0;
765
+ s0 = peg$FAILED;
766
+ }
767
+ if (s0 === peg$FAILED) {
768
+ s0 = peg$currPos;
769
+ if (input.substr(peg$currPos, 2) === peg$c0) {
770
+ s1 = peg$c0;
771
+ peg$currPos += 2;
772
+ } else {
773
+ s1 = peg$FAILED;
774
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
775
+ }
776
+ if (s1 !== peg$FAILED) {
777
+ peg$savedPos = s0;
778
+ s1 = peg$f6();
779
+ }
780
+ s0 = s1;
781
+ if (s0 === peg$FAILED) {
782
+ s0 = peg$currPos;
783
+ if (input.charCodeAt(peg$currPos) === 92) {
784
+ s1 = peg$c3;
785
+ peg$currPos++;
786
+ } else {
787
+ s1 = peg$FAILED;
788
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
789
+ }
790
+ if (s1 !== peg$FAILED) {
791
+ if (input.substr(peg$currPos, 2) === peg$c0) {
792
+ s2 = peg$c0;
793
+ peg$currPos += 2;
794
+ } else {
795
+ s2 = peg$FAILED;
796
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
797
+ }
798
+ if (s2 !== peg$FAILED) {
799
+ peg$savedPos = s0;
800
+ s0 = peg$f7(s2);
801
+ } else {
802
+ peg$currPos = s0;
803
+ s0 = peg$FAILED;
804
+ }
805
+ } else {
806
+ peg$currPos = s0;
807
+ s0 = peg$FAILED;
808
+ }
809
+ if (s0 === peg$FAILED) {
810
+ s0 = peg$currPos;
811
+ if (input.charCodeAt(peg$currPos) === 92) {
812
+ s1 = peg$c3;
813
+ peg$currPos++;
814
+ } else {
815
+ s1 = peg$FAILED;
816
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
817
+ }
818
+ if (s1 !== peg$FAILED) {
819
+ if (input.length > peg$currPos) {
820
+ s2 = input.charAt(peg$currPos);
821
+ peg$currPos++;
822
+ } else {
823
+ s2 = peg$FAILED;
824
+ if (peg$silentFails === 0) { peg$fail(peg$e4); }
825
+ }
826
+ if (s2 !== peg$FAILED) {
827
+ peg$savedPos = s0;
828
+ s0 = peg$f8(s2);
829
+ } else {
830
+ peg$currPos = s0;
831
+ s0 = peg$FAILED;
832
+ }
833
+ } else {
834
+ peg$currPos = s0;
835
+ s0 = peg$FAILED;
836
+ }
837
+ if (s0 === peg$FAILED) {
838
+ s0 = peg$currPos;
839
+ if (input.charCodeAt(peg$currPos) === 92) {
840
+ s1 = peg$c3;
841
+ peg$currPos++;
842
+ } else {
843
+ s1 = peg$FAILED;
844
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
845
+ }
846
+ if (s1 !== peg$FAILED) {
847
+ peg$savedPos = s0;
848
+ s1 = peg$f9();
849
+ }
850
+ s0 = s1;
851
+ }
852
+ }
853
+ }
854
+ }
855
+ }
856
+ }
857
+ }
858
+
859
+ return s0;
860
+ }
861
+
862
+ function peg$parseExpression() {
863
+ var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;
864
+
865
+ s0 = peg$currPos;
866
+ s1 = peg$parseTry();
867
+ if (s1 !== peg$FAILED) {
868
+ s2 = peg$currPos;
869
+ s3 = peg$parse_();
870
+ if (input.charCodeAt(peg$currPos) === 63) {
871
+ s4 = peg$c4;
872
+ peg$currPos++;
873
+ } else {
874
+ s4 = peg$FAILED;
875
+ if (peg$silentFails === 0) { peg$fail(peg$e6); }
876
+ }
877
+ if (s4 !== peg$FAILED) {
878
+ s5 = peg$parse_();
879
+ s6 = peg$parseExpression();
880
+ if (s6 !== peg$FAILED) {
881
+ s7 = peg$parse_();
882
+ if (input.charCodeAt(peg$currPos) === 58) {
883
+ s8 = peg$c5;
884
+ peg$currPos++;
885
+ } else {
886
+ s8 = peg$FAILED;
887
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
888
+ }
889
+ if (s8 !== peg$FAILED) {
890
+ s9 = peg$parse_();
891
+ s10 = peg$parseExpression();
892
+ if (s10 !== peg$FAILED) {
893
+ s3 = [s3, s4, s5, s6, s7, s8, s9, s10];
894
+ s2 = s3;
895
+ } else {
896
+ peg$currPos = s2;
897
+ s2 = peg$FAILED;
898
+ }
899
+ } else {
900
+ peg$currPos = s2;
901
+ s2 = peg$FAILED;
902
+ }
903
+ } else {
904
+ peg$currPos = s2;
905
+ s2 = peg$FAILED;
906
+ }
907
+ } else {
908
+ peg$currPos = s2;
909
+ s2 = peg$FAILED;
910
+ }
911
+ if (s2 === peg$FAILED) {
912
+ s2 = null;
913
+ }
914
+ peg$savedPos = s0;
915
+ s0 = peg$f10(s1, s2);
916
+ } else {
917
+ peg$currPos = s0;
918
+ s0 = peg$FAILED;
919
+ }
920
+
921
+ return s0;
922
+ }
923
+
924
+ function peg$parseTry() {
925
+ var s0, s1, s2, s3, s4, s5, s6;
926
+
927
+ s0 = peg$currPos;
928
+ s1 = peg$parseOr();
929
+ if (s1 !== peg$FAILED) {
930
+ s2 = peg$currPos;
931
+ s3 = peg$parse_();
932
+ if (input.substr(peg$currPos, 2) === peg$c6) {
933
+ s4 = peg$c6;
934
+ peg$currPos += 2;
935
+ } else {
936
+ s4 = peg$FAILED;
937
+ if (peg$silentFails === 0) { peg$fail(peg$e8); }
938
+ }
939
+ if (s4 !== peg$FAILED) {
940
+ s5 = peg$parse_();
941
+ s6 = peg$parseExpression();
942
+ if (s6 !== peg$FAILED) {
943
+ s3 = [s3, s4, s5, s6];
944
+ s2 = s3;
945
+ } else {
946
+ peg$currPos = s2;
947
+ s2 = peg$FAILED;
948
+ }
949
+ } else {
950
+ peg$currPos = s2;
951
+ s2 = peg$FAILED;
952
+ }
953
+ if (s2 === peg$FAILED) {
954
+ s2 = null;
955
+ }
956
+ peg$savedPos = s0;
957
+ s0 = peg$f11(s1, s2);
958
+ } else {
959
+ peg$currPos = s0;
960
+ s0 = peg$FAILED;
961
+ }
962
+
963
+ return s0;
964
+ }
965
+
966
+ function peg$parseOr() {
967
+ var s0, s1, s2, s3, s4, s5, s6, s7;
968
+
969
+ s0 = peg$currPos;
970
+ s1 = peg$parseAnd();
971
+ if (s1 !== peg$FAILED) {
972
+ s2 = [];
973
+ s3 = peg$currPos;
974
+ s4 = peg$parse_();
975
+ if (input.substr(peg$currPos, 2) === peg$c7) {
976
+ s5 = peg$c7;
977
+ peg$currPos += 2;
978
+ } else {
979
+ s5 = peg$FAILED;
980
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
981
+ }
982
+ if (s5 !== peg$FAILED) {
983
+ s6 = peg$parse_();
984
+ s7 = peg$parseAnd();
985
+ if (s7 !== peg$FAILED) {
986
+ s4 = [s4, s5, s6, s7];
987
+ s3 = s4;
988
+ } else {
989
+ peg$currPos = s3;
990
+ s3 = peg$FAILED;
991
+ }
992
+ } else {
993
+ peg$currPos = s3;
994
+ s3 = peg$FAILED;
995
+ }
996
+ while (s3 !== peg$FAILED) {
997
+ s2.push(s3);
998
+ s3 = peg$currPos;
999
+ s4 = peg$parse_();
1000
+ if (input.substr(peg$currPos, 2) === peg$c7) {
1001
+ s5 = peg$c7;
1002
+ peg$currPos += 2;
1003
+ } else {
1004
+ s5 = peg$FAILED;
1005
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
1006
+ }
1007
+ if (s5 !== peg$FAILED) {
1008
+ s6 = peg$parse_();
1009
+ s7 = peg$parseAnd();
1010
+ if (s7 !== peg$FAILED) {
1011
+ s4 = [s4, s5, s6, s7];
1012
+ s3 = s4;
1013
+ } else {
1014
+ peg$currPos = s3;
1015
+ s3 = peg$FAILED;
1016
+ }
1017
+ } else {
1018
+ peg$currPos = s3;
1019
+ s3 = peg$FAILED;
1020
+ }
1021
+ }
1022
+ peg$savedPos = s0;
1023
+ s0 = peg$f12(s1, s2);
1024
+ } else {
1025
+ peg$currPos = s0;
1026
+ s0 = peg$FAILED;
1027
+ }
1028
+
1029
+ return s0;
1030
+ }
1031
+
1032
+ function peg$parseAnd() {
1033
+ var s0, s1, s2, s3, s4, s5, s6, s7;
1034
+
1035
+ s0 = peg$currPos;
1036
+ s1 = peg$parseEqual();
1037
+ if (s1 !== peg$FAILED) {
1038
+ s2 = [];
1039
+ s3 = peg$currPos;
1040
+ s4 = peg$parse_();
1041
+ if (input.substr(peg$currPos, 2) === peg$c8) {
1042
+ s5 = peg$c8;
1043
+ peg$currPos += 2;
1044
+ } else {
1045
+ s5 = peg$FAILED;
1046
+ if (peg$silentFails === 0) { peg$fail(peg$e10); }
1047
+ }
1048
+ if (s5 !== peg$FAILED) {
1049
+ s6 = peg$parse_();
1050
+ s7 = peg$parseEqual();
1051
+ if (s7 !== peg$FAILED) {
1052
+ s4 = [s4, s5, s6, s7];
1053
+ s3 = s4;
1054
+ } else {
1055
+ peg$currPos = s3;
1056
+ s3 = peg$FAILED;
1057
+ }
1058
+ } else {
1059
+ peg$currPos = s3;
1060
+ s3 = peg$FAILED;
1061
+ }
1062
+ while (s3 !== peg$FAILED) {
1063
+ s2.push(s3);
1064
+ s3 = peg$currPos;
1065
+ s4 = peg$parse_();
1066
+ if (input.substr(peg$currPos, 2) === peg$c8) {
1067
+ s5 = peg$c8;
1068
+ peg$currPos += 2;
1069
+ } else {
1070
+ s5 = peg$FAILED;
1071
+ if (peg$silentFails === 0) { peg$fail(peg$e10); }
1072
+ }
1073
+ if (s5 !== peg$FAILED) {
1074
+ s6 = peg$parse_();
1075
+ s7 = peg$parseEqual();
1076
+ if (s7 !== peg$FAILED) {
1077
+ s4 = [s4, s5, s6, s7];
1078
+ s3 = s4;
1079
+ } else {
1080
+ peg$currPos = s3;
1081
+ s3 = peg$FAILED;
1082
+ }
1083
+ } else {
1084
+ peg$currPos = s3;
1085
+ s3 = peg$FAILED;
1086
+ }
1087
+ }
1088
+ peg$savedPos = s0;
1089
+ s0 = peg$f13(s1, s2);
1090
+ } else {
1091
+ peg$currPos = s0;
1092
+ s0 = peg$FAILED;
1093
+ }
1094
+
1095
+ return s0;
1096
+ }
1097
+
1098
+ function peg$parseEqual() {
1099
+ var s0, s1, s2, s3, s4, s5, s6, s7;
1100
+
1101
+ s0 = peg$currPos;
1102
+ s1 = peg$parseComparison();
1103
+ if (s1 !== peg$FAILED) {
1104
+ s2 = [];
1105
+ s3 = peg$currPos;
1106
+ s4 = peg$parse_();
1107
+ if (input.substr(peg$currPos, 2) === peg$c9) {
1108
+ s5 = peg$c9;
1109
+ peg$currPos += 2;
1110
+ } else {
1111
+ s5 = peg$FAILED;
1112
+ if (peg$silentFails === 0) { peg$fail(peg$e11); }
1113
+ }
1114
+ if (s5 === peg$FAILED) {
1115
+ if (input.substr(peg$currPos, 2) === peg$c10) {
1116
+ s5 = peg$c10;
1117
+ peg$currPos += 2;
1118
+ } else {
1119
+ s5 = peg$FAILED;
1120
+ if (peg$silentFails === 0) { peg$fail(peg$e12); }
1121
+ }
1122
+ }
1123
+ if (s5 !== peg$FAILED) {
1124
+ s6 = peg$parse_();
1125
+ s7 = peg$parseComparison();
1126
+ if (s7 !== peg$FAILED) {
1127
+ s4 = [s4, s5, s6, s7];
1128
+ s3 = s4;
1129
+ } else {
1130
+ peg$currPos = s3;
1131
+ s3 = peg$FAILED;
1132
+ }
1133
+ } else {
1134
+ peg$currPos = s3;
1135
+ s3 = peg$FAILED;
1136
+ }
1137
+ while (s3 !== peg$FAILED) {
1138
+ s2.push(s3);
1139
+ s3 = peg$currPos;
1140
+ s4 = peg$parse_();
1141
+ if (input.substr(peg$currPos, 2) === peg$c9) {
1142
+ s5 = peg$c9;
1143
+ peg$currPos += 2;
1144
+ } else {
1145
+ s5 = peg$FAILED;
1146
+ if (peg$silentFails === 0) { peg$fail(peg$e11); }
1147
+ }
1148
+ if (s5 === peg$FAILED) {
1149
+ if (input.substr(peg$currPos, 2) === peg$c10) {
1150
+ s5 = peg$c10;
1151
+ peg$currPos += 2;
1152
+ } else {
1153
+ s5 = peg$FAILED;
1154
+ if (peg$silentFails === 0) { peg$fail(peg$e12); }
1155
+ }
1156
+ }
1157
+ if (s5 !== peg$FAILED) {
1158
+ s6 = peg$parse_();
1159
+ s7 = peg$parseComparison();
1160
+ if (s7 !== peg$FAILED) {
1161
+ s4 = [s4, s5, s6, s7];
1162
+ s3 = s4;
1163
+ } else {
1164
+ peg$currPos = s3;
1165
+ s3 = peg$FAILED;
1166
+ }
1167
+ } else {
1168
+ peg$currPos = s3;
1169
+ s3 = peg$FAILED;
1170
+ }
1171
+ }
1172
+ peg$savedPos = s0;
1173
+ s0 = peg$f14(s1, s2);
1174
+ } else {
1175
+ peg$currPos = s0;
1176
+ s0 = peg$FAILED;
1177
+ }
1178
+
1179
+ return s0;
1180
+ }
1181
+
1182
+ function peg$parseComparison() {
1183
+ var s0, s1, s2, s3, s4, s5, s6, s7;
1184
+
1185
+ s0 = peg$currPos;
1186
+ s1 = peg$parseSum();
1187
+ if (s1 !== peg$FAILED) {
1188
+ s2 = [];
1189
+ s3 = peg$currPos;
1190
+ s4 = peg$parse_();
1191
+ if (input.substr(peg$currPos, 2) === peg$c11) {
1192
+ s5 = peg$c11;
1193
+ peg$currPos += 2;
1194
+ } else {
1195
+ s5 = peg$FAILED;
1196
+ if (peg$silentFails === 0) { peg$fail(peg$e13); }
1197
+ }
1198
+ if (s5 === peg$FAILED) {
1199
+ if (input.charCodeAt(peg$currPos) === 62) {
1200
+ s5 = peg$c12;
1201
+ peg$currPos++;
1202
+ } else {
1203
+ s5 = peg$FAILED;
1204
+ if (peg$silentFails === 0) { peg$fail(peg$e14); }
1205
+ }
1206
+ if (s5 === peg$FAILED) {
1207
+ if (input.substr(peg$currPos, 2) === peg$c13) {
1208
+ s5 = peg$c13;
1209
+ peg$currPos += 2;
1210
+ } else {
1211
+ s5 = peg$FAILED;
1212
+ if (peg$silentFails === 0) { peg$fail(peg$e15); }
1213
+ }
1214
+ if (s5 === peg$FAILED) {
1215
+ if (input.charCodeAt(peg$currPos) === 60) {
1216
+ s5 = peg$c14;
1217
+ peg$currPos++;
1218
+ } else {
1219
+ s5 = peg$FAILED;
1220
+ if (peg$silentFails === 0) { peg$fail(peg$e16); }
1221
+ }
1222
+ }
1223
+ }
1224
+ }
1225
+ if (s5 !== peg$FAILED) {
1226
+ s6 = peg$parse_();
1227
+ s7 = peg$parseSum();
1228
+ if (s7 !== peg$FAILED) {
1229
+ s4 = [s4, s5, s6, s7];
1230
+ s3 = s4;
1231
+ } else {
1232
+ peg$currPos = s3;
1233
+ s3 = peg$FAILED;
1234
+ }
1235
+ } else {
1236
+ peg$currPos = s3;
1237
+ s3 = peg$FAILED;
1238
+ }
1239
+ while (s3 !== peg$FAILED) {
1240
+ s2.push(s3);
1241
+ s3 = peg$currPos;
1242
+ s4 = peg$parse_();
1243
+ if (input.substr(peg$currPos, 2) === peg$c11) {
1244
+ s5 = peg$c11;
1245
+ peg$currPos += 2;
1246
+ } else {
1247
+ s5 = peg$FAILED;
1248
+ if (peg$silentFails === 0) { peg$fail(peg$e13); }
1249
+ }
1250
+ if (s5 === peg$FAILED) {
1251
+ if (input.charCodeAt(peg$currPos) === 62) {
1252
+ s5 = peg$c12;
1253
+ peg$currPos++;
1254
+ } else {
1255
+ s5 = peg$FAILED;
1256
+ if (peg$silentFails === 0) { peg$fail(peg$e14); }
1257
+ }
1258
+ if (s5 === peg$FAILED) {
1259
+ if (input.substr(peg$currPos, 2) === peg$c13) {
1260
+ s5 = peg$c13;
1261
+ peg$currPos += 2;
1262
+ } else {
1263
+ s5 = peg$FAILED;
1264
+ if (peg$silentFails === 0) { peg$fail(peg$e15); }
1265
+ }
1266
+ if (s5 === peg$FAILED) {
1267
+ if (input.charCodeAt(peg$currPos) === 60) {
1268
+ s5 = peg$c14;
1269
+ peg$currPos++;
1270
+ } else {
1271
+ s5 = peg$FAILED;
1272
+ if (peg$silentFails === 0) { peg$fail(peg$e16); }
1273
+ }
1274
+ }
1275
+ }
1276
+ }
1277
+ if (s5 !== peg$FAILED) {
1278
+ s6 = peg$parse_();
1279
+ s7 = peg$parseSum();
1280
+ if (s7 !== peg$FAILED) {
1281
+ s4 = [s4, s5, s6, s7];
1282
+ s3 = s4;
1283
+ } else {
1284
+ peg$currPos = s3;
1285
+ s3 = peg$FAILED;
1286
+ }
1287
+ } else {
1288
+ peg$currPos = s3;
1289
+ s3 = peg$FAILED;
1290
+ }
1291
+ }
1292
+ peg$savedPos = s0;
1293
+ s0 = peg$f15(s1, s2);
1294
+ } else {
1295
+ peg$currPos = s0;
1296
+ s0 = peg$FAILED;
1297
+ }
1298
+
1299
+ return s0;
1300
+ }
1301
+
1302
+ function peg$parseSum() {
1303
+ var s0, s1, s2, s3, s4, s5, s6, s7;
1304
+
1305
+ s0 = peg$currPos;
1306
+ s1 = peg$parseFactor();
1307
+ if (s1 !== peg$FAILED) {
1308
+ s2 = [];
1309
+ s3 = peg$currPos;
1310
+ s4 = peg$parse_();
1311
+ if (input.charCodeAt(peg$currPos) === 43) {
1312
+ s5 = peg$c15;
1313
+ peg$currPos++;
1314
+ } else {
1315
+ s5 = peg$FAILED;
1316
+ if (peg$silentFails === 0) { peg$fail(peg$e17); }
1317
+ }
1318
+ if (s5 === peg$FAILED) {
1319
+ if (input.charCodeAt(peg$currPos) === 45) {
1320
+ s5 = peg$c16;
1321
+ peg$currPos++;
1322
+ } else {
1323
+ s5 = peg$FAILED;
1324
+ if (peg$silentFails === 0) { peg$fail(peg$e18); }
1325
+ }
1326
+ }
1327
+ if (s5 !== peg$FAILED) {
1328
+ s6 = peg$parse_();
1329
+ s7 = peg$parseFactor();
1330
+ if (s7 !== peg$FAILED) {
1331
+ s4 = [s4, s5, s6, s7];
1332
+ s3 = s4;
1333
+ } else {
1334
+ peg$currPos = s3;
1335
+ s3 = peg$FAILED;
1336
+ }
1337
+ } else {
1338
+ peg$currPos = s3;
1339
+ s3 = peg$FAILED;
1340
+ }
1341
+ while (s3 !== peg$FAILED) {
1342
+ s2.push(s3);
1343
+ s3 = peg$currPos;
1344
+ s4 = peg$parse_();
1345
+ if (input.charCodeAt(peg$currPos) === 43) {
1346
+ s5 = peg$c15;
1347
+ peg$currPos++;
1348
+ } else {
1349
+ s5 = peg$FAILED;
1350
+ if (peg$silentFails === 0) { peg$fail(peg$e17); }
1351
+ }
1352
+ if (s5 === peg$FAILED) {
1353
+ if (input.charCodeAt(peg$currPos) === 45) {
1354
+ s5 = peg$c16;
1355
+ peg$currPos++;
1356
+ } else {
1357
+ s5 = peg$FAILED;
1358
+ if (peg$silentFails === 0) { peg$fail(peg$e18); }
1359
+ }
1360
+ }
1361
+ if (s5 !== peg$FAILED) {
1362
+ s6 = peg$parse_();
1363
+ s7 = peg$parseFactor();
1364
+ if (s7 !== peg$FAILED) {
1365
+ s4 = [s4, s5, s6, s7];
1366
+ s3 = s4;
1367
+ } else {
1368
+ peg$currPos = s3;
1369
+ s3 = peg$FAILED;
1370
+ }
1371
+ } else {
1372
+ peg$currPos = s3;
1373
+ s3 = peg$FAILED;
1374
+ }
1375
+ }
1376
+ peg$savedPos = s0;
1377
+ s0 = peg$f16(s1, s2);
1378
+ } else {
1379
+ peg$currPos = s0;
1380
+ s0 = peg$FAILED;
1381
+ }
1382
+
1383
+ return s0;
1384
+ }
1385
+
1386
+ function peg$parseFactor() {
1387
+ var s0, s1, s2, s3, s4, s5, s6, s7;
1388
+
1389
+ s0 = peg$currPos;
1390
+ s1 = peg$parseUnaryExpression();
1391
+ if (s1 !== peg$FAILED) {
1392
+ s2 = [];
1393
+ s3 = peg$currPos;
1394
+ s4 = peg$parse_();
1395
+ if (input.charCodeAt(peg$currPos) === 47) {
1396
+ s5 = peg$c17;
1397
+ peg$currPos++;
1398
+ } else {
1399
+ s5 = peg$FAILED;
1400
+ if (peg$silentFails === 0) { peg$fail(peg$e19); }
1401
+ }
1402
+ if (s5 === peg$FAILED) {
1403
+ if (input.charCodeAt(peg$currPos) === 42) {
1404
+ s5 = peg$c18;
1405
+ peg$currPos++;
1406
+ } else {
1407
+ s5 = peg$FAILED;
1408
+ if (peg$silentFails === 0) { peg$fail(peg$e20); }
1409
+ }
1410
+ if (s5 === peg$FAILED) {
1411
+ if (input.charCodeAt(peg$currPos) === 37) {
1412
+ s5 = peg$c19;
1413
+ peg$currPos++;
1414
+ } else {
1415
+ s5 = peg$FAILED;
1416
+ if (peg$silentFails === 0) { peg$fail(peg$e21); }
1417
+ }
1418
+ }
1419
+ }
1420
+ if (s5 !== peg$FAILED) {
1421
+ s6 = peg$parse_();
1422
+ s7 = peg$parseUnaryExpression();
1423
+ if (s7 !== peg$FAILED) {
1424
+ s4 = [s4, s5, s6, s7];
1425
+ s3 = s4;
1426
+ } else {
1427
+ peg$currPos = s3;
1428
+ s3 = peg$FAILED;
1429
+ }
1430
+ } else {
1431
+ peg$currPos = s3;
1432
+ s3 = peg$FAILED;
1433
+ }
1434
+ while (s3 !== peg$FAILED) {
1435
+ s2.push(s3);
1436
+ s3 = peg$currPos;
1437
+ s4 = peg$parse_();
1438
+ if (input.charCodeAt(peg$currPos) === 47) {
1439
+ s5 = peg$c17;
1440
+ peg$currPos++;
1441
+ } else {
1442
+ s5 = peg$FAILED;
1443
+ if (peg$silentFails === 0) { peg$fail(peg$e19); }
1444
+ }
1445
+ if (s5 === peg$FAILED) {
1446
+ if (input.charCodeAt(peg$currPos) === 42) {
1447
+ s5 = peg$c18;
1448
+ peg$currPos++;
1449
+ } else {
1450
+ s5 = peg$FAILED;
1451
+ if (peg$silentFails === 0) { peg$fail(peg$e20); }
1452
+ }
1453
+ if (s5 === peg$FAILED) {
1454
+ if (input.charCodeAt(peg$currPos) === 37) {
1455
+ s5 = peg$c19;
1456
+ peg$currPos++;
1457
+ } else {
1458
+ s5 = peg$FAILED;
1459
+ if (peg$silentFails === 0) { peg$fail(peg$e21); }
1460
+ }
1461
+ }
1462
+ }
1463
+ if (s5 !== peg$FAILED) {
1464
+ s6 = peg$parse_();
1465
+ s7 = peg$parseUnaryExpression();
1466
+ if (s7 !== peg$FAILED) {
1467
+ s4 = [s4, s5, s6, s7];
1468
+ s3 = s4;
1469
+ } else {
1470
+ peg$currPos = s3;
1471
+ s3 = peg$FAILED;
1472
+ }
1473
+ } else {
1474
+ peg$currPos = s3;
1475
+ s3 = peg$FAILED;
1476
+ }
1477
+ }
1478
+ peg$savedPos = s0;
1479
+ s0 = peg$f17(s1, s2);
1480
+ } else {
1481
+ peg$currPos = s0;
1482
+ s0 = peg$FAILED;
1483
+ }
1484
+
1485
+ return s0;
1486
+ }
1487
+
1488
+ function peg$parseUnaryExpression() {
1489
+ var s0, s1, s2, s3;
1490
+
1491
+ s0 = peg$currPos;
1492
+ s1 = peg$currPos;
1493
+ peg$silentFails++;
1494
+ if (input.charCodeAt(peg$currPos) === 45) {
1495
+ s2 = peg$c16;
1496
+ peg$currPos++;
1497
+ } else {
1498
+ s2 = peg$FAILED;
1499
+ if (peg$silentFails === 0) { peg$fail(peg$e18); }
1500
+ }
1501
+ peg$silentFails--;
1502
+ if (s2 !== peg$FAILED) {
1503
+ peg$currPos = s1;
1504
+ s1 = undefined;
1505
+ } else {
1506
+ s1 = peg$FAILED;
1507
+ }
1508
+ if (s1 !== peg$FAILED) {
1509
+ s2 = peg$parseNumber();
1510
+ if (s2 !== peg$FAILED) {
1511
+ peg$savedPos = s0;
1512
+ s0 = peg$f18(s2);
1513
+ } else {
1514
+ peg$currPos = s0;
1515
+ s0 = peg$FAILED;
1516
+ }
1517
+ } else {
1518
+ peg$currPos = s0;
1519
+ s0 = peg$FAILED;
1520
+ }
1521
+ if (s0 === peg$FAILED) {
1522
+ s0 = peg$currPos;
1523
+ s1 = peg$currPos;
1524
+ peg$silentFails++;
1525
+ if (input.charCodeAt(peg$currPos) === 45) {
1526
+ s2 = peg$c16;
1527
+ peg$currPos++;
1528
+ } else {
1529
+ s2 = peg$FAILED;
1530
+ if (peg$silentFails === 0) { peg$fail(peg$e18); }
1531
+ }
1532
+ peg$silentFails--;
1533
+ if (s2 !== peg$FAILED) {
1534
+ peg$currPos = s1;
1535
+ s1 = undefined;
1536
+ } else {
1537
+ s1 = peg$FAILED;
1538
+ }
1539
+ if (s1 !== peg$FAILED) {
1540
+ s2 = peg$parseInteger();
1541
+ if (s2 !== peg$FAILED) {
1542
+ peg$savedPos = s0;
1543
+ s0 = peg$f19(s2);
1544
+ } else {
1545
+ peg$currPos = s0;
1546
+ s0 = peg$FAILED;
1547
+ }
1548
+ } else {
1549
+ peg$currPos = s0;
1550
+ s0 = peg$FAILED;
1551
+ }
1552
+ if (s0 === peg$FAILED) {
1553
+ s0 = peg$currPos;
1554
+ if (input.charCodeAt(peg$currPos) === 33) {
1555
+ s1 = peg$c20;
1556
+ peg$currPos++;
1557
+ } else {
1558
+ s1 = peg$FAILED;
1559
+ if (peg$silentFails === 0) { peg$fail(peg$e22); }
1560
+ }
1561
+ if (s1 === peg$FAILED) {
1562
+ if (input.charCodeAt(peg$currPos) === 43) {
1563
+ s1 = peg$c15;
1564
+ peg$currPos++;
1565
+ } else {
1566
+ s1 = peg$FAILED;
1567
+ if (peg$silentFails === 0) { peg$fail(peg$e17); }
1568
+ }
1569
+ if (s1 === peg$FAILED) {
1570
+ if (input.charCodeAt(peg$currPos) === 45) {
1571
+ s1 = peg$c16;
1572
+ peg$currPos++;
1573
+ } else {
1574
+ s1 = peg$FAILED;
1575
+ if (peg$silentFails === 0) { peg$fail(peg$e18); }
1576
+ }
1577
+ }
1578
+ }
1579
+ if (s1 !== peg$FAILED) {
1580
+ s2 = peg$parse_();
1581
+ s3 = peg$parseDoubleUnaryExpressionCatch();
1582
+ if (s3 === peg$FAILED) {
1583
+ s3 = peg$parseMethod();
1584
+ }
1585
+ if (s3 !== peg$FAILED) {
1586
+ peg$savedPos = s0;
1587
+ s0 = peg$f20(s1, s3);
1588
+ } else {
1589
+ peg$currPos = s0;
1590
+ s0 = peg$FAILED;
1591
+ }
1592
+ } else {
1593
+ peg$currPos = s0;
1594
+ s0 = peg$FAILED;
1595
+ }
1596
+ if (s0 === peg$FAILED) {
1597
+ s0 = peg$parseMethod();
1598
+ }
1599
+ }
1600
+ }
1601
+
1602
+ return s0;
1603
+ }
1604
+
1605
+ function peg$parseDoubleUnaryExpressionCatch() {
1606
+ var s0, s1;
1607
+
1608
+ s0 = peg$currPos;
1609
+ if (input.charCodeAt(peg$currPos) === 43) {
1610
+ s1 = peg$c15;
1611
+ peg$currPos++;
1612
+ } else {
1613
+ s1 = peg$FAILED;
1614
+ if (peg$silentFails === 0) { peg$fail(peg$e17); }
1615
+ }
1616
+ if (s1 === peg$FAILED) {
1617
+ if (input.charCodeAt(peg$currPos) === 45) {
1618
+ s1 = peg$c16;
1619
+ peg$currPos++;
1620
+ } else {
1621
+ s1 = peg$FAILED;
1622
+ if (peg$silentFails === 0) { peg$fail(peg$e18); }
1623
+ }
1624
+ }
1625
+ if (s1 !== peg$FAILED) {
1626
+ peg$savedPos = s0;
1627
+ s1 = peg$f21();
1628
+ }
1629
+ s0 = s1;
1630
+
1631
+ return s0;
1632
+ }
1633
+
1634
+ function peg$parseMethod() {
1635
+ var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;
1636
+
1637
+ s0 = peg$currPos;
1638
+ s1 = peg$parseCall();
1639
+ if (s1 !== peg$FAILED) {
1640
+ s2 = [];
1641
+ s3 = peg$currPos;
1642
+ s4 = peg$parse_();
1643
+ if (input.charCodeAt(peg$currPos) === 46) {
1644
+ s5 = peg$c21;
1645
+ peg$currPos++;
1646
+ } else {
1647
+ s5 = peg$FAILED;
1648
+ if (peg$silentFails === 0) { peg$fail(peg$e23); }
1649
+ }
1650
+ if (s5 !== peg$FAILED) {
1651
+ s6 = peg$parse_();
1652
+ s7 = peg$parseStrictIdentifier();
1653
+ if (s7 !== peg$FAILED) {
1654
+ s8 = peg$parse_();
1655
+ s9 = peg$currPos;
1656
+ if (input.charCodeAt(peg$currPos) === 40) {
1657
+ s10 = peg$c22;
1658
+ peg$currPos++;
1659
+ } else {
1660
+ s10 = peg$FAILED;
1661
+ if (peg$silentFails === 0) { peg$fail(peg$e24); }
1662
+ }
1663
+ if (s10 !== peg$FAILED) {
1664
+ s11 = peg$parse_();
1665
+ s12 = peg$parseArguments();
1666
+ if (s12 !== peg$FAILED) {
1667
+ s13 = peg$parse_();
1668
+ if (input.charCodeAt(peg$currPos) === 41) {
1669
+ s14 = peg$c23;
1670
+ peg$currPos++;
1671
+ } else {
1672
+ s14 = peg$FAILED;
1673
+ if (peg$silentFails === 0) { peg$fail(peg$e25); }
1674
+ }
1675
+ if (s14 !== peg$FAILED) {
1676
+ s10 = [s10, s11, s12, s13, s14];
1677
+ s9 = s10;
1678
+ } else {
1679
+ peg$currPos = s9;
1680
+ s9 = peg$FAILED;
1681
+ }
1682
+ } else {
1683
+ peg$currPos = s9;
1684
+ s9 = peg$FAILED;
1685
+ }
1686
+ } else {
1687
+ peg$currPos = s9;
1688
+ s9 = peg$FAILED;
1689
+ }
1690
+ if (s9 === peg$FAILED) {
1691
+ s9 = null;
1692
+ }
1693
+ s4 = [s4, s5, s6, s7, s8, s9];
1694
+ s3 = s4;
1695
+ } else {
1696
+ peg$currPos = s3;
1697
+ s3 = peg$FAILED;
1698
+ }
1699
+ } else {
1700
+ peg$currPos = s3;
1701
+ s3 = peg$FAILED;
1702
+ }
1703
+ while (s3 !== peg$FAILED) {
1704
+ s2.push(s3);
1705
+ s3 = peg$currPos;
1706
+ s4 = peg$parse_();
1707
+ if (input.charCodeAt(peg$currPos) === 46) {
1708
+ s5 = peg$c21;
1709
+ peg$currPos++;
1710
+ } else {
1711
+ s5 = peg$FAILED;
1712
+ if (peg$silentFails === 0) { peg$fail(peg$e23); }
1713
+ }
1714
+ if (s5 !== peg$FAILED) {
1715
+ s6 = peg$parse_();
1716
+ s7 = peg$parseStrictIdentifier();
1717
+ if (s7 !== peg$FAILED) {
1718
+ s8 = peg$parse_();
1719
+ s9 = peg$currPos;
1720
+ if (input.charCodeAt(peg$currPos) === 40) {
1721
+ s10 = peg$c22;
1722
+ peg$currPos++;
1723
+ } else {
1724
+ s10 = peg$FAILED;
1725
+ if (peg$silentFails === 0) { peg$fail(peg$e24); }
1726
+ }
1727
+ if (s10 !== peg$FAILED) {
1728
+ s11 = peg$parse_();
1729
+ s12 = peg$parseArguments();
1730
+ if (s12 !== peg$FAILED) {
1731
+ s13 = peg$parse_();
1732
+ if (input.charCodeAt(peg$currPos) === 41) {
1733
+ s14 = peg$c23;
1734
+ peg$currPos++;
1735
+ } else {
1736
+ s14 = peg$FAILED;
1737
+ if (peg$silentFails === 0) { peg$fail(peg$e25); }
1738
+ }
1739
+ if (s14 !== peg$FAILED) {
1740
+ s10 = [s10, s11, s12, s13, s14];
1741
+ s9 = s10;
1742
+ } else {
1743
+ peg$currPos = s9;
1744
+ s9 = peg$FAILED;
1745
+ }
1746
+ } else {
1747
+ peg$currPos = s9;
1748
+ s9 = peg$FAILED;
1749
+ }
1750
+ } else {
1751
+ peg$currPos = s9;
1752
+ s9 = peg$FAILED;
1753
+ }
1754
+ if (s9 === peg$FAILED) {
1755
+ s9 = null;
1756
+ }
1757
+ s4 = [s4, s5, s6, s7, s8, s9];
1758
+ s3 = s4;
1759
+ } else {
1760
+ peg$currPos = s3;
1761
+ s3 = peg$FAILED;
1762
+ }
1763
+ } else {
1764
+ peg$currPos = s3;
1765
+ s3 = peg$FAILED;
1766
+ }
1767
+ }
1768
+ peg$savedPos = s0;
1769
+ s0 = peg$f22(s1, s2);
1770
+ } else {
1771
+ peg$currPos = s0;
1772
+ s0 = peg$FAILED;
1773
+ }
1774
+
1775
+ return s0;
1776
+ }
1777
+
1778
+ function peg$parseCall() {
1779
+ var s0, s1, s2, s3, s4, s5, s6, s7;
1780
+
1781
+ s0 = peg$currPos;
1782
+ s1 = peg$parseStrictIdentifier();
1783
+ if (s1 !== peg$FAILED) {
1784
+ s2 = peg$parse_();
1785
+ if (input.charCodeAt(peg$currPos) === 40) {
1786
+ s3 = peg$c22;
1787
+ peg$currPos++;
1788
+ } else {
1789
+ s3 = peg$FAILED;
1790
+ if (peg$silentFails === 0) { peg$fail(peg$e24); }
1791
+ }
1792
+ if (s3 !== peg$FAILED) {
1793
+ s4 = peg$parse_();
1794
+ s5 = peg$parseArguments();
1795
+ if (s5 !== peg$FAILED) {
1796
+ s6 = peg$parse_();
1797
+ if (input.charCodeAt(peg$currPos) === 41) {
1798
+ s7 = peg$c23;
1799
+ peg$currPos++;
1800
+ } else {
1801
+ s7 = peg$FAILED;
1802
+ if (peg$silentFails === 0) { peg$fail(peg$e25); }
1803
+ }
1804
+ if (s7 !== peg$FAILED) {
1805
+ peg$savedPos = s0;
1806
+ s0 = peg$f23(s1, s5);
1807
+ } else {
1808
+ peg$currPos = s0;
1809
+ s0 = peg$FAILED;
1810
+ }
1811
+ } else {
1812
+ peg$currPos = s0;
1813
+ s0 = peg$FAILED;
1814
+ }
1815
+ } else {
1816
+ peg$currPos = s0;
1817
+ s0 = peg$FAILED;
1818
+ }
1819
+ } else {
1820
+ peg$currPos = s0;
1821
+ s0 = peg$FAILED;
1822
+ }
1823
+ if (s0 === peg$FAILED) {
1824
+ s0 = peg$parsePrimaryExpression();
1825
+ }
1826
+
1827
+ return s0;
1828
+ }
1829
+
1830
+ function peg$parseArguments() {
1831
+ var s0, s1, s2, s3, s4, s5, s6, s7;
1832
+
1833
+ s0 = peg$currPos;
1834
+ s1 = peg$parseExpression();
1835
+ if (s1 !== peg$FAILED) {
1836
+ s2 = [];
1837
+ s3 = peg$currPos;
1838
+ s4 = peg$parse_();
1839
+ if (input.charCodeAt(peg$currPos) === 44) {
1840
+ s5 = peg$c24;
1841
+ peg$currPos++;
1842
+ } else {
1843
+ s5 = peg$FAILED;
1844
+ if (peg$silentFails === 0) { peg$fail(peg$e26); }
1845
+ }
1846
+ if (s5 !== peg$FAILED) {
1847
+ s6 = peg$parse_();
1848
+ s7 = peg$parseExpression();
1849
+ if (s7 !== peg$FAILED) {
1850
+ s3 = s7;
1851
+ } else {
1852
+ peg$currPos = s3;
1853
+ s3 = peg$FAILED;
1854
+ }
1855
+ } else {
1856
+ peg$currPos = s3;
1857
+ s3 = peg$FAILED;
1858
+ }
1859
+ while (s3 !== peg$FAILED) {
1860
+ s2.push(s3);
1861
+ s3 = peg$currPos;
1862
+ s4 = peg$parse_();
1863
+ if (input.charCodeAt(peg$currPos) === 44) {
1864
+ s5 = peg$c24;
1865
+ peg$currPos++;
1866
+ } else {
1867
+ s5 = peg$FAILED;
1868
+ if (peg$silentFails === 0) { peg$fail(peg$e26); }
1869
+ }
1870
+ if (s5 !== peg$FAILED) {
1871
+ s6 = peg$parse_();
1872
+ s7 = peg$parseExpression();
1873
+ if (s7 !== peg$FAILED) {
1874
+ s3 = s7;
1875
+ } else {
1876
+ peg$currPos = s3;
1877
+ s3 = peg$FAILED;
1878
+ }
1879
+ } else {
1880
+ peg$currPos = s3;
1881
+ s3 = peg$FAILED;
1882
+ }
1883
+ }
1884
+ peg$savedPos = s0;
1885
+ s0 = peg$f24(s1, s2);
1886
+ } else {
1887
+ peg$currPos = s0;
1888
+ s0 = peg$FAILED;
1889
+ }
1890
+ if (s0 === peg$FAILED) {
1891
+ s0 = peg$parse_();
1892
+ }
1893
+
1894
+ return s0;
1895
+ }
1896
+
1897
+ function peg$parsePrimaryExpression() {
1898
+ var s0, s1, s2, s3, s4, s5;
1899
+
1900
+ s0 = peg$parseIdentifierOrBoolean();
1901
+ if (s0 === peg$FAILED) {
1902
+ s0 = peg$parseString();
1903
+ if (s0 === peg$FAILED) {
1904
+ s0 = peg$parseNumber();
1905
+ if (s0 === peg$FAILED) {
1906
+ s0 = peg$parseInteger();
1907
+ if (s0 === peg$FAILED) {
1908
+ s0 = peg$currPos;
1909
+ if (input.charCodeAt(peg$currPos) === 40) {
1910
+ s1 = peg$c22;
1911
+ peg$currPos++;
1912
+ } else {
1913
+ s1 = peg$FAILED;
1914
+ if (peg$silentFails === 0) { peg$fail(peg$e24); }
1915
+ }
1916
+ if (s1 !== peg$FAILED) {
1917
+ s2 = peg$parse_();
1918
+ s3 = peg$parseExpression();
1919
+ if (s3 !== peg$FAILED) {
1920
+ s4 = peg$parse_();
1921
+ if (input.charCodeAt(peg$currPos) === 41) {
1922
+ s5 = peg$c23;
1923
+ peg$currPos++;
1924
+ } else {
1925
+ s5 = peg$FAILED;
1926
+ if (peg$silentFails === 0) { peg$fail(peg$e25); }
1927
+ }
1928
+ if (s5 !== peg$FAILED) {
1929
+ peg$savedPos = s0;
1930
+ s0 = peg$f25(s3);
1931
+ } else {
1932
+ peg$currPos = s0;
1933
+ s0 = peg$FAILED;
1934
+ }
1935
+ } else {
1936
+ peg$currPos = s0;
1937
+ s0 = peg$FAILED;
1938
+ }
1939
+ } else {
1940
+ peg$currPos = s0;
1941
+ s0 = peg$FAILED;
1942
+ }
1943
+ }
1944
+ }
1945
+ }
1946
+ }
1947
+
1948
+ return s0;
1949
+ }
1950
+
1951
+ function peg$parseString() {
1952
+ var s0, s1, s2, s3;
1953
+
1954
+ peg$silentFails++;
1955
+ s0 = peg$currPos;
1956
+ if (input.charCodeAt(peg$currPos) === 39) {
1957
+ s1 = peg$c25;
1958
+ peg$currPos++;
1959
+ } else {
1960
+ s1 = peg$FAILED;
1961
+ if (peg$silentFails === 0) { peg$fail(peg$e28); }
1962
+ }
1963
+ if (s1 !== peg$FAILED) {
1964
+ s2 = peg$parseStringContents();
1965
+ if (input.charCodeAt(peg$currPos) === 39) {
1966
+ s3 = peg$c25;
1967
+ peg$currPos++;
1968
+ } else {
1969
+ s3 = peg$FAILED;
1970
+ if (peg$silentFails === 0) { peg$fail(peg$e28); }
1971
+ }
1972
+ if (s3 !== peg$FAILED) {
1973
+ peg$savedPos = s0;
1974
+ s0 = peg$f26(s2);
1975
+ } else {
1976
+ peg$currPos = s0;
1977
+ s0 = peg$FAILED;
1978
+ }
1979
+ } else {
1980
+ peg$currPos = s0;
1981
+ s0 = peg$FAILED;
1982
+ }
1983
+ peg$silentFails--;
1984
+ if (s0 === peg$FAILED) {
1985
+ s1 = peg$FAILED;
1986
+ if (peg$silentFails === 0) { peg$fail(peg$e27); }
1987
+ }
1988
+
1989
+ return s0;
1990
+ }
1991
+
1992
+ function peg$parseStringContents() {
1993
+ var s0, s1, s2;
1994
+
1995
+ s0 = peg$currPos;
1996
+ s1 = [];
1997
+ s2 = peg$parseStringChar();
1998
+ while (s2 !== peg$FAILED) {
1999
+ s1.push(s2);
2000
+ s2 = peg$parseStringChar();
2001
+ }
2002
+ peg$savedPos = s0;
2003
+ s1 = peg$f27(s1);
2004
+ s0 = s1;
2005
+
2006
+ return s0;
2007
+ }
2008
+
2009
+ function peg$parseStringChar() {
2010
+ var s0, s1, s2, s3, s4, s5;
2011
+
2012
+ s0 = peg$currPos;
2013
+ if (input.substr(peg$currPos, 2) === peg$c0) {
2014
+ s1 = peg$c0;
2015
+ peg$currPos += 2;
2016
+ } else {
2017
+ s1 = peg$FAILED;
2018
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
2019
+ }
2020
+ if (s1 !== peg$FAILED) {
2021
+ s2 = peg$parse_();
2022
+ s3 = peg$parseExpression();
2023
+ if (s3 !== peg$FAILED) {
2024
+ s4 = peg$parse_();
2025
+ if (input.charCodeAt(peg$currPos) === 125) {
2026
+ s5 = peg$c1;
2027
+ peg$currPos++;
2028
+ } else {
2029
+ s5 = peg$FAILED;
2030
+ if (peg$silentFails === 0) { peg$fail(peg$e1); }
2031
+ }
2032
+ if (s5 !== peg$FAILED) {
2033
+ peg$savedPos = s0;
2034
+ s0 = peg$f28(s3);
2035
+ } else {
2036
+ peg$currPos = s0;
2037
+ s0 = peg$FAILED;
2038
+ }
2039
+ } else {
2040
+ peg$currPos = s0;
2041
+ s0 = peg$FAILED;
2042
+ }
2043
+ } else {
2044
+ peg$currPos = s0;
2045
+ s0 = peg$FAILED;
2046
+ }
2047
+ if (s0 === peg$FAILED) {
2048
+ s0 = peg$currPos;
2049
+ if (input.substr(peg$currPos, 3) === peg$c2) {
2050
+ s1 = peg$c2;
2051
+ peg$currPos += 3;
2052
+ } else {
2053
+ s1 = peg$FAILED;
2054
+ if (peg$silentFails === 0) { peg$fail(peg$e2); }
2055
+ }
2056
+ if (s1 !== peg$FAILED) {
2057
+ peg$savedPos = s0;
2058
+ s1 = peg$f29();
2059
+ }
2060
+ s0 = s1;
2061
+ if (s0 === peg$FAILED) {
2062
+ s0 = peg$currPos;
2063
+ s1 = peg$currPos;
2064
+ peg$silentFails++;
2065
+ if (input.charCodeAt(peg$currPos) === 92) {
2066
+ s2 = peg$c3;
2067
+ peg$currPos++;
2068
+ } else {
2069
+ s2 = peg$FAILED;
2070
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
2071
+ }
2072
+ if (s2 === peg$FAILED) {
2073
+ if (input.charCodeAt(peg$currPos) === 39) {
2074
+ s2 = peg$c25;
2075
+ peg$currPos++;
2076
+ } else {
2077
+ s2 = peg$FAILED;
2078
+ if (peg$silentFails === 0) { peg$fail(peg$e28); }
2079
+ }
2080
+ if (s2 === peg$FAILED) {
2081
+ if (input.substr(peg$currPos, 2) === peg$c0) {
2082
+ s2 = peg$c0;
2083
+ peg$currPos += 2;
2084
+ } else {
2085
+ s2 = peg$FAILED;
2086
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
2087
+ }
2088
+ }
2089
+ }
2090
+ peg$silentFails--;
2091
+ if (s2 === peg$FAILED) {
2092
+ s1 = undefined;
2093
+ } else {
2094
+ peg$currPos = s1;
2095
+ s1 = peg$FAILED;
2096
+ }
2097
+ if (s1 !== peg$FAILED) {
2098
+ if (input.length > peg$currPos) {
2099
+ s2 = input.charAt(peg$currPos);
2100
+ peg$currPos++;
2101
+ } else {
2102
+ s2 = peg$FAILED;
2103
+ if (peg$silentFails === 0) { peg$fail(peg$e4); }
2104
+ }
2105
+ if (s2 !== peg$FAILED) {
2106
+ peg$savedPos = s0;
2107
+ s0 = peg$f30();
2108
+ } else {
2109
+ peg$currPos = s0;
2110
+ s0 = peg$FAILED;
2111
+ }
2112
+ } else {
2113
+ peg$currPos = s0;
2114
+ s0 = peg$FAILED;
2115
+ }
2116
+ if (s0 === peg$FAILED) {
2117
+ s0 = peg$currPos;
2118
+ if (input.substr(peg$currPos, 2) === peg$c0) {
2119
+ s1 = peg$c0;
2120
+ peg$currPos += 2;
2121
+ } else {
2122
+ s1 = peg$FAILED;
2123
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
2124
+ }
2125
+ if (s1 !== peg$FAILED) {
2126
+ s2 = [];
2127
+ if (peg$r1.test(input.charAt(peg$currPos))) {
2128
+ s3 = input.charAt(peg$currPos);
2129
+ peg$currPos++;
2130
+ } else {
2131
+ s3 = peg$FAILED;
2132
+ if (peg$silentFails === 0) { peg$fail(peg$e29); }
2133
+ }
2134
+ if (s3 !== peg$FAILED) {
2135
+ while (s3 !== peg$FAILED) {
2136
+ s2.push(s3);
2137
+ if (peg$r1.test(input.charAt(peg$currPos))) {
2138
+ s3 = input.charAt(peg$currPos);
2139
+ peg$currPos++;
2140
+ } else {
2141
+ s3 = peg$FAILED;
2142
+ if (peg$silentFails === 0) { peg$fail(peg$e29); }
2143
+ }
2144
+ }
2145
+ } else {
2146
+ s2 = peg$FAILED;
2147
+ }
2148
+ if (s2 !== peg$FAILED) {
2149
+ if (input.charCodeAt(peg$currPos) === 125) {
2150
+ s3 = peg$c1;
2151
+ peg$currPos++;
2152
+ } else {
2153
+ s3 = peg$FAILED;
2154
+ if (peg$silentFails === 0) { peg$fail(peg$e1); }
2155
+ }
2156
+ if (s3 !== peg$FAILED) {
2157
+ peg$savedPos = s0;
2158
+ s0 = peg$f31();
2159
+ } else {
2160
+ peg$currPos = s0;
2161
+ s0 = peg$FAILED;
2162
+ }
2163
+ } else {
2164
+ peg$currPos = s0;
2165
+ s0 = peg$FAILED;
2166
+ }
2167
+ } else {
2168
+ peg$currPos = s0;
2169
+ s0 = peg$FAILED;
2170
+ }
2171
+ if (s0 === peg$FAILED) {
2172
+ s0 = peg$currPos;
2173
+ if (input.substr(peg$currPos, 2) === peg$c0) {
2174
+ s1 = peg$c0;
2175
+ peg$currPos += 2;
2176
+ } else {
2177
+ s1 = peg$FAILED;
2178
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
2179
+ }
2180
+ if (s1 !== peg$FAILED) {
2181
+ peg$savedPos = s0;
2182
+ s1 = peg$f32();
2183
+ }
2184
+ s0 = s1;
2185
+ if (s0 === peg$FAILED) {
2186
+ s0 = peg$currPos;
2187
+ if (input.charCodeAt(peg$currPos) === 92) {
2188
+ s1 = peg$c3;
2189
+ peg$currPos++;
2190
+ } else {
2191
+ s1 = peg$FAILED;
2192
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
2193
+ }
2194
+ if (s1 !== peg$FAILED) {
2195
+ if (input.substr(peg$currPos, 2) === peg$c0) {
2196
+ s2 = peg$c0;
2197
+ peg$currPos += 2;
2198
+ } else {
2199
+ s2 = peg$FAILED;
2200
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
2201
+ }
2202
+ if (s2 !== peg$FAILED) {
2203
+ peg$savedPos = s0;
2204
+ s0 = peg$f33(s2);
2205
+ } else {
2206
+ peg$currPos = s0;
2207
+ s0 = peg$FAILED;
2208
+ }
2209
+ } else {
2210
+ peg$currPos = s0;
2211
+ s0 = peg$FAILED;
2212
+ }
2213
+ if (s0 === peg$FAILED) {
2214
+ s0 = peg$currPos;
2215
+ if (input.charCodeAt(peg$currPos) === 92) {
2216
+ s1 = peg$c3;
2217
+ peg$currPos++;
2218
+ } else {
2219
+ s1 = peg$FAILED;
2220
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
2221
+ }
2222
+ if (s1 !== peg$FAILED) {
2223
+ if (input.length > peg$currPos) {
2224
+ s2 = input.charAt(peg$currPos);
2225
+ peg$currPos++;
2226
+ } else {
2227
+ s2 = peg$FAILED;
2228
+ if (peg$silentFails === 0) { peg$fail(peg$e4); }
2229
+ }
2230
+ if (s2 !== peg$FAILED) {
2231
+ peg$savedPos = s0;
2232
+ s0 = peg$f34(s2);
2233
+ } else {
2234
+ peg$currPos = s0;
2235
+ s0 = peg$FAILED;
2236
+ }
2237
+ } else {
2238
+ peg$currPos = s0;
2239
+ s0 = peg$FAILED;
2240
+ }
2241
+ if (s0 === peg$FAILED) {
2242
+ s0 = peg$currPos;
2243
+ if (input.charCodeAt(peg$currPos) === 92) {
2244
+ s1 = peg$c3;
2245
+ peg$currPos++;
2246
+ } else {
2247
+ s1 = peg$FAILED;
2248
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
2249
+ }
2250
+ if (s1 !== peg$FAILED) {
2251
+ peg$savedPos = s0;
2252
+ s1 = peg$f35();
2253
+ }
2254
+ s0 = s1;
2255
+ }
2256
+ }
2257
+ }
2258
+ }
2259
+ }
2260
+ }
2261
+ }
2262
+
2263
+ return s0;
2264
+ }
2265
+
2266
+ function peg$parseInteger() {
2267
+ var s0, s1, s2, s3;
2268
+
2269
+ peg$silentFails++;
2270
+ s0 = peg$currPos;
2271
+ if (input.charCodeAt(peg$currPos) === 45) {
2272
+ s1 = peg$c16;
2273
+ peg$currPos++;
2274
+ } else {
2275
+ s1 = peg$FAILED;
2276
+ if (peg$silentFails === 0) { peg$fail(peg$e18); }
2277
+ }
2278
+ if (s1 === peg$FAILED) {
2279
+ s1 = null;
2280
+ }
2281
+ s2 = [];
2282
+ if (peg$r2.test(input.charAt(peg$currPos))) {
2283
+ s3 = input.charAt(peg$currPos);
2284
+ peg$currPos++;
2285
+ } else {
2286
+ s3 = peg$FAILED;
2287
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2288
+ }
2289
+ if (s3 !== peg$FAILED) {
2290
+ while (s3 !== peg$FAILED) {
2291
+ s2.push(s3);
2292
+ if (peg$r2.test(input.charAt(peg$currPos))) {
2293
+ s3 = input.charAt(peg$currPos);
2294
+ peg$currPos++;
2295
+ } else {
2296
+ s3 = peg$FAILED;
2297
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2298
+ }
2299
+ }
2300
+ } else {
2301
+ s2 = peg$FAILED;
2302
+ }
2303
+ if (s2 !== peg$FAILED) {
2304
+ peg$savedPos = s0;
2305
+ s0 = peg$f36();
2306
+ } else {
2307
+ peg$currPos = s0;
2308
+ s0 = peg$FAILED;
2309
+ }
2310
+ peg$silentFails--;
2311
+ if (s0 === peg$FAILED) {
2312
+ s1 = peg$FAILED;
2313
+ if (peg$silentFails === 0) { peg$fail(peg$e30); }
2314
+ }
2315
+
2316
+ return s0;
2317
+ }
2318
+
2319
+ function peg$parseNumber() {
2320
+ var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
2321
+
2322
+ peg$silentFails++;
2323
+ s0 = peg$currPos;
2324
+ if (input.charCodeAt(peg$currPos) === 45) {
2325
+ s1 = peg$c16;
2326
+ peg$currPos++;
2327
+ } else {
2328
+ s1 = peg$FAILED;
2329
+ if (peg$silentFails === 0) { peg$fail(peg$e18); }
2330
+ }
2331
+ if (s1 === peg$FAILED) {
2332
+ s1 = null;
2333
+ }
2334
+ s2 = [];
2335
+ if (peg$r2.test(input.charAt(peg$currPos))) {
2336
+ s3 = input.charAt(peg$currPos);
2337
+ peg$currPos++;
2338
+ } else {
2339
+ s3 = peg$FAILED;
2340
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2341
+ }
2342
+ while (s3 !== peg$FAILED) {
2343
+ s2.push(s3);
2344
+ if (peg$r2.test(input.charAt(peg$currPos))) {
2345
+ s3 = input.charAt(peg$currPos);
2346
+ peg$currPos++;
2347
+ } else {
2348
+ s3 = peg$FAILED;
2349
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2350
+ }
2351
+ }
2352
+ if (input.charCodeAt(peg$currPos) === 46) {
2353
+ s3 = peg$c21;
2354
+ peg$currPos++;
2355
+ } else {
2356
+ s3 = peg$FAILED;
2357
+ if (peg$silentFails === 0) { peg$fail(peg$e23); }
2358
+ }
2359
+ if (s3 !== peg$FAILED) {
2360
+ s4 = [];
2361
+ if (peg$r2.test(input.charAt(peg$currPos))) {
2362
+ s5 = input.charAt(peg$currPos);
2363
+ peg$currPos++;
2364
+ } else {
2365
+ s5 = peg$FAILED;
2366
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2367
+ }
2368
+ if (s5 !== peg$FAILED) {
2369
+ while (s5 !== peg$FAILED) {
2370
+ s4.push(s5);
2371
+ if (peg$r2.test(input.charAt(peg$currPos))) {
2372
+ s5 = input.charAt(peg$currPos);
2373
+ peg$currPos++;
2374
+ } else {
2375
+ s5 = peg$FAILED;
2376
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2377
+ }
2378
+ }
2379
+ } else {
2380
+ s4 = peg$FAILED;
2381
+ }
2382
+ if (s4 !== peg$FAILED) {
2383
+ s5 = peg$currPos;
2384
+ if (input.charCodeAt(peg$currPos) === 101) {
2385
+ s6 = peg$c26;
2386
+ peg$currPos++;
2387
+ } else {
2388
+ s6 = peg$FAILED;
2389
+ if (peg$silentFails === 0) { peg$fail(peg$e33); }
2390
+ }
2391
+ if (s6 === peg$FAILED) {
2392
+ if (input.charCodeAt(peg$currPos) === 69) {
2393
+ s6 = peg$c27;
2394
+ peg$currPos++;
2395
+ } else {
2396
+ s6 = peg$FAILED;
2397
+ if (peg$silentFails === 0) { peg$fail(peg$e34); }
2398
+ }
2399
+ }
2400
+ if (s6 !== peg$FAILED) {
2401
+ if (input.charCodeAt(peg$currPos) === 43) {
2402
+ s7 = peg$c15;
2403
+ peg$currPos++;
2404
+ } else {
2405
+ s7 = peg$FAILED;
2406
+ if (peg$silentFails === 0) { peg$fail(peg$e17); }
2407
+ }
2408
+ if (s7 === peg$FAILED) {
2409
+ if (input.charCodeAt(peg$currPos) === 45) {
2410
+ s7 = peg$c16;
2411
+ peg$currPos++;
2412
+ } else {
2413
+ s7 = peg$FAILED;
2414
+ if (peg$silentFails === 0) { peg$fail(peg$e18); }
2415
+ }
2416
+ }
2417
+ if (s7 === peg$FAILED) {
2418
+ s7 = null;
2419
+ }
2420
+ s8 = [];
2421
+ if (peg$r2.test(input.charAt(peg$currPos))) {
2422
+ s9 = input.charAt(peg$currPos);
2423
+ peg$currPos++;
2424
+ } else {
2425
+ s9 = peg$FAILED;
2426
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2427
+ }
2428
+ if (s9 !== peg$FAILED) {
2429
+ while (s9 !== peg$FAILED) {
2430
+ s8.push(s9);
2431
+ if (peg$r2.test(input.charAt(peg$currPos))) {
2432
+ s9 = input.charAt(peg$currPos);
2433
+ peg$currPos++;
2434
+ } else {
2435
+ s9 = peg$FAILED;
2436
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2437
+ }
2438
+ }
2439
+ } else {
2440
+ s8 = peg$FAILED;
2441
+ }
2442
+ if (s8 !== peg$FAILED) {
2443
+ s6 = [s6, s7, s8];
2444
+ s5 = s6;
2445
+ } else {
2446
+ peg$currPos = s5;
2447
+ s5 = peg$FAILED;
2448
+ }
2449
+ } else {
2450
+ peg$currPos = s5;
2451
+ s5 = peg$FAILED;
2452
+ }
2453
+ if (s5 === peg$FAILED) {
2454
+ s5 = null;
2455
+ }
2456
+ peg$savedPos = s0;
2457
+ s0 = peg$f37();
2458
+ } else {
2459
+ peg$currPos = s0;
2460
+ s0 = peg$FAILED;
2461
+ }
2462
+ } else {
2463
+ peg$currPos = s0;
2464
+ s0 = peg$FAILED;
2465
+ }
2466
+ if (s0 === peg$FAILED) {
2467
+ s0 = peg$currPos;
2468
+ if (input.charCodeAt(peg$currPos) === 45) {
2469
+ s1 = peg$c16;
2470
+ peg$currPos++;
2471
+ } else {
2472
+ s1 = peg$FAILED;
2473
+ if (peg$silentFails === 0) { peg$fail(peg$e18); }
2474
+ }
2475
+ if (s1 === peg$FAILED) {
2476
+ s1 = null;
2477
+ }
2478
+ s2 = [];
2479
+ if (peg$r2.test(input.charAt(peg$currPos))) {
2480
+ s3 = input.charAt(peg$currPos);
2481
+ peg$currPos++;
2482
+ } else {
2483
+ s3 = peg$FAILED;
2484
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2485
+ }
2486
+ if (s3 !== peg$FAILED) {
2487
+ while (s3 !== peg$FAILED) {
2488
+ s2.push(s3);
2489
+ if (peg$r2.test(input.charAt(peg$currPos))) {
2490
+ s3 = input.charAt(peg$currPos);
2491
+ peg$currPos++;
2492
+ } else {
2493
+ s3 = peg$FAILED;
2494
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2495
+ }
2496
+ }
2497
+ } else {
2498
+ s2 = peg$FAILED;
2499
+ }
2500
+ if (s2 !== peg$FAILED) {
2501
+ if (input.charCodeAt(peg$currPos) === 101) {
2502
+ s3 = peg$c26;
2503
+ peg$currPos++;
2504
+ } else {
2505
+ s3 = peg$FAILED;
2506
+ if (peg$silentFails === 0) { peg$fail(peg$e33); }
2507
+ }
2508
+ if (s3 === peg$FAILED) {
2509
+ if (input.charCodeAt(peg$currPos) === 69) {
2510
+ s3 = peg$c27;
2511
+ peg$currPos++;
2512
+ } else {
2513
+ s3 = peg$FAILED;
2514
+ if (peg$silentFails === 0) { peg$fail(peg$e34); }
2515
+ }
2516
+ }
2517
+ if (s3 !== peg$FAILED) {
2518
+ if (input.charCodeAt(peg$currPos) === 43) {
2519
+ s4 = peg$c15;
2520
+ peg$currPos++;
2521
+ } else {
2522
+ s4 = peg$FAILED;
2523
+ if (peg$silentFails === 0) { peg$fail(peg$e17); }
2524
+ }
2525
+ if (s4 === peg$FAILED) {
2526
+ if (input.charCodeAt(peg$currPos) === 45) {
2527
+ s4 = peg$c16;
2528
+ peg$currPos++;
2529
+ } else {
2530
+ s4 = peg$FAILED;
2531
+ if (peg$silentFails === 0) { peg$fail(peg$e18); }
2532
+ }
2533
+ }
2534
+ if (s4 === peg$FAILED) {
2535
+ s4 = null;
2536
+ }
2537
+ s5 = [];
2538
+ if (peg$r2.test(input.charAt(peg$currPos))) {
2539
+ s6 = input.charAt(peg$currPos);
2540
+ peg$currPos++;
2541
+ } else {
2542
+ s6 = peg$FAILED;
2543
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2544
+ }
2545
+ if (s6 !== peg$FAILED) {
2546
+ while (s6 !== peg$FAILED) {
2547
+ s5.push(s6);
2548
+ if (peg$r2.test(input.charAt(peg$currPos))) {
2549
+ s6 = input.charAt(peg$currPos);
2550
+ peg$currPos++;
2551
+ } else {
2552
+ s6 = peg$FAILED;
2553
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2554
+ }
2555
+ }
2556
+ } else {
2557
+ s5 = peg$FAILED;
2558
+ }
2559
+ if (s5 !== peg$FAILED) {
2560
+ peg$savedPos = s0;
2561
+ s0 = peg$f38();
2562
+ } else {
2563
+ peg$currPos = s0;
2564
+ s0 = peg$FAILED;
2565
+ }
2566
+ } else {
2567
+ peg$currPos = s0;
2568
+ s0 = peg$FAILED;
2569
+ }
2570
+ } else {
2571
+ peg$currPos = s0;
2572
+ s0 = peg$FAILED;
2573
+ }
2574
+ }
2575
+ peg$silentFails--;
2576
+ if (s0 === peg$FAILED) {
2577
+ s1 = peg$FAILED;
2578
+ if (peg$silentFails === 0) { peg$fail(peg$e32); }
2579
+ }
2580
+
2581
+ return s0;
2582
+ }
2583
+
2584
+ function peg$parseIdentifierOrBoolean() {
2585
+ var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;
2586
+
2587
+ s0 = peg$currPos;
2588
+ if (peg$r3.test(input.charAt(peg$currPos))) {
2589
+ s1 = input.charAt(peg$currPos);
2590
+ peg$currPos++;
2591
+ } else {
2592
+ s1 = peg$FAILED;
2593
+ if (peg$silentFails === 0) { peg$fail(peg$e35); }
2594
+ }
2595
+ if (s1 !== peg$FAILED) {
2596
+ s2 = [];
2597
+ s3 = [];
2598
+ if (peg$r4.test(input.charAt(peg$currPos))) {
2599
+ s4 = input.charAt(peg$currPos);
2600
+ peg$currPos++;
2601
+ } else {
2602
+ s4 = peg$FAILED;
2603
+ if (peg$silentFails === 0) { peg$fail(peg$e36); }
2604
+ }
2605
+ if (s4 !== peg$FAILED) {
2606
+ while (s4 !== peg$FAILED) {
2607
+ s3.push(s4);
2608
+ if (peg$r4.test(input.charAt(peg$currPos))) {
2609
+ s4 = input.charAt(peg$currPos);
2610
+ peg$currPos++;
2611
+ } else {
2612
+ s4 = peg$FAILED;
2613
+ if (peg$silentFails === 0) { peg$fail(peg$e36); }
2614
+ }
2615
+ }
2616
+ } else {
2617
+ s3 = peg$FAILED;
2618
+ }
2619
+ if (s3 === peg$FAILED) {
2620
+ s3 = peg$currPos;
2621
+ if (input.charCodeAt(peg$currPos) === 46) {
2622
+ s4 = peg$c21;
2623
+ peg$currPos++;
2624
+ } else {
2625
+ s4 = peg$FAILED;
2626
+ if (peg$silentFails === 0) { peg$fail(peg$e23); }
2627
+ }
2628
+ if (s4 !== peg$FAILED) {
2629
+ s5 = peg$currPos;
2630
+ peg$silentFails++;
2631
+ s6 = peg$currPos;
2632
+ s7 = peg$parse_();
2633
+ s8 = peg$parseStrictIdentifier();
2634
+ if (s8 !== peg$FAILED) {
2635
+ s9 = peg$parse_();
2636
+ if (input.charCodeAt(peg$currPos) === 40) {
2637
+ s10 = peg$c22;
2638
+ peg$currPos++;
2639
+ } else {
2640
+ s10 = peg$FAILED;
2641
+ if (peg$silentFails === 0) { peg$fail(peg$e24); }
2642
+ }
2643
+ if (s10 !== peg$FAILED) {
2644
+ s7 = [s7, s8, s9, s10];
2645
+ s6 = s7;
2646
+ } else {
2647
+ peg$currPos = s6;
2648
+ s6 = peg$FAILED;
2649
+ }
2650
+ } else {
2651
+ peg$currPos = s6;
2652
+ s6 = peg$FAILED;
2653
+ }
2654
+ peg$silentFails--;
2655
+ if (s6 === peg$FAILED) {
2656
+ s5 = undefined;
2657
+ } else {
2658
+ peg$currPos = s5;
2659
+ s5 = peg$FAILED;
2660
+ }
2661
+ if (s5 !== peg$FAILED) {
2662
+ s4 = [s4, s5];
2663
+ s3 = s4;
2664
+ } else {
2665
+ peg$currPos = s3;
2666
+ s3 = peg$FAILED;
2667
+ }
2668
+ } else {
2669
+ peg$currPos = s3;
2670
+ s3 = peg$FAILED;
2671
+ }
2672
+ }
2673
+ while (s3 !== peg$FAILED) {
2674
+ s2.push(s3);
2675
+ s3 = [];
2676
+ if (peg$r4.test(input.charAt(peg$currPos))) {
2677
+ s4 = input.charAt(peg$currPos);
2678
+ peg$currPos++;
2679
+ } else {
2680
+ s4 = peg$FAILED;
2681
+ if (peg$silentFails === 0) { peg$fail(peg$e36); }
2682
+ }
2683
+ if (s4 !== peg$FAILED) {
2684
+ while (s4 !== peg$FAILED) {
2685
+ s3.push(s4);
2686
+ if (peg$r4.test(input.charAt(peg$currPos))) {
2687
+ s4 = input.charAt(peg$currPos);
2688
+ peg$currPos++;
2689
+ } else {
2690
+ s4 = peg$FAILED;
2691
+ if (peg$silentFails === 0) { peg$fail(peg$e36); }
2692
+ }
2693
+ }
2694
+ } else {
2695
+ s3 = peg$FAILED;
2696
+ }
2697
+ if (s3 === peg$FAILED) {
2698
+ s3 = peg$currPos;
2699
+ if (input.charCodeAt(peg$currPos) === 46) {
2700
+ s4 = peg$c21;
2701
+ peg$currPos++;
2702
+ } else {
2703
+ s4 = peg$FAILED;
2704
+ if (peg$silentFails === 0) { peg$fail(peg$e23); }
2705
+ }
2706
+ if (s4 !== peg$FAILED) {
2707
+ s5 = peg$currPos;
2708
+ peg$silentFails++;
2709
+ s6 = peg$currPos;
2710
+ s7 = peg$parse_();
2711
+ s8 = peg$parseStrictIdentifier();
2712
+ if (s8 !== peg$FAILED) {
2713
+ s9 = peg$parse_();
2714
+ if (input.charCodeAt(peg$currPos) === 40) {
2715
+ s10 = peg$c22;
2716
+ peg$currPos++;
2717
+ } else {
2718
+ s10 = peg$FAILED;
2719
+ if (peg$silentFails === 0) { peg$fail(peg$e24); }
2720
+ }
2721
+ if (s10 !== peg$FAILED) {
2722
+ s7 = [s7, s8, s9, s10];
2723
+ s6 = s7;
2724
+ } else {
2725
+ peg$currPos = s6;
2726
+ s6 = peg$FAILED;
2727
+ }
2728
+ } else {
2729
+ peg$currPos = s6;
2730
+ s6 = peg$FAILED;
2731
+ }
2732
+ peg$silentFails--;
2733
+ if (s6 === peg$FAILED) {
2734
+ s5 = undefined;
2735
+ } else {
2736
+ peg$currPos = s5;
2737
+ s5 = peg$FAILED;
2738
+ }
2739
+ if (s5 !== peg$FAILED) {
2740
+ s4 = [s4, s5];
2741
+ s3 = s4;
2742
+ } else {
2743
+ peg$currPos = s3;
2744
+ s3 = peg$FAILED;
2745
+ }
2746
+ } else {
2747
+ peg$currPos = s3;
2748
+ s3 = peg$FAILED;
2749
+ }
2750
+ }
2751
+ }
2752
+ peg$savedPos = s0;
2753
+ s0 = peg$f39();
2754
+ } else {
2755
+ peg$currPos = s0;
2756
+ s0 = peg$FAILED;
2757
+ }
2758
+
2759
+ return s0;
2760
+ }
2761
+
2762
+ function peg$parseStrictIdentifier() {
2763
+ var s0, s1, s2, s3;
2764
+
2765
+ s0 = peg$currPos;
2766
+ if (peg$r3.test(input.charAt(peg$currPos))) {
2767
+ s1 = input.charAt(peg$currPos);
2768
+ peg$currPos++;
2769
+ } else {
2770
+ s1 = peg$FAILED;
2771
+ if (peg$silentFails === 0) { peg$fail(peg$e35); }
2772
+ }
2773
+ if (s1 !== peg$FAILED) {
2774
+ s2 = [];
2775
+ if (peg$r4.test(input.charAt(peg$currPos))) {
2776
+ s3 = input.charAt(peg$currPos);
2777
+ peg$currPos++;
2778
+ } else {
2779
+ s3 = peg$FAILED;
2780
+ if (peg$silentFails === 0) { peg$fail(peg$e36); }
2781
+ }
2782
+ while (s3 !== peg$FAILED) {
2783
+ s2.push(s3);
2784
+ if (peg$r4.test(input.charAt(peg$currPos))) {
2785
+ s3 = input.charAt(peg$currPos);
2786
+ peg$currPos++;
2787
+ } else {
2788
+ s3 = peg$FAILED;
2789
+ if (peg$silentFails === 0) { peg$fail(peg$e36); }
2790
+ }
2791
+ }
2792
+ peg$savedPos = s0;
2793
+ s0 = peg$f40();
2794
+ } else {
2795
+ peg$currPos = s0;
2796
+ s0 = peg$FAILED;
2797
+ }
2798
+
2799
+ return s0;
2800
+ }
2801
+
2802
+ function peg$parse_() {
2803
+ var s0, s1;
2804
+
2805
+ peg$silentFails++;
2806
+ s0 = [];
2807
+ if (peg$r5.test(input.charAt(peg$currPos))) {
2808
+ s1 = input.charAt(peg$currPos);
2809
+ peg$currPos++;
2810
+ } else {
2811
+ s1 = peg$FAILED;
2812
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
2813
+ }
2814
+ while (s1 !== peg$FAILED) {
2815
+ s0.push(s1);
2816
+ if (peg$r5.test(input.charAt(peg$currPos))) {
2817
+ s1 = input.charAt(peg$currPos);
2818
+ peg$currPos++;
2819
+ } else {
2820
+ s1 = peg$FAILED;
2821
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
2822
+ }
2823
+ }
2824
+ peg$silentFails--;
2825
+ s1 = peg$FAILED;
2826
+ if (peg$silentFails === 0) { peg$fail(peg$e37); }
2827
+
2828
+ return s0;
2829
+ }
2830
+
2831
+ peg$result = peg$startRuleFunction();
2832
+
2833
+ if (peg$result !== peg$FAILED && peg$currPos === input.length) {
2834
+ return peg$result;
2835
+ } else {
2836
+ if (peg$result !== peg$FAILED && peg$currPos < input.length) {
2837
+ peg$fail(peg$endExpectation());
2838
+ }
2839
+
2840
+ throw peg$buildStructuredError(
2841
+ peg$maxFailExpected,
2842
+ peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,
2843
+ peg$maxFailPos < input.length
2844
+ ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)
2845
+ : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
2846
+ );
2847
+ }
2848
+ }
2849
+
2850
+ export {
2851
+ peg$SyntaxError as SyntaxError,
2852
+
2853
+ peg$parse as parse
2854
+ };