21得票3回答
使用 PEG.js 进行简单解析的问题

我正在尝试通过将简单的语法输入到PEG.js playground中来理解 PEG。 例子 1: 输入:"abcdef1234567ghijklmn8901opqrs" 期望输出:["abcdef", "1234567", "ghijklmn", "8901", "opqrs"] ...

17得票2回答
连接不是一个函数。

我正在使用 PEG.js 进行实验 start = keyword keyword = a:[a-z]? {return a.join("");} 当我输入有效字符串abc时,为什么会出现错误:a.join不是一个函数

17得票1回答
从 PEG.js 语法生成 TextMate 语言语法

有没有一种工具可以将 PEG.js 语法转换为 TextMate 语法? 我正在构建自己的语言,并希望在我喜欢的编辑器 TextMate 中为其提供语法高亮。我的语言语法是使用 PEG.js 构建的。根据 TextMate 文档 的使用说明,我必须以与 PEG.js 不兼容的形式编写 Tex...

15得票1回答
TS2307: 无法找到模块或其相应的类型声明。

我有一个私有的 GitHub 仓库 my-parser-generator,使用了 pegjs。所有底层逻辑都是用 TypeScript 编写的,然后编译并提供给 pegjs,进而生成最终的解析器。 然后这个仓库作为依赖包在另一个私有仓库 parser-consumer 中使用,该仓库使用 ...

13得票2回答
如何使用PEG.js构建一个左结合操作符树?

如何使用PEG.js为左结合运算符构建抽象语法树(Abstract Syntax Tree)? 我尝试根据在互联网上找到的信息编写了一些代码,但似乎犯了错误。 我编写的代码对大多数表达式生成了不正确的AST。 表达式 12-6-4-2*1-1 预期的抽象语法树 { "le...

12得票3回答
配置Karma使用RequireJS加载PegJS

我将使用PegJS和requirejs来测试一个项目。 我有几个源文件,实现为AMD模块(define),通过require API加载。以下是目录结构: js/ somefile.js main.js parser.js test/ parser.spec.js ...

11得票2回答
在peg.js中,回溯是如何工作的(附带示例)?

我已经定义了以下最简Peg.js语法:start = "A1" / "A123" 您可以在沙盒中尝试。 根据我的回溯方式,我本来希望能匹配"A1"和"A123"。但事实并非如此:该语法可以识别"A1"但无法识别"A123"。 注意:我不是要求像相关问题How to transform ...

9得票1回答
我该如何使用PEG语法解析这个内容?

我正在尝试使用pegjs制作解析器。 我需要解析类似于以下的内容: blah blah START Lorem ipsum dolor sit amet, consectetur adipiscing elit END foo bar etc. 我在编写从 "START" 到 "E...

7得票3回答
使用PEG解析器进行BBCode解析:pegjs还是...什么?

我有一个将bbcode转换为html的转换器,它响应文本区域中的更改事件。目前,这是使用一系列正则表达式完成的,并且存在许多病态案例。我一直想在这个语法上磨刀,但不想涉及到琐碎的工作。但是...最近我意识到pegjs,它似乎是PEG解析器生成的一个相当完整的实现。我已经指定了大部分语法,但现在...

7得票1回答
解析不带左递归的布尔表达式

我正在尝试匹配这个 f(some_thing) == 'something else' f(some_thing) 是一个函数调用,是一个表达式 == 是一个布尔运算符 'something else' 是一个字符串,也是一个表达式 所以布尔表达式应该是: expression ...