lr

    0热度

    1回答

    我似乎无法找到等价的LR语法: S→aSbS | bSaS | ε 其中我认为识别字符串与'b'相同的数字比'b'。 这将是一个解决方法?是否有可能找到和LR语法呢? 在此先感谢! 编辑: 我发现什么,我认为是等效的语法,但我一直没能证明这一点。 我想我需要证明原语法生成上面的语言,然后证明语言是为以下等价语法生成的。但我不知道该怎么做。我应该怎么做? S→aBS | bAS | ε B→b |

    0热度

    1回答

    我对这本教科书很难接受,而且我的教授认为回答问题对已经知道进入课堂的材料的学生是不公平的(从这个人获得的反馈是一个数据挖掘过程本身)。无论如何,我的问题围绕着CFG(正式语言/函数式编程类)的派生。 Given a context free grammar that looks like: S-> a|B B-> b|C C-> c 找到最左边的推导。是简单的吗?因为S-> a是S->

    2热度

    1回答

    以下语法生成句子a, a,a, b,b, b,...,h, b。不幸的是,它不是LR(1),所以不能用于诸如“yacc”之类的工具。 S -> a comma a. S -> C comma b. C -> a | b | c | d | e | f | g | h. 是否有可能改变这个语法为LR(1)(或甚至LALR(1),LL(k)或LL(1)),而不需要扩大非终结C,因此显著增加制作

    0热度

    2回答

    我想写入BNF形式的LR(1)的语法用于通过这两个规则从The Complete Syntax of Lua描述的语言: parlist ::= namelist [`,´ `...´] | `...´ namelist ::= Name {`,´ Name} 我试图下面的语法,但根据我使用的工具,两者都是 “不LR(1)由于SHIFT-减少冲突”: parlist ::= namelist

    0热度

    1回答

    我打算用野牛解析一些脚本语言移减少冲突,在这种语言,我可以写类似下面的代码: a = input() b = a + 1 function myfunc a = input() b = a + 1 end function 我发现,该块 a = input() b = a + 1 其中进出函数定义的同时出现可以通过相同的规则stmts被减小,所以我写如下代码 %

    1热度

    1回答

    我有以下语法: expr : factor op ; op : '+' factor op | // Blank rule for left-recursion elimination ; factor : NUM | '(' expr ')' ; NUM : ('0'..'9')+ ; 我公司供应2 + 3,使用expr的

    0热度

    1回答

    对于不LL(1)或LR(1)一个人如何可以尝试找出是否某些数量n存在使得语法可LL(n)或LR(n)语言? 通过查看LR(0)项目的规范集合来检查语法是否为LR(0)。然后,假设它不是LR(0),可以通过引入lookahead符号来检查它是否为LR(1)。我的简单推理告诉我,为了检查它是否为LR(2),您可能必须使前瞻包含接下来的两个符号而不是一个。对于LR(3),您必须考虑三个符号等。 即使这种

    1热度

    1回答

    考虑下面的语法 S -> aPbSQ | a Q -> tS | ε P -> r 虽然构建DFA,我们可以看到有一个应当包含项目 Q -> .tS Q -> . (epsilon as a blank string) 因为t为后续的状态(Q)似乎有一个转变 - 减少冲突。 我们可以总结语法的本质不是SLR(1)吗?

    0热度

    1回答

    当你有像这样的语法: B: 'a' A 'a' | 'b' A 'b' A: 'a' 'a' | 'a' 的右%“A”的声明引起aa.a不是因为被接受在'。', 和%left'a'之间发生移位而不是减少aa.aa和ba.ab,因为解析总是在点处减少。 这是不是很清楚,我如何找出根本的关联声明具有在令牌(“A”)没有被直接地用作运营商这样的情况下什么样的影响。

    0热度

    1回答

    我已经编写了一个LR(1)解析器,它可以成功地将我的语法语言中的字符串解析为具体语法树,但我现在试图构造一个抽象语法树。 我使用的是继承的设计我的AST节点: struct ASTNode { virtual Type typeCheck() = 0; } struct IDNode : public ASTNode { string name; ... }