93得票1回答
LL解析器和递归下降解析器的区别是什么?

我最近试图自学语言/无上下文语法解析器,大部分内容似乎都很清晰易懂,只有一点不太理解。我特别关注 LL(k) 文法,其中两个主要算法似乎是 LL 解析器(使用堆栈/解析表)和 递归下降解析器(只需使用递归)。 据我所知,递归下降算法可用于所有 LL(k) 文法,可能还有更多,而 LL 解析器...

30得票9回答
在Powershell中将文件重命名为小写

我试图使用PowerShell 2.0递归地重命名一堆文件。目录结构如下:Leaflets + HTML - File1 - File2 ... + HTMLICONS + IMAGES - Image1 - Image2 - File1 - File2...

22得票6回答
如何使用json.net进行json的递归下降?

我正在尝试使用json.net解析一个json文件。该文件的格式如下:{X: { Title:"foo", xxxx:xxxx } } {Y: {ZZ: {Title: "bar",...} } } 我试图递归处理所有带有Tit...

18得票1回答
哪些文法可以使用递归下降算法而不需要回溯进行解析?

根据维基百科上的"递归下降分析器",不使用回溯的递归下降分析(即预测分析)仅适用于LL(k)文法。 在其他地方,我读到Lua的实现使用了这样的解析器。然而,该语言并不是LL(k)。事实上,Lua本质上是有歧义的: a = f(g)(h)[i] = 1 的意思是 a = f(g); (h)[i...

18得票3回答
递归下降解析器实现

我希望编写一些递归下降解析器的伪代码。但是我没有编写此类代码的经验。我已经阅读了一些在线示例,但它们仅适用于使用数学表达式的语法。以下是我正在构建解析器的语法规则。S -> if E then S | if E then S else S | begin S L | print E L...

18得票4回答
PyParsing中的简单递归下降解析

我尝试着将这段代码转换为我正在进行的编程语言处理项目所需的形式,但是在一个简化版本中,我遇到了问题:op = oneOf( '+ - / *') lparen, rparen = Literal('('), Literal(')') expr = Forward() expr <&lt...

16得票1回答
如何使用简单的递归下降解析器在C++中解析基本算术表达式(例如“5 + 5”)?

这个问题困扰了我一段时间。我对递归下降解析器很感兴趣,想知道如何实现它。我想要的是一个简单的解析器,可以理解像“5+5”或“(5+5)*3”这样的简单算术表达式。 我认为第一步是编写一个“分词器”,将整个输入字符串拆成多个子字符串。这部分我已经完成了(我甚至不得不在此处询问过)。如果您不想跟...

14得票2回答
将EBNF转换为BNF

离我上一次上计算机语言课已经过了几年,因此我忘记了BNF和EBNF的更细节的部分,并且我身边没有教科书。具体来说,我忘记了如何将EBNF转换为BNF。 从我所记得的很少的一点来看,我知道其中一个主要点是要进行转换{ term } 进入<term> | <many-terms&...

14得票1回答
表达式解析器文法和左结合性

我一直在尝试创建一个带有变量的表达式解析器,并将它们简化为二次方程式的形式。 这是我的解析器语法:Exercise : Expr '=' Expr Expr : Term [+-] Expr | Term Term : Factor [*/] Term | Factor Factor: Ato...

12得票1回答
使用boost::spirit从语法中组合语法

我已经学会如何使用Spirit,也就是说,我已经编写了一个相对复杂的语法。我总是采用逐步增加程序子系统的方法。我已经为一个复杂模型编写了数据结构,该模型在最高级别上有4种类型。 我想使用基于规则组合的语法逐个解析顶层类型 - 也就是说,我想编写4个语法,每个语法都有一个顶层语法。如果这是可能...