用YACC構造簡單語法分析器

2021-07-08 13:34:00 字數 693 閱讀 9958

課堂實驗題

說明部分

%%翻譯規則

%%用c語言編寫的輔助例程

按照yacc的源程式規則由題中所給文法寫出trans.y

%

%token digit

%%line :expr'\n'

;expr :expr'+'term

|expr'-'term

|term

;term :term'*'factor

|factor

;factor :'('expr')'

|digit

;%%main()

int yylex()

return c;

}int yyerror(char *s)

我所使用的yacc工具是bision,執行 bison trans.y得到trans.tab.c,然後對.c檔案進行編譯得到trans.tab.exe可執行檔案。

最後測試一下就ok了。

最後結果很明顯是正確的。

注:上面的**並不是嚴格按照課本上的方法做的(嚴格按照課本上的做法會出錯,需要在一些地方做一些修改。)

語法分析器構造 詞法分析器構造實驗

借助於詞法分析程式提供的分析結果,編寫乙個算符優先語法分析程式,程式能進行語法結構分析和錯誤檢查,並產生相應的歸約資訊。同時給出出錯資訊和錯誤型別,從而加深對語法分析的理解。二 實驗內容 給定文法g和算符優先分析法,構造其算符優先分析程式。文法g 語句 賦值語句 條件語句 轉移語句 帶標號的賦值語句...

LR 語法分析器

lr語法分析器算是基本完成了,只需要乙個文法定義檔案 syntax 就可以進行對應語言的語法分析,最後形成語法樹。詞法分析是固定的,採用c 的詞法定義。以後將加入動態的詞法分析。壓縮包中檔案的描述 lrtable.exe 是用文法定義檔案 syntax檔案 生成lr動作表檔案 action檔案 使用...

LALR語法分析器

lalr分析器 是一種規範lr分析方法的簡化形式。它可以對上下無關文法進行語法分析。lalr即 l ook ahead lr 其中,look ahead為 向前看 l代表對輸入進行從左到右的檢查,r代表反向構造出最右推導序列。lalr分析器 可以根據一種程式語言的正式語法的 產生式而對一段文字程式輸...