yacc

    0热度

    2回答

    我使用PLY解析this语法。我为链接规范中使用的EBNF实现了一个metagrammar,但PLY报告了多个shift/reduce冲突。 语法: Rule 0 S' -> grammar Rule 1 grammar -> prod_list Rule 2 grammar -> empty Rule 3 prod_list -> prod Rule 4 prod_list -

    0热度

    1回答

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

    0热度

    1回答

    此处CR是创建 SP是空格 RE被替换 iam正确地获取输出,但不是仅用于创建。任何人都可以请告诉什么是错的代码 但亚姆仍然收到这样的警告,因此不工作 潘岳:10.5-6:警告:解析器规则无用,由于冲突 %token CR TRI SP RE OR BEF AFT IOF INS UPD DEL ON OF %% s:e '\n' { printf("valid variabl

    1热度

    1回答

    %token DIGIT RETURN IDENTIFIER COLON COMMA ELSE IF NL KEYWORD BR READ WRITE WHILE EQUAL %start y2 %left '-' %left '+' %right '=' %% stmt1:KEYWORD IDENTIFIER X1 //for initialization. ; y2:stmt1

    0热度

    1回答

    我想明白为什么野牛以下规则 stmt: declaration { ... } | assignment { ... } | exp { ... } | ID ';' <-- this rule { ... fprintf(stderr, "\n my id is '%s'", $1);

    0热度

    1回答

    我正在寻找c语法,发现这个链接https://www.lysator.liu.se/c/ANSI-C-grammar-y.html#cast-expression问题是有语法的c和lex代码,但我没有看到任何语义像加法,乘法实现我知道yacc只用于语法检查,但我们也可以在其中写入语义,其中实现的语义是在其他工具中实现的。 我想实现一个小型编译器,我在哪里写语义,是否好在yacc中使用函数编写它们。

    -1热度

    1回答

    我正在尝试为我自己的迷你语言构建一个解析器,然后由YACC自己将它翻译成C++。 问题是,YACC正在读取输入的第一行以及输入的第二行中的第一个标记,并将其与相应的规则进行匹配,而它应该只读取第一行输入中的标记以及与相应的规则匹配它 我的输入文件是: print "hello" a = 10 print a 莱克斯文件: %{ #include <stdio.h> #i

    0热度

    1回答

    问题的一部分:这个问题的 expr_var: var_or_ID | expr_var '[' expr ']' | NEW expr_var '(' expr_listE ')' | expr_var '(' expr_listE ')' | expr_var ARROW expr_var | expr_var ARROW '{' expr_var '}' | expr_var DC

    0热度

    1回答

    我想了解编译器和编程语言是如何制作的。为了做到这一点,我想创建一个简单的计算器,只是加法和减法。下面是我编写的Lex和Yacc文件。 calc.yacc文件: %{ #include <stdio.h> #include <stdlib.h> extern int yylex(); void yyerror(char *); %} %union {

    0热度

    1回答

    我正在使用lex和yacc编写C中的编译器,并且难以理解在yacc中的语法树上传递值。 假设我有一个像 arg_list : exp | arg_list ',' exp; 行语法这是应该像参数零件模型的功能如 x = f(3+4, 2*5); 我将如何使用$$=...传递值的内心第二条指令的树?我知道我可以设置像$$=$1+$3这样的值来传递两个值的总和,并且为第一条指令提供$$=$1