辽 宁 科 技 大 学
课程设计说明书
设计题目: 模型语言的语法分析器的设计 学院、系: 电信学院 专业班级:
学生姓名: 指导教师: 成 绩:
年 月 日
1 / 11
2 / 11
一. 设计目的
掌握并且实现编译的预处理、词法、语法各个阶段程序设计,将词法和语法两个程序组合成一遍扫描,完成词法、语法两个阶段的分析,即将词法作为语法分析的子程序,每调用一次得到一个单词的类码,扫描结束分析结束。最终实现模型语言的语法分析器的设计。
二.数据结构 1.struct code_val{ 2.char code; 3.char val[20];
4.char buf[4048]={'\\0'}; 扫描缓冲区
5.char token[WORDLEN]=\用于拼接单词 6.LR分析表 7.状态栈
8.在归约时,控制程序应按原路径折回,故在分析过程中需将所经历的状态记录下来,以便获得折回点。设置状态栈,用于记录分析过程中所经历的状态,即路径。 9.符号栈
用于记录路径的符号,它和状态栈等高。符号栈的设置是为了便于说明,实际语法分析器无符号栈。 10.产生式右部符号串长度
因每个状态仅识别一个符号,退回的状态数和构成句柄的字符数相等,故需存储产生式右部符号串长度。 11.产生式左部符号
归约后,根据左部符号进入下一状态。
三.设计代码
#include
3 / 11
#include
char code;char val[20]; };
const char *p[]={\,i\const char TNT[ ]=\const int M[][12]={ {1}, { 0, 0, 0,0,0,4,0,0,0,2,3}, {0,5}, {0,0,6,7}, { 0, 0, 0, 0,8}, {0,0,0,0,0,0,0,0,99}, {0, 0, 0, 0, 11, 0,0,0,0,0,0,10}, {0, 0, 0, 0, 9}, {-3,-3,-3,-3,-3,-3,-3,-3,3}, { -2,-2,-2,-2,-2,-2,-2,-2,-2}, {-1,-1,-1,-1,-1,-1,-1,-1,-1}, {0,0,0,0,0,0,12}, {0,0,0,0,0,0,0,13}, {-4,-4,-4,-4,-4,-4,-4,-4,-4} };
int col(char);
void pro_process(char *);
code_val scanner(char *);
void concat(char [],char);
char reserve(char []);
struct code_val CiFa(); void main() { int state[50]={0}; char symbol[50]={'#'};
4 / 11
int top=0; ofstream cout(\ struct code_val t; t=CiFa();
int action; int i,j=0; cout<<\′ì???\?o???\?è?·?o?\?3?±êìa2¢·?±?òa?£ do{ cout<
int col(char c) { for(int i=0;i<(int)strlen(TNT);i++)
5 / 11
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库编译原理课程设计在线全文阅读。
相关推荐: