ImageVerifierCode 换一换
格式:DOCX , 页数:97 ,大小:141.27KB ,
资源ID:8604083      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8604083.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SNL语言吉大计算机编译原理课程设计Word格式文档下载.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

SNL语言吉大计算机编译原理课程设计Word格式文档下载.docx

1、an alyze();void Prin tSymbolChai n();bool Fi ndField();bool SearchChai n( char *,i nt,SymbolChain * &);bool FindEntry(char *,bool,SymbolChain * &bool FindEntry2(char *,SymbolChain * &,ldKind);bool En ter(char *,SymbolChain * &void DestroyCha in();void CreateCha in();void an alysis(TreeNode *);public

2、:void RecordType(TreeNode * t,SymbolChain * en try);void ArrayType(TreeNode * t , SymbolChain * en try);void nameType(TreeNode * t , SymbolChain * en try);SymbolChai n * NewTy();void TypeProcess(TreeNode * t , SymbolCha in *);void Body(TreeNode * t);void ProcDecPart(TreeNode * t);void VarDecPart(Tre

3、eNode * t);void TypeDecPart(TreeNode * t);static void doA nalyze(TreeNode * , ofstream );#en dif/* parse.h */#ifndef _PARSE_H_#defi ne _PARSE_H_ #i ncludeToke nList.h#i nclude class parseofstream * output;Toke nList * head;Toke nList * cur;TreeNode* root;void fieldvarMore(TreeNode * t); TreeNode * f

4、ieldvar();void variMore(TreeNode * t);TreeNode * variable();TreeNode * factor();TreeNode * term();TreeNode * Simple_exp();TreeNode * Exp();TreeNode * ActParamMore();TreeNode * ActParamList();TreeNode * CallStmRest();TreeNode * ReturnStm();TreeNode * OutputStm();TreeNode * In putStm();TreeNode * Loop

5、Stm(); TreeNode * Con ditio nalStm(); TreeNode * ArrayRest();TreeNode * FieldRest(); TreeNode * Assig nmen tRest();TreeNode * AllCall();TreeNode * Stm();TreeNode * StmMore();TreeNode * StmList();TreeNode * ProgramBody(); TreeNode * procBody();TreeNode * ProcDecPart(); void FidMore(TreeNode * t); voi

6、d FormList(TreeNode * t); TreeNode * Param();TreeNode * ParamMore(); TreeNode * ParamDecList();void ParamList(TreeNode * t); TreeNode * ProcDeclarati on(); TreeNode * ProcDec();void varIdMore(TreeNode * t); void VarIdList(TreeNode * t); TreeNode * VarDecMore(); TreeNode * VarDecList(); TreeNode * Va

7、rDeclaratio n(); TreeNode * VarDec();void IdMore(TreeNode * t); void IdList(TreeNode * t); TreeNode * FieldDecMore(); TreeNode * FieldDecList();void RecType(TreeNode * t); void ArrayType(TreeNode * t); void StructureType(TreeNode * t); void BaseType(TreeNode * t); void TypeDef(TreeNode * t); void Ty

8、peId(TreeNode * t); TreeNode * TypeDecMore(); TreeNode * TypeDecList(); TreeNode * TypeDeclarati on(); TreeNode * TypeDec(); TreeNode * DeclarePart(); TreeNode * DeclarePart2(); TreeNode * ProgramHead(); TreeNode * Program();ofstream * getOutputStream();Toke nList * getCur();Toke nList * getHead();c

9、har * getNextToke nSem();char * getCurre ntToke nSem();void setCur(Toke nList * t);void setOutputStream(ofstream * o);void setHead(Toke nList * t);bool read();bool matchSem(c onst char);bool matchLex(LexType l);bool matchNextLex(LexType l);bool matchNextSem(c onst char s);LexType getNextToke nLex();

10、LexType getCurToke nLex();parse(Toke nList * ,ofstream *);parse();void prin tTree(TreeNode * root);in t getCurre ntToke nLin eNO();static TreeNode * doParse(Toke nList * , ofstream *); ;/* scan.h */#ifndef _SCAN_H_#defi ne _SCAN_H_class sca nstatic Toke nList * doSca n(ifstream * ,ofstream *);ifstre

11、am * i nputFile;ofstream * outputFile;sca n();sca n(ifstream * , ofstream *); sca n();ifstream * get In putFile(); ofstream * getOutputFile(); void setlnputFile(ifstream *); void setOutputFile(ofstream *); void clearArray();char getNextChar();LexType lookup(char *); Toke nList * getToke nList(); voi

12、d prin tToke nList(Toke nList *);/* Toke n.h */#ifndef _TOKEN_H_#defi ne _TOKEN_H_#in cludefstreamusing n amespace std;enum LexType ID, 标识符CHARC, 字符串RESERVEDWORD, / 保留字INST, 整型常量符OP, 运算符ASSIGN, 赋值运算符DELIMITER, 分界符RANGE, 数组下标POINTER, 结构类型成员运算符DOT, 程序结束标志ENDFILE, 文件结束标志ERROR, 错误符号class Toke nToke n();

13、Toke n(i nt, char*,LexType);Toke n();void prin tToke n(o fstream *);void prin tToke n1();void setLex(LexType);void setSem(char *);void setL in e(i nt);/*Toke nList.h*/#ifndef _TOKENLIST_H_#defi ne _TOKENLIST_H_#i nclude Toke n.h class Toke nList public:Toke nList();Toke nList();void setToke n(Toke n

14、 *); void setNext(Toke nList *); void setNumber(i nt);int getNumber(); Toke n * getToke n(); Toke nList * getNext(); void appe nd();int nu mber;Toke n * toke n;Toke nList * n ext;/* en um DEC_KIND 具体声明ArrayK, / 数组CharK, 字符In tegerK, / 整型RecordK, / 记录IdK /Type定义的类型en um STMT_KIND 具体语句IfK, /if 语句While

15、K, /while 语句AssignK, /赋值语句ReadK,/read语句WriteK,/write 语句CallK,/过程调用语句ReturnK/返回语句enum EXP_KIND/具体表达式OpK,操作符Con stK,/常整型IdEK,/标识符/* Tree no de.h */#ifndef _TREENODE_H_#defi ne _TREENODE_H_#in elude en um NODE_KIND 语法树节点ArrayEK, 数组FieldEK, / 域CHAREK 单字符union KIND/记录语法树节点具体类型 DEC_KIND dec;/ 声明STMT_KIND

16、stmt;/ 语句EXP_KIND exp;/ 表达式enum PARAM_TYPE/ 过程参数属性 valparamtype,/ 值参 varparamtype/ 变参enum EXP_OP_TYPE/ 表达式运算符类型 LT,EQ, PLUS, MINUS, TIMES, OVER ;struct ArrayAttr/ 数组属性int low;/ 上界int up;/ 下届DEC_KIND childType;/ 类型 ;struct ProcAttr / 过程属性PARAM_TYPE paramtype;struct ExpAttr / 表达式属性EXP_OP_TYPE op; int

17、val;struct Attr / 属性ArrayAttr arrayattr;ProcAttr procattr; ExpAttr expattr;class TreeNode public:NODE_KIND nodekind;TreeNode * child3;TreeNode * sibling;char * idname3;int lineno;KIND kind;char * type_name;int idnum;int childnum;/ 设 置 表 达 式 属 性*void setAttrExpVal(int i);void setAttrExpOpType(char *

18、s);EXP_OP_TYPE getAttrExpOpType();/ 设 置 过 程 属 性*void setProcAttrParamType(PARAM_TYPE d);/ 设 置 数 组 属 性void setArrayAttrType(DEC_KIND d);void setArrayAttrUp(int u);void setArrayAttrLow(int l);void setLineNo(int l);void setNodeKind(NODE_KIND n);void setTypeName(char * s);void setIdName(char *s);void se

19、tChild (int i , TreeNode * c);void setChild(TreeNode *);void setSibling(TreeNode * t);void setKindOfDec(DEC_KIND);DEC_KIND getKindOfDec();void setKindOfStmt(STMT_KIND);void setKindOfExp(EXP_KIND);TreeNode * getSibling();TreeNode * getChild(int i);int getIdNum();char * getIdName(int i);TreeNode();Tre

20、eNode();TreeNode(NODE_KIND n);void printTreeNode();void printTreeNode(ofstream * out);/* zparse.h */#ifndef _ZPARSE_H_ #defi ne _ZPARSE_H_ #in elude #in clude #define Sy_Stack_Max 20 /符号栈大小#defi ne OpS_Stack_Max 20 操作符栈大小 #defi ne OpN_Stack_Max 20 操作数栈大小*en um VN_VTVN_Program, 开始符 VN_ProgramHead, VN

21、_ProgramName, VN_DeclarePart,VN_TypeDec, VN_TypeDeclarati on, VN_TypeDecList, VN_TypeDecMore, VN_TypeId, VN_TypeDef, VN_BaseType, VN_Structuretype, VN_ArrayType, VN_Low, VN_Top,VN_RecType,VN_FieldDecList, VN_FieldDecMore, VN_IdList, VN_IdMore, VN_V arDec, VN_V arDeclarati on, VN_V arDecList, VN_V ar

22、DecMore, VN_VarldList, VN_VarldMore, VN_ProcDec,VN_ProcDeclarati on,VN_ProcDecMore, VN_ProcName, VN_ParamList, VN_ParamDecList, VN_ParamMore, VN_Param, VN_FormList, VN_FidMore, VN_ProcDecPart, VN_ProcBody, VN_ProgramBody, VN_StmList, VN_StmMore, VN_Stm, VN_AssCall, VN_Assig nme ntRest, VN_Co nditi o

23、n alStm, VN_LoopStm, VNn putStm, VN_I nVar, VN_OutputStm, VN_ReturnStm, VN_CallStmRest, VN_ActParamList, VN_ActParamMore, VN_RelExp, VN_OtherRelExp, VN_Exp, VN_OtherTerm, VN_Term, VN_OtherFactor, VN_Factor, VN_Variable, VN_VariMore, VN_FieldVar, VN_FieldVarMore, VN_CmpOp, VN_AddOp, VN_MultOp, VN_Bas

24、eTypeOfArray, vt_program = 70,/ 为了与 VN 区分 vt_id, vt_type, vt_var, vt_procedure, vt_begi n,vt_integer, vt_char, vt_array, vt_arraydot, vt_of, vt_record, vt_intc, vt_end, vt_semicolon, vt_comma, vt_rparen, vt_lparen, vt_if, vt_while, vt_return, vt_read, vt_write, vt_else, vt_fi, vt_endwh, vt_assign, v

25、t_lmidparen, vt_pointer, vt_dot, vt_lt, vt_eq, vt_rmidparen, vt_then, vt_do, vt_plus, vt_minus, vt_mul, vt_div, vt_charc, vt_errorclass treestack public:TreeNode * & tree; treestack * next; treestack * pre; treestack(TreeNode * & t):tree(t),next(NULL),pre(NULL)/ /*/*zparse 类*class zparsetreestack* currentTree;* headTree;treeNum;voidtree_push(TreeNode * &tree_pop();TreeNode* OptrOpS_Stack_Max;optrtop;optr_push(TreeNode * );* optr_pop();* OpndOpN_Stack_Max;opndtop;opnd_push(TreeNode * );* opnd_pop()

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2