lalr

    0热度

    1回答

    我有以下一段代码: case 1 of 2 3 of 3 4 5 那我的自定义标记生成器转换为: Tokens: [{'case',1}, {integer,1,1}, {eol,1}, {'of',1}, {integer,1,2}, {block,[{integer,1,3}]}, {eol,

    1热度

    1回答

    这是我第一次使用银联解析器和我不断收到以下错误: “警告:*生产” ......”从来没有使用过 我可以“吨弄清楚什么是错了,请帮忙看 代码和eror日志下面连接,由于 package adtl; import java_cup.runtime.*; import java.util.*; import adtl.Lexer.*; import adtl.ast.*; parser

    0热度

    1回答

    我目前首次使用Flex和Bison。我已阅读关于Bison manual page的上下文优先级。试图建立一个最小的例子,而不使用%prec指令,因为我不太熟悉它的真正用途。这是我最小的例子。 的Flex文件 %option noyywrap %{ #include <iostream> #include "parser.h" int lineNum = 1; %} %% [

    0热度

    1回答

    我对LALR(1)解析器的lookahead计算有点困惑。 在“分析技术 - 实用指南”一书中,他们指出传播超前(+自发生成的超前)等同于计算变量的FOLLOW()。那么,为什么LALR(1)解析器(根据龙书)根本就使用传播/自发技术,如果它可以用FIRST()和FOLLOW()来处理,这很简单并且直接计算? 如果不是这种情况,两种技术有什么区别?

    4热度

    1回答

    有关LALR(1)语法分析器,主要涉及解析的细节冲突的一些问题: 根据不同LALR在教科书中描述的(1)语法分析器如果遇到转换/减少冲突,那么这是语法不是LALR(1)开始的标志,对吧? 缩小/减少冲突可能会出现在有效 LALR(1)语法,由于国家的合并来自LR(1)做LALR(1),对不对? 优先级和结合,如YACC和野牛GNU使用,被介绍的工具来帮助解决移位/减少冲突,对不对? 此外,关联性只

    1热度

    1回答

    int a; a = a+++a; // Why does this create no error but a = a+++++a; // Create a semantic error 我有点困惑,为什么第二行不会产生任何错误 但为什么第三个创建语义错误?

    0热度

    2回答

    我正在尝试用Yecc编写一个Erlang解析器,但我在语义规则的优先级上遇到了一些麻烦。在我的例子中,我定义了语法,终端和非终端符号,规则和相关的代码。 这是我写的测试。 %Grammar non terminals Nonterminals product require require1 mandatory mandatory1. %Grammar terminals Terminal

    1热度

    1回答

    我试图使自定义基于C语言的编译器,它支持使用C++和Flex +野牛变量的作用域与作用域的语言。我已经做了词法和语法分析器,但我有麻烦解决问题与作用域。我在野牛解析器文件中实现了语义动作,例如 while_stmt : WHILE LEFT_PAREN expr RIGHT_PAREN LEFT_CBRACE stmts RIGHT_CBRACE { $$ = new WhileStatement

    0热度

    1回答

    我在这个普通的正则表达式解析器中遇到了移位/减少冲突。我是yacc的初学者,我似乎有点困惑。以下是我迄今写: %token ID %% exp: ID { $$ = new YYRegExParserVal(this._createObjectForID($1.ival)); } | exp exp { $$ = new YYRegExParserVal(this._createO

    -1热度

    1回答

    我使用whittle解析语法,但我遇到了经典的LALR ambiguity problem。我的语法看起来像这样(简化): <comment> ::= '{' <string> '}' # string enclosed in braces <tag> ::= '[' <name> <quoted-string> ']' # [tagname "tag value"] <name> ::=