日韩性视频-久久久蜜桃-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语言--词法分析程序的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 成年人免费黄色片 | 亚洲视频精品在线 | 激情视频免费在线观看 | 神马午夜我不卡 | 国产又色又爽又黄又免费 | 欧美人人爽 | 爱爱视频网站免费 | 精品久久久噜噜噜久久久 | 亚洲欧美日韩精品久久亚洲区 | 国产宾馆自拍 | 九热这里只有精品 | 中文字幕理伦片免费看 | 久久黄色影院 | 在线免费观看的av | 色老大影院 | 国产精品久久久久久久免费观看 | 日韩插插| 91精产国品一二三 | 五月天国产视频 | 免费特级毛片 | 在线观看视频一区二区 | 人妻熟人中文字幕一区二区 | 国产日韩欧美在线观看视频 | 中文字幕网伦射乱中文 | 欧美日韩综合 | 朝鲜美女黑毛bbw | 91美女片黄在线观看游戏 | 美女露出让男生揉的视频 | 中文字幕第十一页 | 国产成人一区二区三区别 | 亚洲蜜臀av乱码久久精品蜜桃 | 国产精品av一区二区 | 亚洲av无码国产综合专区 | 怡红院精品视频 | 欧美| 国产精品999. | 爱情岛论坛自拍亚洲品质极速最新章 | 婷婷色激情 | 免费伊人| 国内激情| 美女视频黄a视频全免费观看 | 三级国产网站 | 国产伦精品一区二区三区妓女下载 | 亚洲天天 | 久久这里只有精品国产 | 成人免费一级 | 色多多网站| 亚洲综合在线网 | 欧美激情首页 | 中国免费黄色片 | 六月丁香婷婷网 | 国产美女永久免费 | 亚洲国产成人在线 | 91在线精品一区二区三区 | 日本五十路女优 | 亚洲区色 | 久操这里只有精品 | 午夜手机福利 | 午夜a级片| 男男黄色片 | 亚洲一级理论片 | 国语对白真实视频播放 | 777精品伊人久久久久大香线蕉 | 国产一区啪啪 | 91香蕉视频在线 | 色屁屁www影院免费观看入口 | 日本黄色网页 | 久久av导航 | 天天爽影院 | 91在线无精精品入口 | 99久99 | 人妻巨大乳一二三区 | 中文字幕在线精品 | 亚洲精品中文字幕乱码无线 | 久久福利国产 | 色婷久久 | 韩国成人在线视频 | 亚洲综合在线观看视频 | 人人舔 | 国产毛片久久久 | a网址| 亚洲欧美另类国产 | 成人欧美一区二区三区黑人免费 | 国产精品777 | mm131在线 | 天天超碰 | 蜜桃网av| 欧美亚洲综合一区 | 欧美激情3p | www.插插插 | 高清乱码免费看污 | 久久久免费精品 | 大色av| 精品国产中文字幕 | 日产精品久久久久 | 天天干天天草 | 毛片最新网址 | 男人的天堂一区 | 日韩成人久久 |