pacc 8.11.4 → 8.11.5

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 (2) hide show
  1. package/package.json +1 -1
  2. package/src/tokens.mjs +10 -26
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pacc",
3
- "version": "8.11.4",
3
+ "version": "8.11.5",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
package/src/tokens.mjs CHANGED
@@ -93,7 +93,7 @@ export /** @type {Token} */ const MINUS = createBinopToken(
93
93
  (left, right) => left - right
94
94
  );
95
95
 
96
- MINUS.nud = (parser) => - parser.expression(100);
96
+ MINUS.nud = parser => -parser.expression(100);
97
97
 
98
98
  export /** @type {Token} */ const STAR = createBinopToken(
99
99
  "*",
@@ -148,34 +148,17 @@ export /** @type {Token} */ const OPEN_ROUND = createToken(
148
148
  "(",
149
149
  40,
150
150
  "prefix",
151
- (parser, left) => {
152
- const args = [];
153
- while (parser.token !== CLOSE_ROUND) {
154
- args.push(parser.expression(0));
155
- if (parser.token === COMMA) {
156
- parser.advance();
157
- }
158
- }
159
- left.args = args;
151
+ (parser, left) => {
152
+ const args = parser.expression(0);
153
+ parser.expect(CLOSE_ROUND);
154
+ left.args = Array.isArray(args) ? args : [args];
160
155
  left.eval = functionEval;
161
-
162
- parser.advance();
163
-
164
156
  return left;
165
157
  },
166
158
  parser => {
167
- const sequence = [];
168
-
169
- while (parser.token !== CLOSE_ROUND) {
170
- sequence.push(parser.expression(0));
171
- if (parser.token === COMMA) {
172
- parser.advance();
173
- }
174
- }
159
+ const result = parser.expression(0);
175
160
  parser.expect(CLOSE_ROUND);
176
-
177
- // TODO always a sequence ?
178
- return sequence.length > 1 ? sequence : sequence[0];
161
+ return result;
179
162
  }
180
163
  );
181
164
 
@@ -220,7 +203,8 @@ export /** @type {Token} */ const CLOSE_CURLY = createToken("}");
220
203
  export /** @type {Token} */ const QUESTION = createToken("?", 20, "infix");
221
204
  export /** @type {Token} */ const COLON = createToken(":", undefined, "infix");
222
205
  export /** @type {Token} */ const SEMICOLON = createToken(";");
223
- export /** @type {Token} */ const COMMA = createToken(",");
206
+ export /** @type {Token} */ const COMMA = createToken(",",20,"infix",(left,right)=>Array.isArray(left) ? [...left,right] : [left,right]);
207
+
224
208
  export /** @type {Token} */ const DOT = createToken(
225
209
  ".",
226
210
  80,
@@ -384,7 +368,7 @@ export function* tokens(string, options = {}) {
384
368
  case "'":
385
369
  switch (state) {
386
370
  case "number":
387
- yield [NUMBER,options.parseFloat(value)];
371
+ yield [NUMBER, options.parseFloat(value)];
388
372
  case undefined:
389
373
  startString(c);
390
374
  break;