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