LR語法分析器程式設計

2021-04-30 05:36:33 字數 930 閱讀 9809

#include 

#include 

#include 

#include 

struct code_val;

const char *p=;

const char tnt[ ]="+*()i#etf";

//lr分析表列的字元

const int m[9]=,

//0表示出錯,s4用4表示。 ,

//acc用99表示 ,

//r2用-2表示 ,

, ,, ,

, ,,

}; int col(char);

//列定位函式原型

void main() ;

//狀態棧初值

char symbol[50]=;

//符號棧初值

int top=0;

//棧頂指標初值

ofstream cout("par_r.txt");

//語法分析結果輸出至檔案par_r.txt

ifstream cin("lex_r.txt");  // 從lex_r.txt中輸入詞法分析結果 

struct code_val t;

//結構變數,存放單詞二元式。

cin>>t.code>>t.val;

//讀一單詞 

int action;

int i,j=0;

//輸出時使用的計數器,並非必要。

cout<<"step"<<'/t'<<"狀態棧"<<'/t'<<"符號棧"<<'/t'<<"輸入符號"< do

else if(action < 0)

else if(action==99)

else

}while(1); }

int col(char c)

//將字元+* ()i#etf分別轉換為數字012345678

LR 語法分析器

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

編譯原理 語法分析3 LR分析器

語法分析,lr分析器 import pandas as pd data slr pd.dataframe data,index 0 1 2 3 4 5 6 7 8 9 10 11 slr分析表 grammer e e t e t t t f t f f e f id 文法的各個產生式 stk 0 用...

LALR語法分析器

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