91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 15KB
    文件類型: .cpp
    金幣: 1
    下載: 1 次
    發布日期: 2021-07-30
  • 語言: C/C++
  • 標簽: 詞法分析??

資源簡介

設計并實現 C 語言的詞法分析程序,要求如下。 (1) 可以識別出用C語言編寫的源程序中的每個單詞符號,并以記號的形式輸出每個單詞符號。 (2) 可以識別并讀取源程序中的注釋。 (3) 可以統計源程序中的語句行數、單詞個數和字符個數,其中標點和空格不計算為單詞,并輸出統計結果。 (4) 檢查源程序中存在的非法字符錯誤,并可以報告錯誤所在的行列位置。 (5) 發現源程序中存在錯誤后,進行適當的恢復,使詞法分析可以繼續進行,通過一次詞法分析處理,可以檢查并報告源程序中存在的所有詞法拼寫錯誤。

資源截圖

代碼片段和文件信息

/***********************************************************/
/*??????????????????詞法分析程序的設計與實現???????????????*/
/***********************************************************/
#include?
#include?
#include?
#include?
#include??
using?namespace?std;
const?int?BUFF=4096;????????????//設置緩沖組大小?
char?buffer[BUFF];
int?beginforward;
int?line=1character=1word=0;???//用于統計?
int?rownum=0;????????????????????//記錄列數?

char?get_char(ifstream?&?insofstream?&?outs);?????//從緩沖區讀入一字符?
char?get_nbc(ifstream?&?insofstream?&?outs);??????//從緩沖區讀入一非空白符?
void?retract();????????????????????????????????????//向前掃描指針forward后退一個字符
int?reserve(string?test);??????????????????????????//查保留字表

int?main()
{
?
????int?i;
????int?iskey;???????????????//存放reserve()的返回值?

????char?c;
????string?token;????????????//存放單詞的字符串
????ifstream?ins;????????????//打開輸入和輸出文件?
????ins.open(“in.txt“);
????ofstream?outserr;
????outs.open(“out.txt“);
????err.open(“err.txt“);??????//打開錯誤輸出文件?
????outs?<????buffer[BUFF/2-1]=EOF;?????//設置兩個標志位
????buffer[BUFF-1]=EOF;
????
????begin=forward=0;??????????//初始兩個指針?
????
????
????c=ins.get();
????i=0;
????while(c!=EOF&&i????{
????????buffer[i]=c;?
????????c=ins.get();??
????????i++;
????}
????buffer[i]=EOF;??
????
????token=““;????????????????????//初始化??????
????c=get_nbc(insouts);
????????
????int?flag=1;
????while(c!=EOF){
????switch(c)
????{
??????????case?‘a‘...‘z‘:?????????//判斷標識符是否為關鍵字?
??????????case?‘A‘...‘Z‘:
??????????case?‘_‘:
???????????????flag=1?;??????????????
???????????????while(isalpha(c)||isdigit(c)||c==‘_‘)
???????????????{
???????????????????token+=c;
???????????????????c=get_char(insouts);
???????????????????if?(c==‘@‘||c==‘‘‘||c==‘$‘||c==‘?‘)
???????????????????{
??????????????????????????????err<??????????????????????????????word--;
??????????????????????????????while(c!=‘\n‘&&c!=‘?‘&&c!=‘\t‘)?????????????//跳過非法字段繼續向下分析?????????????????????????????????????
??????????????????????????????????????????????c=get_char(insouts);
??????????????????????????????flag=0;
???????????????????????????????retract();??????????????????????????????????????????????????????????????????????????????????????
???????????????????}???????????????????
???????????????}
???????????????word++;?
???????????????if(flag)
???????????????{retract();???????????????
???????????????iskey=reserve(token);
???????????????if(iskey==0)
???????????????{?
???????????????????outs?<???????????????????token=““;
???????????????}
???????????????else?
???????????????{
???????????????????outs?<?????????????

評論

共有 條評論