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

  • 大小: 15KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發布日期: 2021-09-27
  • 語言: C/C++
  • 標簽:

資源簡介

本程序實現一個分析C語言的詞法分析+語法分析。 注意: 1.文法簡略,沒有實現的部分,可以在此文法的基礎上進行擴充,本程序的采用自頂向下的LL(1)文法。 2.可以自動實現求First 集和 Follow 集。 3.處終結符外(有些硬編碼的成分),終結符的文法可以自定義,也就是說讀者可以自定義文法。 4.為方便理解,C語言的文法描述寫成中文。 5.程序將詞法分析和語法分析結合起來,詞法分析的結果作為語法分析的輸入。 6.最終結果在控制臺顯示的有:詞法分析、First集、Follow集、Select集,在preciateResult.txt 中寫入了語法分析結果,在preciateTable.txt 中寫入了預測分析表。 7.文法的詞素之間必須有空格分開。

資源截圖

代碼片段和文件信息

//LexAnalysis.cpp
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?“LexAnalysis.h“

using?namespace?std;

int?leftSmall?=?0;//左小括號
int?rightSmall?=?0;//右小括號
int?leftMiddle?=?0;//左中括號
int?rightMiddle?=?0;//右中括號
int?leftBig?=?0;//左大括號
int?rightBig?=?0;//右大括號
int?lineBra[6][1000]?=?{0};//括號和行數的對應關系,第一維代表左右6種括號
int?static_iden_number?=?0;//模擬標志符的地址,自增
//Token節點


NormalNode?*?normalHead;//首結點

//錯誤節點
struct?ErrorNode
{
????char?content[30];//錯誤內容
????char?describe[30];//錯誤描述
????int?type;
????int?line;//所在行數
????ErrorNode?*?next;//下一個節點
};

ErrorNode?*?errorHead;//首節點

//標志符節點
struct?IdentiferNode
{
????char?content[30];//內容
????char?describe[30];//描述
????int?type;//種別碼
????int?addr;//入口地址
????int?line;//所在行數
????IdentiferNode?*?next;//下一個節點
};
IdentiferNode?*?idenHead;//首節點

vector?>?keyMap;
vector?>?operMap;
vector?>?limitMap;



//初始化C語言的關鍵字的集合
void?initKeyMapping()
{
????keyMap.clear();
????keyMap.push_back(make_pair(“auto“AUTO));
????keyMap.push_back(make_pair(“break“BREAK));
????keyMap.push_back(make_pair(“case“CASE));
????keyMap.push_back(make_pair(“char“CHAR));
????keyMap.push_back(make_pair(“const“CONST));
????keyMap.push_back(make_pair(“continue“CONTINUE));
????keyMap.push_back(make_pair(“default“DEFAULT));
????keyMap.push_back(make_pair(“do“DO));
????keyMap.push_back(make_pair(“double“DOUBLE));
????keyMap.push_back(make_pair(“else“ELSE));
????keyMap.push_back(make_pair(“enum“ENUM));
????keyMap.push_back(make_pair(“extern“EXTERN));
????keyMap.push_back(make_pair(“float“FLOAT));
????keyMap.push_back(make_pair(“for“FOR));
????keyMap.push_back(make_pair(“goto“GOTO));
????keyMap.push_back(make_pair(“if“IF));
????keyMap.push_back(make_pair(“int“INT));
????keyMap.push_back(make_pair(“long“LONG));
????keyMap.push_back(make_pair(“register“REGISTER));
????keyMap.push_back(make_pair(“return“RETURN));
????keyMap.push_back(make_pair(“short“SHORT));
????keyMap.push_back(make_pair(“signed“SIGNED));
????keyMap.push_back(make_pair(“sizeof“SIZEOF));
????keyMap.push_back(make_pair(“static“STATIC));
????keyMap.push_back(make_pair(“struct“STRUCT));
????keyMap.push_back(make_pair(“switch“SWITCH));
????keyMap.push_back(make_pair(“typedef“TYPEDEF));
????keyMap.push_back(make_pair(“union“UNION));
????keyMap.push_back(make_pair(“unsigned“UNSIGNED));
????keyMap.push_back(make_pair(“void“VOID));
????keyMap.push_back(make_pair(“volatile“VOLATILE));
????keyMap.push_back(make_pair(“while“WHILE));

????keyMap.push_back(make_pair(“describe“DESCRIBE));
????keyMap.push_back(make_pair(“type“TYPE));
????keyMap.push_back(make_pair(“string“STRING));
????keyMap.push_back(make_pair(“digit“DIGIT));
}
void?initOperMapping()
{
????operMap.clear();
????operMap.push_back(make_pair(“!“NOT))

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????2002??2015-06-16?10:43??c語言語法分析\change.log

?????文件??????32189??2015-06-16?10:41??c語言語法分析\LexAnalysis.cpp

?????文件???????4386??2015-06-16?10:39??c語言語法分析\LexAnalysis.h

?????文件????????588??2015-06-16?10:44??c語言語法分析\readme.txt

?????文件??????37355??2015-06-16?10:42??c語言語法分析\SynAnalysis.cpp

?????文件????????523??2015-06-16?10:39??c語言語法分析\SynAnalysis.h

?????目錄??????????0??2015-06-16?10:44??c語言語法分析

-----------?---------??----------?-----??----

????????????????77043????????????????????7


評論

共有 條評論