yacc

    0熱度

    1回答

    Lexer.l %{ #include "y.tab.h" %} %% "define" return(TK_KEY_DEFINE); "as" return(TK_KEY_AS); "is" return(TK_KEY_IS); "if" return(TK_KEY_IF); "then" return(TK_KEY_THEN); "else" return(TK_KEY_

    0熱度

    1回答

    我在修復語法中的移位減少衝突時遇到問題。我嘗試添加-v來讀取問題的輸出,它引導我進入狀態0,並提到我的INT和FLOAT被規則9簡化爲variable_definitions。我看不到衝突,並且無法找到解決方案。 %{ #include <stdio.h> #include <stdlib.h> %} %token INT FLOAT %token ADDOP MULOP INCOP

    1熱度

    1回答

    我在野牛中有以下代碼,它擴展了指南中提出的mfcalc,使用FLEX從外部實現了一些函數,如yylex()。 爲了理解我的問題,關鍵規則是在文法開始處的非終結令牌line中。具體而言,EVAL CLOSED_STRING '\n'和END(此令牌由FLEX當檢測到EOF發送的規則,第一打開一個文件和點輸入到該文件。第二關閉該文件,並指出該輸入到stdin輸入。 我「M試圖使規則eval "file

    0熱度

    2回答

    這裏是簡化yaac文件: %token CONTEXT_ // the corresponding string is "context" %token CONTEXTREF_ //"contextref" %token IS_ //"is" %token ID_L //"id_l" %token ID_L1 //"id_l1" %token LIB_ %start desi

    0熱度

    1回答

    爲什麼我必須在以下語法片段中明確使用$<nVal>4? 我以爲%type <nVal> expr行會刪除需要,所以我可以簡單地把$4? 難道不可以使用expr的不同定義,以便我可以嗎? %union { int nVal; char *pszVal; } %token <nVal> tkNUMBER %token <pszVal> tkIDENT %type <nV

    0熱度

    1回答

    與 %nonassoc ELSE %nonassoc THEN 我得到 $野牛-dv tiger.yy tiger.yy:74.5-28:警告:規則解析器無用由於衝突[-Wother] :IF THEN EXP EXP EXP ELSE ^^^^^^^^^^^^^^^^^^^^^^^^ 但 %nonassoc THEN %nonassoc ELSE 該規則起作用。 這是怎麼回事?爲什麼

    0熱度

    1回答

    我的原始.y文件導致一些轉換/減少並減少/減少衝突。 所以我改變了一些規則來消除這些衝突。我可以手動驗證新版本和舊版本之間的等效性。 但是,我想驗證新版本是否自動等同於原始版本?怎麼樣?

    0熱度

    1回答

    test.y %% TOP : OPTIONS ; OPTIONS : OPTION | OPTIONS OPTION ; OPTION : /*no option is possible*/ | 'C' ; %% YACC -v test.y y.output包含以下 0 $accept : TOP

    0熱度

    1回答

    時,我必須分析運動控制程序(數控機牀,GCODE) 這是GCODE加上特定的硬件外形相似的代碼。 有很多命令是由單個字母和數字的,例如: C100Z0.5C100Z-0.5 C80Z0.5C80Z-0.5 所以我(簡寫爲)法(RACC &霸王龍實際上)的部分看起來像: A {[:A,text]} B {[:B,text]} ... Z {[:Z,text]} 因此,我找到一個命令,

    0熱度

    1回答

    好吧,所以我正在嘗試構建我的迷你語言(顯然)的解析器,並且設置變量似乎正常工作。但只要Yacc遇到一個函數定義,它只是給了我一個語法錯誤,還有一些EOF錯誤(我知道這是從Yacc沒有剩餘規則設置的時候開始的),沒有其他事情發生......我在哪裏出錯? 這裏是語法我解析的例子: $name = "John Doe" $age = 72 $waterInOceans = 95.4 !test