问题标签 [ll]
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.
parsing - 使用 ANTLR 解析 Markdown 块引用
这一直是困扰我一段时间的事情。如何使用 ANTLR 将以下文本解析为下面的 HTML?我似乎根本无法解决这个问题。
有任何想法吗?
降价:
输出 HTML:
recursion - Antlr 左递归问题
我的 Antlr 语法中有一个左递归问题。虽然我认为我理解为什么会出现问题,但我无法想到解决方案。问题在于我的数据类型规则的最后一行。我已经包含了整个语法供您查看:
我正在使用 Antlr 进行开发,它提供了解决此问题的功能 - 但不幸的是它似乎不起作用:s
任何帮助都会很棒。
谢谢。
编辑:
这是我尝试实现/解析的语言示例
例如:
parsing - LL 解析器如何评估这个表达式?
考虑这个表达式:
3 + 2 + 2 * 2 = ?
会是14吗?
parsing - 解析中使用的 FIRST 和 FOLLOW 集是什么?
什么是 FIRST 和 FOLLOW 集?它们在解析中用于什么?它们是用于自上而下还是自下而上的解析器?
谁能向我解释以下一组语法规则的 FIRST 和 FOLLOW SETS:
compiler-construction - 自上而下的解析器希望在“代码”中有不错的案例示例左递归
你好,堆栈的流成员。
我正在学习编译器类。我确实理解 Top-Down Parser 应该避免左递归,并转换为右递归方式。
问题是,
a)我是否理解正确的 Top-Down Parser 等于 LL 而 Bottom-Up Parser 等于 LR ?
b) 我发现左递归是自称 ex) Expr :== Expr '+' Term | 可以导致无限循环查找 Expr 的项。但无论如何,任何考虑输入 C 或 Java 的示例代码?(我不想要解析器或扫描仪代码)我需要的是带有句子形式的案例代码示例,通过左递归发生无限循环。
c) 在自顶向下解析器中使用右递归实际上有什么不同?
ANS c) 无需回溯。但还有别的吗?
ANS b)x - 2 * y
还有别的东西吗?因为这个适用于回溯的解析方式。
我发现了非左递归和左递归的案例示例。
左递归语法
非左递归语法
两者都进入无限循环。
谢谢你,感谢你所有的专家。
parsing - LL 解析器比 LR 解析器有什么优势?
LL 解析器与 LR 解析器相比有哪些优势,以保证它们在当今的解析器生成器工具中相对受欢迎?
根据Wikipedia,LR 解析似乎比 LL 具有优势:
LR解析比LL解析可以处理更大范围的语言,并且在错误报告方面也更好,即当输入不符合语法时,它会尽快检测到语法错误。这与 LL(k)(或更糟糕的是,LL(*) 解析器)形成对比,后者可能会由于回溯而将错误检测推迟到语法的不同分支,这通常会使错误更难在具有长公共前缀的析取中定位.
注意:这不是家庭作业。当我发现 Antlr 是一个 LL 解析器生成器时,我感到很惊讶(尽管它的名字中有“LR”!)。
parsing - 编写手动解析器
我需要手动编写解析器。不能在 LL(*) 和 LR 之间进行选择(也许试试 Earley?)。我应该使用自下而上的解析,因为 LL 的语法会相当困难吗?
lalr - 将 LALR 转换为 LL
我有 SABLECC 的这个(工作)LALR 语法:
我试图将它转换为使用 ANTLR(LL 解析器生成器)的 XText。我在转换这两个左递归规则时遇到了麻烦:
我该怎么做?我认为我应该使用运算符优先级,但现在我不能只是以LL 的方式思考。
parsing - 编写正确的 LL(1) 语法?
我目前正在尝试为编程语言编写一个(非常)小的解释器/编译器。我已经设置了语言的语法,现在我需要写下语言的语法。我打算使用 LL(1) 解析器,因为经过一番研究,它似乎是最容易使用的。
我是这个领域的新手,但根据我收集到的信息,强烈建议使用 BNF 或 EBNF 形式化语法。然而,似乎并非所有语法都适合使用 LL(1) 解析器来实现。因此,我想知道以 LL(1) 形式编写语法的正确(或推荐)方法是什么。
谢谢你的帮助,查理。
PS:我打算使用 Haskell 的 Parsec 库编写解析器。
编辑:另外,根据 SK 逻辑,Parsec 可以处理无限前瞻(LL(k) ?) - 但我想这个问题仍然代表这种类型的语法。