bison

    1熱度

    1回答

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

    0熱度

    1回答

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

    0熱度

    1回答

    這是Jison中的解析器,但我猜這同樣適用於Bison。 我有一個規則有一個表達式的定義。 expr : NUMBER -> { type: "number", value: $1 } | "(" expr ")" -> $2 | expr "+" expr -> { type: "+", left: $1, right: $3 } | expr "-" e

    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回答

    野牛語法我要讀一個野牛語法文件和不理解如下聲明: 的語法有一個聯合聲明 %union { int i; char *s; } 令牌聲明如下所示: %token TOK0 TOK1 TOK2 TOK3 TOK4 TOK5 TOK6 TOK7 %token <s> TOK8 %token <i> TOK9 我的期望是

    0熱度

    1回答

    我創建了一個野牛/ flex編譯器,並且遇到了問題。我加了%glr-parser但問題依然存在。我有: 有一個簡單的例子,它代表我的問題 .Y文件: %{ #include <stdio.h> #include <stdlib.h> extern FILE *yyin; extern int yylex(); int line=1; in

    0熱度

    1回答

    我想用野牛創建一個簡單的語法,但是我得到一個警告說非終結者是無用的(additive_expr)。 我的代碼如下所示: %% multiplicative_expr: CONSTANT_INTEGER | multiplicative_expr MULTIPLICATION CONSTANT_INTEGER ; additive_expr: multiplicative_expr |

    0熱度

    1回答

    我對野牛和彎曲不是很有經驗,我需要一些幫助。 我在我的.y文件中有一些錯誤。 語法明智的罰款和編譯的時候是我「野牛-d」它 但是當我嘗試用gcc來編譯它給了我一些錯誤,即時通訊不知道如何解決(這裏總小白): https://i.stack.imgur.com/fUeR7.png 的.lex文件: %{ #include "meals.tab.h" #include <string.h> e