diff options
Diffstat (limited to 'src/compiler/parse/read/expression.ts')
-rw-r--r-- | src/compiler/parse/read/expression.ts | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/src/compiler/parse/read/expression.ts b/src/compiler/parse/read/expression.ts index 3af2868e6..56e79265d 100644 --- a/src/compiler/parse/read/expression.ts +++ b/src/compiler/parse/read/expression.ts @@ -6,36 +6,39 @@ import { whitespace } from '../../utils/patterns.js'; // import { Node } from 'estree'; export default function read_expression(parser: Parser): string { - try { - const node = parse_expression_at(parser.template, parser.index); - - let num_parens = 0; - - for (let i = parser.index; i < node.start; i += 1) { - if (parser.template[i] === '(') num_parens += 1; - } - - let index = node.end; - while (num_parens > 0) { - const char = parser.template[index]; - - if (char === ')') { - num_parens -= 1; - } else if (!whitespace.test(char)) { - parser.error({ - code: 'unexpected-token', - message: 'Expected )' - }, index); - } - - index += 1; - } - - parser.index = index; - - return parser.template.substring(node.start, node.end); - // return node as Node; - } catch (err) { - parser.acorn_error(err); - } + try { + const node = parse_expression_at(parser.template, parser.index); + + let num_parens = 0; + + for (let i = parser.index; i < node.start; i += 1) { + if (parser.template[i] === '(') num_parens += 1; + } + + let index = node.end; + while (num_parens > 0) { + const char = parser.template[index]; + + if (char === ')') { + num_parens -= 1; + } else if (!whitespace.test(char)) { + parser.error( + { + code: 'unexpected-token', + message: 'Expected )', + }, + index + ); + } + + index += 1; + } + + parser.index = index; + + return parser.template.substring(node.start, node.end); + // return node as Node; + } catch (err) { + parser.acorn_error(err); + } } |