问题标签 [moo-lexer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
886 浏览

javascript - Nearley Moo - 语法不适用于使用的 Moo 词法分析器

我将 nearley.js 语法(和解析器)与 moo.js 标记器一起使用。我的 Grammar.ne 文件如下:

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

但是,注释@lexer lexer使它起作用,并匹配“sin8”字符串。这个例子直接取自文档并且不起作用,所以我想知道我错在哪里。

0 投票
0 回答
225 浏览

javascript - 如何对大文件使用 moo lexer(和 nearley)

我试图找到可以解析非常大的文件(基本上是 PGN 文件)的东西。我开始使用 antlr4,但即使他们声称他们的类是“流”,但它们不是。antlr4 拿了我的 5,457,518 游戏测试文件,并试图将整个 1.7G 文件加载成一个巨大的字符串,然后解析它,导致内存不足崩溃。因此,我把它扔掉了,现在正在尝试 moo/nearley。

好吧,我似乎也有类似的问题。尽管 moo 和 nearley 都提供了将所谓的“块”作为参数的方法,但 moo 尤其没有意识到它位于字符串的末尾,并且可以在下一个 moo.feed 上获得更多。

例如,我的测试程序尝试将其发送给 moo,一次发送两个字节:[Abcde "bc def"]. 它LBRACKET正确吐出但随后它A作为一个符号吐出。如果我做 a ,它就会作为第二个符号moo.reset(next_two)吐出。bc

所以我的问题是,你,主词法分析器/解析器,到底是怎么做的?我应该回到antlr4吗?我应该以不同的方式使用 moo/nearley 吗?那里有更好的词法分析器/解析器吗?我真的不想从头开始编写自己的,但我真的开始怀疑是否有其他方法。

0 投票
2 回答
240 浏览

regex - 语法 - 如何在单词前后匹配可选和必需的空格?

我正在使用nearley 和 moo来提出一个相当复杂的语法。除了我的空白要求之外,它似乎工作正常。我需要在需要时需要空格,并在不需要时允许它,同时保持语法明确。

例如:

我需要在单词之间使用空格,但允许在逗号周围使用空格。所以以下也是有效的:

下面是一个试图做到这一点的快速近乎语法。如果您不了解语法,则很容易弄清楚。

语法可能有问题,但想法是一样的。这变成了一个模棱两可的语法。如何定义明确的语法,期望可选和必需的空格?

0 投票
0 回答
21 浏览

javascript - moo 词法分析器是否支持所有正则表达式语法?

我只是在玩https://ablingeroscar.github.io/moo-playground/我不明白为什么替换WS: /[ \t]+/不起作用WS: /[\s]+/。那不应该捡起任何空白吗?

同样,我不确定为什么String: /[^]+/(我只是在测试匹配所有内容)也不起作用。

我错过了什么吗?