yacc

    1热度

    1回答

    有关使用YACC解析正则表达式(实际上,我使用PLY)的思想,有些规则是这样的: expr : expr expr expr : expr '|' expr expr : expr '*' 的问题是,第一条规则(串联)必须优先于第二条规则,但不是第三条。 但是,并置规则中没有操作符。 如何在这种情况下正确指定优先顺序? 谢谢! 编辑: 我修改了规则,以避免这个问题,但我仍然好奇,是什么问题

    -1热度

    1回答

    我正在YACC中编写HTTP头分析器。由于HTTP请求和响应除第一行外都具有相同的结构,所以我希望对它们使用相同的解析器。我个别测试了request_line和response_line,它们分别处理HTTP请求和HTTP响应。但是,当我按照以下方式组合它们时,http_header只与HTTP请求规则匹配,并在给出HTTP响应HTTP/1.1 200 OK\r\nHost: foo.com\r\

    0热度

    1回答

    所以我正在做这个项目,你要命令叉车用自然语言做某些事情,而我正在使用Python Lex Yacc。我想知道是否有办法区分长度相同的排列后的语法?文档只说明你可以用len(p)来做,但只有在长度不同时才有帮助。示例代码: def p_moveitemfromto(p): '''moveitemfromto : MOVEITEM fulltype item rack rack side

    1热度

    2回答

    我需要使用ply从正则表达式创建AST。例如,如果RE是(a | b *)abc,我想将一个缩减的元组作为(':',(':',(':',('|','a',(' *','b')),'a'),'b'),'c')< - ':'表示只是将字符串分成两部分。 这是我的代码。 tokens = ( "SYMBOL", "LBRACKET", "RBRACKET", "ST

    1热度

    1回答

    我按照这里描述的所有步骤:How to compile LEX/YACC files on Windows? 但我收到此错误:

    0热度

    1回答

    我对lex和yacc有以下代码。任何人都可以在印刷的声明中看到额外的价值。代码有什么问题? 莱克斯代码: %{ #include <stdio.h> #include "y.tab.h" %} %% [ \t] ; [+-] { yylval=yytext; return Sym;} (s|c|t)..x { yylval=yytext; return Str;} [a-zA-Z

    0热度

    1回答

    我试图用yacc/bison语法构造一个比较链表。 总之我概念想拿: 3 < 4 < 5 ,创造我试过的价值,比较等基本链表来简化我现在有具体-IST测试用例 %{ #define LESS_THAN 1 typedef struct mylist { long num; int sym; mylist* next; } mylist; void d

    0热度

    1回答

    我是Lex/Yacc编程中的新成员。我有一个关于如何从另一个C文件中调用Yacc文件中的函数的问题。假设我有以下莱克斯/ Yacc的代码: calc.l %{ #include "y.tab.h" extern int yylval; %} %% [0-9]+ { yylval=atoi(yytext); return NUMBER;} [ \t]; \n

    0热度

    1回答

    我有一个关于Yacc的问题。这是我用于解析C语言语法的Yacc代码。需要注意的是,下面的代码是唯一的完整代码的一些相关部分: %token IDENTIFIER I_CONSTANT F_CONSTANT STRING_LITERAL FUNC_NAME SIZEOF %token PTR_OP INC_OP DEC_OP LEFT_OP RIGHT_OP LE_OP GE_OP EQ_OP N

    0热度

    1回答

    冲突 我有以下的语法(Yacc中),这是一个简单的C编译器的开始,我是从一个简单的if声明开始: S : E ; E : COND_NO_ELSE ; COND_NO_ELSE : IF BOOL_EXP BLOCK ; BLOCK : LC EXP RC BOOL_EXP : LP EXP BOOL_OP EXP RP ; BOOL_OP :