yacc

    0热度

    1回答

    我目前正在实施Decaf(编程语言)语法的一部分。这里是野牛代码中的相关片段: type: INT | ID | type LS RS ; local_var_decl: type ID SEMICOLON ; name: THIS | ID | name DOT ID | name LS

    -1热度

    1回答

    我正在为使用yacc/lex编写一个简单的shell语法。我希望我的语法能够识别具有以下形式的管线: command1 | command2 | ... | commandn。我可以将单个命令重新规范化,其中the simple_command规则作为下面代码中的起始非终端。但是,当我添加其他规则(simple_command_list和pipeline)来解析管道时,事情不起作用。为了测试语法,

    1热度

    1回答

    我已经写了这个YACC程序来验证字符串w.r.t语法{ckanbm: n ≠ m ∧ k,m,n > 0}。 NL代表换行符。令牌通过已经在那里的lex传递。但是,这个错误是给出的。我认为,产生式规则都OK,但我收到此消息: [[email protected] wali1]$ yacc -d assign1.y yacc: 2 shift/reduce conflicts, 1 reduce/

    0热度

    1回答

    编辑:改变了Polinom规则 我试着写一个简单的编译器,那将认识多项式并打印出来。尽管如此,正如预期的那样,它在打印出多项式后吐出语法错误写入。这些问题困扰我的是无法弄清楚它是导致所有大惊小怪的词法分析器还是解析器。 parser.ypp %{ #include <iostream> #include <cstdlib> #include <cmath> #include <vecto

    0热度

    1回答

    我使用flex和bison为虚构的编程语言创建解析器。将会有有效和无效的变量名称。 XXXX XY-1 // valid XXXXX Z // valid XXX Y // valid XXX 5Aet // invalid XXXX XXAB-Y // invalid x的开头只是指定变量的大小。变量5Aet是无效,因为它以数字开头。我已成功地匹配这个 [\_\-0-9][a-zA-

    1热度

    2回答

    这里冲突的例子是C编译器的一部分: Exp : INTNUMBER { $$ = $1; } | lvalue { $$ = $1; } | REALNUMBER { $$ = $1; } | CHARVALUE { $$ = $1; } | TRUE { $$ = $1; }

    0热度

    1回答

    我想使用flex和yacc来识别整数令牌。这是我用于整数的flex文件语法。 %{ #include "main.h" #include "y.tab.h" #include <stdlib.h> #include <string.h> #define YYSTYPE char * void yyerror(char *); %} code "code" special

    0热度

    1回答

    我正在写作业控制外壳。我使用Yacc和Lex进行分析。我的语法中的最高规则是pipeline_list,这是一个用逗号分隔的管道列表。因此,是pipelinelists的实例如下: cmd1 | cmd2; cmd3; cmd4 | cmd5 <newline> cmd1 <newline> <nothing> <newline> 我表示与pipeline规则管道(下面显示)。在该规则中,

    0热度

    1回答

    我正在使用ML-Yacc在SML中处理我的Tiger compiler的解析器组件。我找不到任何明显的语法问题(我使用优先规则来解决所有移位 - 缩减冲突),但似乎从来没有减少使用lvalue的第二条和第三条规则,我已经指定如下: lvalue : ID () | lvalue DOT ID () | lvalue LBRACK exp RBRACK()

    -1热度

    1回答

    我想用特定语法解析文本文件。 文件的内容会像 The Living Room is a room. 我在法 The return THETOK; [a-zA-Z]* return ROOMNAME; "is a room." return ISROOMTOK; 而在YACC文件我已经写了写了下面的标记以下 command: THETOK ROOMNAME ISROOMTOK