#include
#include
#include
#include
using
namespace std;
#define maxn 100
#include
//詞法分析器,對於輸入的串,先處理空格,過濾掉,進入主程式,判斷是字母,迴圈判斷字母或數字
//迴圈出去後,判斷所讀字串是否是保留字,若是輸出保留字及其編碼,若不是,輸出識別符號和編碼
//判斷首字元是數字,則可能是常數,識別首字元後,迴圈判斷是否是數字,出迴圈後指標回退乙個字元
//輸出數字
//需要的函式,getbe()過濾空格,connect用string實現,back()回退乙個指標
string reversed[34]
=;int p;
string prog;
string str;
int i;
void
read_prog
(string& prog)
}void
getbe()
}bool
digit
(char c)
else
}bool
letter
(char c)
else
}int
digitorletter
(char c)if(
digit
(c))
return3;
//其他
}bool
isreversed
(string str)
}return
false;}
int flag;
void
analysis()
p--;//backif(
isreversed
(str)
==false
)break
;case
2:p++
;while
(digit
(prog[p]))
p--; cout<<<
':'<<
' '<<
'<'
<','<<
80<<
'>'
;break
;case3:
switch
(prog[p]
)else
if(prog[p]
=='='
)else
if(prog[p]
=='>'
)else
break
;case
'!':p++;if
(prog[p]
=='='
)else
break
;case
'%':p++;if
(prog[p]
=='='
)elseif(
letter
(prog[p]))
else
break
;case
'&':p++;if
(prog[p]
=='&'
)else
if(prog[p]
=='='
)else
break
;case
'(':
printf
("%d: <(,44>"
,i++);
break
;case
'/':p++;if
(prog[p]
=='*'
) str+
=prog[p]
; cout<<<
':'<<
' '<<
'<'
<','<<
79<<
'>';}
else
if(prog[p]
=='='
)else
if(prog[p]
=='/'
) cout<<<
':'<<
' '<<
'<'
<','<<
79<<
'>';}
else
break
;case
')':
printf
("%d: <),45>"
,i++);
break
;case
'*':p++;if
(prog[p]
=='='
)else
break
;case
',':
printf
("%d: <,,48>"
,i++);
break
;case
'.':
printf
("%d: <.,49>"
,i++);
break
;case
':':
printf
("%d: <:,52>"
,i++);
break
;case
';':
printf
("%d: <;,53>"
,i++);
break
;case
'?':
printf
("%d: <?,54>"
,i++);
break
;case
'[':
printf
("%d: <[,55>"
,i++);
break
;case
']':
printf
("%d: <],56>"
,i++);
break
;case
'^':p++;if
(prog[p]
=='='
)else
break
;case
'else
if(prog[p]
=='='
)else
break
;case
'}':
printf
("%d: <},63>"
,i++);
break
;case
'~':
printf
("%d: <~,64>"
,i++);
break
;case
'+':p++;if
(prog[p]
=='+'
)else
if(prog[p]
=='='
)else
break
;case
'<'
:p++;if
(prog[p]
=='<'
)else
}else
if(prog[p]
=='='
)else
break
;case
'=':p++;if
(prog[p]
=='='
)else
break
;case
'>'
:p++;if
(prog[p]
=='='
)else
if(prog[p]
=='>'
)else
}else
break
;case
'\"'
:printf
("%d: <\",78>"
,i++);
break
;default
:flag=0;
}}}void
analysis()
analysis()
; p++;}
/********* end *********/
}int
main()
編譯原理(用c語言編寫小型詞法分析器)
學過編譯原理的同學一定知道詞法分析,那麼詞法分析如何用c語言實現呢?精力有限,做的詞法分析器只能分析以下幾種 編寫程式前需要狀態表 轉換表 char code 1000 存輸入的字串 char put 100 100 存入得出的結果 char ch 獲得輸入字串的乙個字元 int i 0,j 0,k...
python 實現乙個簡單的C語言詞法分析
python 實現乙個簡單的c語言詞法分析 定義乙個字典或者列表與其中的字串進行輸出來的進行匹配 import sys map key map sym 寫乙個編碼字典 map data 29,22,23,24,25,25,35 36 34 33 32 0 include 56 57 def data...
C語言 編寫乙個日曆
題目 列印乙個月份的日曆。分析 首先列印乙個月份的日曆,要設定乙個基準年,並且要知道這一年的一月一號是週幾 求得當年的一月一號是週幾 在求得當月的第一天是週幾。define crt secure no warnings 1 include include 某個月的日曆 int months 2 13...