這是老師布置的編譯原理的實驗課任務,課餘時間花了近乙個星期的時間去編寫**(主要是c++太久沒有用了,好多函式都不熟悉,查閱了很多資料),這次的詞法分析也沒有語法錯誤判斷功能,如果想要增加功能可以在相關函式**段增加即可.對於此法單元的種別碼也只是簡單區分,不過自己加上去就可以了c語言詞法分析流程如圖所示:
這次的**基本沒有寫注釋,但是我相信大家結合流程圖也能看懂,如果覺得太長可以將**複製到visual studio中將函式**塊閉合起來這樣看起來就邏輯清楚了
#include
#include
#include
#include
#include
using
namespace std;
string readfile
(string filename)
;string filefilter()
;string singlelinecommentsfilter()
;string multilinecommmentsfileter()
;string specialcharacterfilter()
;void
separateandjudge()
;bool
isreservedword
(string vocabulary)
;void
separateandjudge()
;void
showtokendata()
;int
digitstarted
(int cnt)
;bool
isboundsymbol
(char ch)
;bool
isoperator
(char ch)
;int
judgestartingcharactortype
(char ch)
;bool
isdigit
(char ch)
;bool
isalpha
(char ch)
;int
alphastarted
(int cnt)
;int
underlinestarted
(int cnt)
;string transchartostring
(char ch)
;string codesource;
mapint> tokens;
//identifier is 1,reservedword 2,digit 3,bordersymbol 4,operator 5
intmain()
string readfile
(string filename)
else
return codesource;}}
;string filefilter()
;void
separateandjudge()
}}}void
showtokendata()
string singlelinecommentsfilter()
}}return codesource;
}string multilinecommmentsfileter()
}while
(codesource[cnt +2]
!='*'
and codesource[cnt +3]
!='/');
codesource.
erase
(cnt,4)
;}}return codesource;
}string specialcharacterfilter()
}return codesource;
}int
judgestartingcharactortype
(char ch)
else
else
else
else
else}}
}}return type;
}int
digitstarted
(int cnt)
tokens[digit]=3
;return cnt;
}int
alphastarted
(int cnt)if(
isreservedword
(alpha)
)else
return cnt;
}int
underlinestarted
(int cnt)
tokens[word]=1
;return cnt;
}string transchartostring
(char ch)
bool
isreservedword
(string vocabulary)
;bool flag =
false
;for
(int i =
0; i <
32; i++)}
return flag;};
bool
isboundsymbol
(char ch)"}
;for
(int i =
0; i <
6; i++)}
return flag;
}bool
isoperator
(char ch)
;for
(int i =
0; i <
9; i++)}
return flag;
}bool
isdigit
(char ch)
return flag;
}bool
isalpha
(char ch)
;return flag;
}
c語言詞法分析器
include include include void main void int reserver char void main void if output fopen output.txt wt null fprintf output,4s t 8s t 16s t 4s n 位置 符號型別...
C語言詞法分析器
include include include include define len 180 int syn,p,m,n char token 10 ch char keyword 32 struct wordline 定義結構體 struct wordline creat struct wordl...
C語言實現詞法分析器
問題描述 用c或c 語言編寫乙個簡單的詞法分析程式,掃瞄c語言小子集的源程式,根據給定的詞法規則,識別單詞,填寫相應的表。如果產生詞法錯誤,則顯示錯誤資訊 位置,並試圖從錯誤中恢復。簡單的恢復方法是忽略該字元 或單詞 重新開始掃瞄。相關詞法規則 識別符號 字母 識別符號 識別符號 字母 識別符號 識...