使用nearley.js时解析器到达换行标记时出现错误

问题描述 投票:0回答:1

我正在构建一种小型编程语言,并使用 nearley.js 进行解析。我正在定义语法,并且语法语法工作正常,除了一种情况,即换行符。

这是语法:

statement -> var_assign {% id %}
            | fun_call {% id %}
            | function_def {% id %}
            | conditional {% id %}
            | loop {% id %}

statements
    -> statement %NL
        {% 
            (data) => {
                return [data[0]];
            }
        %}
    |  statements %NL statement %NL
        {%
            (data) => {
                return [...data[0], data[2]];
            }

这是错误:

Error while parsing Error: invalid syntax at line 1 col 19:

1  @name = "mohammad"
                 ^
2  call print(name)
Unexpected input (lexer error).

我没想到会有更多的意见。这是我的解析表的状态:

expression → %string ●
var_assign → %var_declaration %identifier _ "=" _ expression ●
statement → var_assign ●

我只在换行符的情况下遇到错误。其他一切都工作正常。

javascript nearley
1个回答
0
投票

我刚刚发现错误不是由换行符引起的,而是解析器不知道语句何时结束,但仍然能够解决这个问题

© www.soinside.com 2019 - 2024. All rights reserved.