首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nearley Moo - Grammar不适用于Moo lexer

Nearley Moo - Grammar不适用于Moo lexer
EN

Stack Overflow用户
提问于 2018-10-28 11:06:35
回答 2查看 837关注 0票数 0

我在moo.js标记器中使用nearley.js语法(和解析器)。我的grammar.ne文件如下:

代码语言:javascript
复制
@{%
    const moo = require('moo')
    let lexer = moo.compile({
        number: /[0-9]+/
    });
%}

@lexer lexer

trig -> "sin" [0-9]:+

当通过nearley-test grammar.js -i "sin8"将字符串"sin8“解析到解析器时,我得到以下错误:

代码语言:javascript
复制
throw new Error(this.formatError(token, "invalid syntax"))
      ^

Error: invalid syntax at line 1 col 1:

  sin8
  ^
    at Lexer.next (C:\Users\Florian\WebstormProjects\MineScript\node_modules\moo\moo.js:397:13)
    at Parser.feed (C:\Users\Florian\AppData\Roaming\npm\node_modules\nearley\lib\nearley.js:270:30)
    at Object.<anonymous> (C:\Users\Florian\AppData\Roaming\npm\node_modules\nearley\bin\nearley-test.js:83:12)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:191:16)

但是,注释@lexer lexer会使其正常工作,并匹配"sin8“字符串。

EN

回答 2

Stack Overflow用户

发布于 2018-12-22 16:19:28

在使用过Nearley之后,在我看来,一旦你开始使用Moo。您必须在Moo lexer中定义所有可能的标记,并且只能使用Nearley规则和后处理器。所以像下面这样的东西可能会起作用(我没有测试它):

代码语言:javascript
复制
@{%
    const moo = require('moo')
    let lexer = moo.compile({
        number: /[0-9]+/,
        func: ['sin','cos'] //define sin, cos etc, here
    });
%}

@lexer lexer

trig -> %func %number 
票数 4
EN

Stack Overflow用户

发布于 2021-10-12 04:43:58

如果moo是作为lexer传递的,Nearley并不能真正理解简单的字符串输入。您需要在您的记号赋予器中指定它。

代码语言:javascript
复制
@{%
    const moo = require('moo')
    let lexer = moo.compile({
        number: /[0-9]+/,
        sin: /\bsin\b/,
    });
%}

@lexer lexer

trig -> "sin" [0-9]:+

确保有\b,以确保它是一个单独的单词,而不是它的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53028052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档