日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

A - 小C语言--词法分析程序

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 A - 小C语言--词法分析程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description
小C語言文法

  • <程序>→<main關鍵字>(){<聲明序列><語句序列>}

  • <聲明序列>→<聲明序列><聲明語句>|<聲明語句>|<空>

  • <聲明語句>→<標識符表>;

  • <標識符表>→<標識符>,<標識符表>|<標識符>

  • <語句序列>→<語句序列><語句>|<語句>

  • <語句>→< if語句>|< while語句>|< for語句>|<復合語句>|<賦值語句>

  • < if語句>→< if關鍵字>(<表達式>)<復合語句>|(<表達式>)<復合語句>< else關鍵字><復合語句>

  • < while語句>→< while關鍵字>(<表達式>)<復合語句>

  • < for語句>→< for關鍵字>(<表達式>;<表達式>;<表達式>)<復合語句>

  • <復合語句>→{<語句序列>}

  • <賦值語句>→<表達式>;

  • <表達式>→<標識符>=<算數表達式>|<布爾表達式>

  • <布爾表達式>→<算數表達式> |<算數表達式><關系運算符><算數表達式>

  • <關系運算符>→>|<|>=|<=|==|!=

  • <算數表達式>→<算數表達式>+<項>|<算數表達式>-<項>|<項>

  • <項>→<項>*<因子>|<項>/<因子>|<因子>

  • <因子>→<標識符>|<無符號整數>|(<算數表達式>)

  • <標識符>→<字母>|<標識符><字母>|<標識符><數字>

  • <無符號整數>→<數字>|<無符號整數><數字>

  • <字母>→a|b|…|z|A|B|…|Z

  • <數字>→0|1|2|3|4|5|6|7|8|9

  • < main關鍵字>→main

  • < if關鍵字>→if

  • < else關鍵字>→else

  • < for關鍵字>→for

  • < while關鍵字>→while

  • < int關鍵字>→int

  • 每行單詞數不超過10個
    小C語言文法如上,現在我們對小C語言寫的一個源程序進行詞法分析,分析出關鍵字、自定義標識符、整數、界符
    和運算符。
    關鍵字:main if else for while int
    自定義標識符:除關鍵字外的標識符
    整數:無符號整數
    界符:{ } ( ) , ;
    運算符:= + - * / < <= > >= == !=

    Input
    輸入一個小C語言源程序,源程序長度不超過2000個字符,保證輸入合法。

    Output
    按照源程序中單詞出現順序輸出,輸出二元組形式的單詞串。

    (單詞種類,單詞值)

    單詞一共5個種類:

    關鍵字:用keyword表示
    自定義標識符:用identifier表示
    整數:用integer表示
    界符:用boundary表示
    運算符:用operator表示

    每種單詞值用該單詞的符號串表示。

    Sample
    Input

    main() {int a, b;if(a == 10){a = b;} }

    Output

    (keyword,main) (boundary,() (boundary,)) (boundary,{) (keyword,int) (identifier,a) (boundary,,) (identifier,b) (boundary,;) (keyword,if) (boundary,() (identifier,a) (operator,==) (integer,10) (boundary,)) (boundary,{) (identifier,a) (operator,=) (identifier,b) (boundary,;) (boundary,}) (boundary,}) #include <cstring> #include <cstdio> #include <iostream> #include <algorithm>using namespace std;string key[] = {"main", "if", "else", "for", "while", "int"}; string res[] = {"keyword","identifier","integer","boundary","operator"};void judge(string str) {if (isdigit(str[0])) // 數字的話直接輸出{cout << "(" << res[2] << ","<< str << ")" << endl;}else // 判斷是關鍵字,還是自定義{bool flag = false; // false表示不是關鍵字,true表示是關鍵字for (int i = 0; i < 6 ; i ++ ) // 依次訪問key數組,查找關鍵字{if (str == key[i]){flag = true;cout << "(" << res[0] << "," << str << ")" << endl;break;}}if (!flag) // 是自定義{cout << "(" << res[1] << "," << str << ")" << endl;}} }inline void solve() {string s; // 使用string的好處是,可以直接忽略空格,空格轉換為換行,換行表示輸入一次結束while (cin >> s){string str = "";for (int i = 0; i < s.size(); i ++ ) // 識別出字符串s的一個個字符{if (s[i] == '=' || s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/' || s[i] == '<' || s[i] == '>' || s[i] == '!') // 判斷運算符{// 進入之前先把str中的判斷一下if (str.size()){judge(str);}str = "";if (i + 1 < s.size() && s[i + 1] == '=') // 用來識別 <= += >= != == -={cout << "(" << res[4] << "," << s[i] << s[i + 1] << ")" << endl;i ++ ;}else{cout << "(" << res[4] << "," << s[i] << ")" << endl;}}else if(s[i] == '(' || s[i] == ')' || s[i] == '{' || s[i] == '}' || s[i] == ',' || s[i] == ';') // 判斷界符{if (str.size()){judge(str);}str = "";cout << "(" << res[3] << "," << s[i] << ")" << endl;}else // 將數字、字符都存起來{str += s[i];}}if (str.size()){judge(str);}} } int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);solve();return 0; }

    總結

    以上是生活随笔為你收集整理的A - 小C语言--词法分析程序的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 91精品国产91久久久久久久久久久久 | 成人性生交大片 | 国产精品嫩草影院av蜜臀 | 亚洲精品久久夜色撩人男男小说 | 欧美18av | 国产精品久久麻豆 | 欧美激情三级 | 日本福利一区 | 午夜dv内射一区二区 | 天天操天天做 | 欧美在线视频观看 | 91av爱爱| 69av在线播放| av第一区 | 九九热精品在线视频 | 亚洲精选久久久 | 中文字幕免费中文 | 91精品国产一区二区三竹菊影视 | 艳妇乳肉豪妇荡乳av | 韩国三级做爰视频 | 最近中文字幕在线观看视频 | 久久橹| 亚洲免费黄色片 | 精品国产精品网麻豆系列 | 瑟瑟视频网站 | 冲田杏梨av | 午夜免费观看 | 欧美亚洲三级 | 成人免费区一区二区三区 | 欧美日韩国产专区 | 天天干天天爱天天射 | 日本吃奶摸下激烈网站动漫 | 少妇aa | 好大好舒服视频 | 日本偷拍一区 | 可以免费看的av毛片 | 芭乐视频色 | 欧洲一区二区三区四区 | 日韩一区在线播放 | 国产一区二区三区视频网站 | 午夜免费观看视频 | 亚洲欧美激情一区二区三区 | 九色av| 国产在线色站 | 18av在线视频| 中文字幕观看视频 | 天天操天天插天天干 | 99精品视频在线免费观看 | 成人久久一区 | 国产黑丝在线观看 | 亚洲精品自拍 | 男人的av | 播放男人添女人下边视频 | 欧美69式性猛交 | 久操精品在线 | 黄网站色视频免费观看 | 国产精品久久777777 | 中文精品久久久久人妻不卡 | 91video| 免费91视频| 贝利弗山的秘密1985版免费观看 | 男女视频免费 | 国产一级做a爰片在线看免费 | 欧美片一区二区三区 | 免费播放片大片 | 国产伦精品一区二区三区视频黑人 | 羞视频在线观看 | 国产女人高潮毛片 | 久久久噜噜噜www成人 | 高清无码一区二区在线观看吞精 | 亚洲免费网站 | 日日爱夜夜爱 | 日本久久一区二区 | 四虎影院黄色 | 日韩一区二区三区在线观看 | 国产熟妇乱xxxxx大屁股网 | 欧美日韩一区二区三区69堂 | 在线观看网站 | 浴室里强摁做开腿呻吟男男 | 成人久久久 | 免费超碰在线 | 免费毛片视频 | 国产经典一区二区三区 | 8x8x最新网址 | 丰满人妻一区二区三区53号 | a视频免费 | 91毛片网站 | 大屁股白浆一区二区 | 手机看片在线观看 | 色啦啦视频 | 黄色综合网| 综合网天天 | 国产网站久久 | 成人在线免费小视频 | 婷婷射 | 国产视频www | xxx视频网站 | 污黄网站在线观看 | 特级西西444www大精品视频免费看 |