bison

    0热度

    1回答

    我目前正在尝试解析逗号分隔列表,至少有两个元素使用野牛。 我知道如何解析使用这个列表: list : list "," element | element ,但我怎么能确保该名单至少有两个元素?

    0热度

    1回答

    我正在尝试使用flex/bison作为练习来制作一个简单的玩具(LET)语言。不过,我不断收到以下错误,当我运行命令g++ -Wall -std=c++11 repl.cpp -v -o LET: Undefined symbols for architecture x86_64: "yy_scan_string(char const*)", referenced from:

    0热度

    1回答

    要返回完全建立AST,有人告诉我,我应该用我在其中存储它一个全局变量: %{ AST::Root* root; %} %start program %% program: ... { $$ = root = new AST::Root(...) } ... ; 但是,这是唯一的办法?还是有更好的办法,也许一种方式直接从yyparse()返回

    -1热度

    1回答

    我正在通过O'Leilly Flex & Bison作者:John Levine,在尝试编译和运行一个简单的BNF计算器的示例时遇到以下问题 > ./fb1-5 2 + 3 * 4 = 0 2 * 3 + 4 = 0 c Mystery Character c error: syntax error 程序似乎相应确认非数值输入和退出,但是任何整数输入与MULT/DIV /添加/子

    0热度

    1回答

    我想实现一个简单的if语句在Flex和野牛以下形式: (表情)(表情) 如果左边表达式是非零?值,那么正确的表达式将被执行。 使用Bison语法规则,任何人都可以告诉我一个如何做到这一点的例子吗? 这里是我的野牛代码PIEC这显示了我到目前为止有: %union{ int d; char *s; } %token <d>INTEGER %token <s>VARIABLE %nona

    0热度

    1回答

    我一直在试图建立在野牛一个小解析器,但是当我尝试建立我得到它: stone.tab.cc: In member function ‘virtual int yy::StoneParser::parse()’: stone.tab.cc:507:81: error: invalid initialization of non-const reference of type ‘StoneDriver&

    0热度

    2回答

    如何在bison/yacc中使用继承的属性? 说,我有一个这样的语法 - 程序 - >撑条 我想要做的是野牛: 程序:支杆{$$下一= newLabel()。 $ 1.next = $$。next; } 接下来是在结构中声明的属性,并且该类型被添加到联合。

    0热度

    1回答

    考虑以下(当然荒谬的 - 这已经大大简化,以说明这一点)语法: negationExpression : TOK_MINUS constantExpression %prec UNARYOP | testRule ; constantExpression : TOK_INTEGER_CONSTANT | TOK_FLOAT_CONSTANT

    0热度

    1回答

    我想制作一个编译器,现在我正在尝试制作解析器。 我得到这个状态的警告: 国家89 62 expr: '(' expr . ')' 66 | expr . '+' expr 67 | expr . '-' expr 68 | expr . '*' expr 69 | expr . '/' expr 70 | expr . '%' expr

    2热度

    1回答

    我是新来的flex和野牛,所以忍受着我。我试图在yyerror中使用yylloc打印错误发生的位置以及文件名。我知道这需要我重新定义YYLTPYE以包含char *文件名,我可以使用它来跟踪文件名。按照Flex和野牛的书我有,它建议我使用YY_USER_ACTION宏来初始化.L文件YYLTYPE,所以我包括在它下面, #define YY_USER_ACTION yylloc.filename