資源簡介
1. 實驗內容
1、定義一個右線性正規文法,示例如(僅供參考)
G[S]:S→aU|bV| U→bV|aQ
V→aU|bQ Q→aQ|bQ|e
實驗前要考慮清楚用哪種數據結構存儲上述文法。
2、構造其有窮確定自動機,如
3、利用有窮確定自動機M=(K,Σ,f, S,Z)行為模擬程序算法,來對于任意給定的串,若屬于該語言時,該過程經有限次計算后就會停止并回答“是”,若不屬于,要么能停止并回答“不是”。
K:=S;
c:=getchar;
while ceof do
{K:=f(K,c);
c:=getchar; };
if K is in Z then return (‘yes’)
else return (‘no’)
2. 實驗設計分析
2.1 實驗設計思路
根據實驗指導書和書本上的相關知識,實現算法。
2.2 實驗算法
(1)輸入正規文法。RG到FA
(2)將NFA化為DFA
(3)輸入一個字符串判斷是否符合文法。
①最開始記A為開始狀態a為第一個字符。
②然后A經過字符a到達下一個狀態記為B,A狀態指向B狀態,a指向字符串的下一個字符。
③循環②步直到B狀態為終態時停止則該字符串符合該文法或a指向最后一個字符時都沒到終態停止則該字符竄不符合該文法。
2.3 實驗流程
①預習實驗,實驗前閱讀實驗指導書和閱讀書本。
②通過書本了解判斷文法的原理。首先在紙上模擬文法的判斷過程。
③上機實現模擬過程。
④調試程序,知道能得到預期的結果。
2.4 實驗的基本技術設計方案
(用到哪些技術,包括編譯原理中,程序設計中,離散數學中等的哪些技術)
①java的基礎語法。
②數據結構里的結構體及簡單算法。
③編譯原理的理論知識。
④運用了java里的一些集合類。
2.5 數據結構
class edge {
char PriorityState;
char ch;
char NextState;
edge(char p,char c, char n){
PriorityState = p;
ch = c;
NextState = n;
}
@Override
public String toString() {
return "edge [PriorityState=" + PriorityState + ", ch=" + ch + ", NextState=" + NextState + "]";
}
}
2.6 實驗輸入輸出
2.7 實驗設計語言
Java語言。
3. 實驗主要源代碼及分析說明

代碼片段和文件信息
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????5399??2020-04-24?20:42??詞法程序設計——DFA模擬程序.rar
-----------?---------??----------?-----??----
?????文件????????5399??2020-04-24?20:42??詞法程序設計——DFA模擬程序.rar
- 上一篇:基于JAVA的航空售票系統
- 下一篇:JAVA人的職業規劃(分析的很好)
評論
共有 條評論