pacc 6.7.1 → 6.7.2

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 +13 -9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pacc",
3
- "version": "6.7.1",
3
+ "version": "6.7.2",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
package/src/tokens.mjs CHANGED
@@ -63,7 +63,7 @@ export /** @type {Token} */ const EOF = createToken("EOF", -1, "eof");
63
63
  * @yields {Token}
64
64
  */
65
65
  export function* tokens(string) {
66
- let state, value, hex, divider;
66
+ let state, value, hex, divider, quote;
67
67
 
68
68
  function maybeKeyword() {
69
69
  switch (value) {
@@ -106,8 +106,8 @@ export function* tokens(string) {
106
106
  }
107
107
 
108
108
  switch (c) {
109
- case '\n':
110
- case '\r':
109
+ case "\n":
110
+ case "\r":
111
111
  case "\t":
112
112
  case " ":
113
113
  switch (state) {
@@ -147,20 +147,27 @@ export function* tokens(string) {
147
147
  case undefined:
148
148
  value = "";
149
149
  state = "string";
150
+ quote = c;
150
151
  break;
151
152
  case "string":
152
- yield [value];
153
- state = undefined;
153
+ if (c === quote) {
154
+ yield [value];
155
+ state = undefined;
156
+ } else {
157
+ value += c;
158
+ }
154
159
  break;
155
160
  case "identifier":
156
161
  yield maybeKeyword();
157
162
  value = "";
158
163
  state = "string";
164
+ quote = c;
159
165
  break;
160
166
  default:
161
167
  yield lookup[state];
162
168
  value = "";
163
169
  state = "string";
170
+ quote = c;
164
171
  }
165
172
  break;
166
173
  case "!":
@@ -317,10 +324,7 @@ export function* tokens(string) {
317
324
  case undefined:
318
325
  break;
319
326
  case "string":
320
- const error = new Error("unterminated string");
321
- // @ts-ignore
322
- error.expression = string;
323
- throw error;
327
+ throw new Error("unterminated string", { cause: string });
324
328
  case "number-fraction":
325
329
  case "number":
326
330
  yield [value];