recursive-descent

    -2热度

    1回答

    我有以下的生产 A -> Aa A -> b 所以很显然,有左递归像 parseA() { parseA();//recursion parsea(); } 据说左递归可以使用可以避免以下规则: A -> bA' A' -> aA'|null 这里如何避免左递归?仍然存在递归在函数A'中。 有人可以解释我这个。我是这个主题的初学者吗?

    13热度

    1回答

    这让我想起了一段时间。我很感兴趣的递归下降解析器,并想知道如何实现一个。我想要的是一个简单的解析器,它可以理解诸如“5 + 5”或“(5 + 5)* 3”等简单算术。 我想第一步是编写一个'tokenizer',它将整个输入字符串分解成多个子字符串。这部分我已经完成了(我甚至不得不问关于它的问题here。如果你不想要,你不必关注链接,因为我也在这里发布相关代码。)使用这个标记器我的结果是vecto

    5热度

    1回答

    我有一个复杂的Python数据结构(如果它的事项,这是一个大music21分数对象),这将不会因酸洗到的存在的值在对象结构内部的某个地方有一个weakref。我之前用堆栈跟踪和python调试器调试过这样的问题,但这总是一个很大的麻烦。有没有一种工具可以在对象的所有属性上递归运行dir(),找到隐藏在列表,元组,字典等中的对象,并返回匹配某个值(lambda函数或类似的东西)的对象。一个很大的问题

    1热度

    1回答

    我正在为编译器设计课程编写一个编译器,我正在编写一个语法分析,我需要编写一个解析器。 我需要有FIRST和FOLLOW集来处理可能出现在源文本中的任何错误。我已经为我的语法中的所有非终端预先计算了FIRST和FOLLOW集,但是我无法确定我应该在哪里将它们实际编码到我的程序中。 我应该把它们放在一个映射中,其中的键是非终端的名称吗? 任何意见将是有益的 这篇文章看起来可能有点不清楚,如果需要,我可

    1热度

    1回答

    这是我询问How to encode FIRST & FOLLOW sets inside a compiler的上一个问题的后续步骤,但这一个更多地是关于我的程序的设计。 我正在通过编写递归下降解析器来实现我的编译器的语法分析阶段。我需要能够利用FIRST和FOLLOW集合,以便更有效地处理源程序语法中的错误。我已经为我的所有非终端计算了FIRST和FOLLOW,但在决定将它们逻辑放置在我的程序

    0热度

    1回答

    官方问题: 编写Java方法来执行以下生产的递归下降解析: <repeat_statement> -> REPEAT <statement> UNTIL <expression> ; 这就是我想出: void repeatStatement() { if(token == REPEAT) { token = getNextToken(); if(parseSt

    4热度

    1回答

    这是我与它的标签加工成树的形式 commandList assign variable #text[a] expression-int #text[1] assign variable #text[b] expression-int #text[2] assign

    2热度

    1回答

    我正试图解析类似于此的语法。 PER -> 'noun' | 'noun1' | 'noun2' PERS -> PER+ 这不是NLTK的递归下降解析器的有效语法。 如何specifiy更多重复的一个标记在这个语法

    1热度

    1回答

    我发现Parse::RecDescent是一个用来实现自然语言解析器的Perl模块。有什么方法可以用C#语言实现Parse :: RecDescent吗?

    3热度

    2回答

    我试图解析一个完全括号精通此语法: exp->(exp + exp) |(exp - exp) | num num->[0-9] ...但我有一个问题:当我输入“1 + 4”出现任何错误。我该如何解决它?