资源简介
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1) 写出符合给定的语法分析方法的文法及属性文法。
(2) 完成题目要求的中间代码四元式的描述。
(3) 写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。
(4) 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。
(5) 设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:
1 系统描述(问题域描述);
2 文法及属性文法的描述;
3 语法分析方法描述及语法分析表设计;
4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计;
5 编译系统的概要设计;
6 详细的算法描述(流程图或伪代码);
7 软件的测试方法和测试结果;
8 研制报告(研制过程,本设计的评价、特点、不足、收获与体会等);
9 参考文献(按公开发表的规范书写)。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace std;
//*******************************************************************
/*文法
S->for(A){G}
A->D id P
D->E id O F
E->id=F
F->id
P->++|--
O-> <|>
G->GB
B->ID=S1
s1->TE1
T->FT1
E1->+TE1|&|-TE1
T1->*FT1|&|-TE1
X->B|&
*/
int colume=0;//词法分析当前行数
int *ERROR=new int [100];
int error=0;
int file_siyuan_cow=1;//四元式文件输出的行数
int row=0;//记录当前地址序列
int t=0;//临时变量标号
//字符串数组,保存词法分析后的连续单词
struct tableword
{
string word;
int type;//1表示ID,2表示数值常量,3表示字符常量,0表示其它
};
//单词序列
tableword table_word[100];
int tableword_length=0;
int word_now=0;//
struct item
{
//int sequence;//四元式序号
string text;//四元式内容
//int type;//0表示出口地址栈,1表示循环栈,-1表示正常四元式
//string shift;//转移到的目标地址
};
item siyuanshi[100];
struct Stack
{
int size;
int length;
string *top;
string *base;
};
struct StackExit
{
int size;
int length;
int *top;
int *base;
};
StackExit exit1;//出口栈
Stack circle;//循环栈
Stack operater;//预算副栈
Stack operand;//操作数栈
//词法分析相关函数
bool Keyword(char cstring *KEYWORDint KNLengthifstream &infile);
bool Identify(char cifstream &infilestring &strtemp);
bool ConstN(char cifstream &infile);
bool ConstStr(char cifstream &infile);
bool ConstChar(char cifstream &infile);
bool ConstNum(char cifstream &infile);
bool Operator(char cifstream &infile);
bool Delimiter(char c );
int classfify(char c);
int classify_num(char c);
int read(tableword &word);
//栈的处理
void InitStack(Stack &stack);
void Push(Stack &stackstring strtemp);
void Pop(Stack &stackstring &stemp);
void Gettop(Stack &stackstring &stemp);
void InitStack(StackExit &stack);
void Push(StackExit &stackint temp);
void Pop(StackExit &stackint &temp);
void Gettop(StackExit &stackint &temp);
//*************************************************
//---------------语法语义函数
void receive(tableword &wordstring tempint type);
void S(tableword &word);
void A(tableword &word);
void E(tableword &word);
void D(tableword &word);
void O(tableword &word);
void P(tableword &word);
void G(tableword &word);
void B(tableword &word);
void S1(tableword &word);
void X(tableword &word);
void E1(tableword &word);
void T(tableword &word);
void T1(tableword &word);
void F(tableword &word);
//----------------------------------------------------
void emit(int rowstring strtemp);
string int_to_str(int n);
char Priority(string op1string op2 );
void Menu();
void Outtenspace(int space_number);
void output();
int main()
{
//读出关键字
string KEYWORD[80];
int KNLength=0;
ifstream inf(“KEYWORD.txt“ios::in);
if(!inf){cout<<“error“;exit(1);}
int i=0;
while(inf>>KEYWORD[i])
i++;
KEYWORD[i]=“-1“;
KNLength=i;
inf.close();
//********************************************
//栈
//初始化栈
InitStack(exit1);
InitStack(circle);
InitStack(opera
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 31053 2010-01-08 09:33 for循环语句的翻译\for循环语句.cpp
文件 3467 2010-01-08 09:59 for循环语句的翻译\for循环语句.dsp
文件 530 2010-01-06 16:25 for循环语句的翻译\for循环语句.dsw
文件 538 2010-01-07 14:20 for循环语句的翻译\KEYWORD.txt
文件 157 2010-01-09 00:01 for循环语句的翻译\procedure.txt
目录 0 2010-01-09 22:26 for循环语句的翻译
----------- --------- ---------- ----- ----
35745 6
- 上一篇:计算机体系结构期末试卷及其答案
- 下一篇:用WIN32汇编写的俄罗斯方块
相关资源
- LR(0)完整的语法分析方法(拓广文
- OUC编译原理全部实验
- 编译原理上机源代码LR语法分析器
- 编译原理LR0分析代码完整
- 哈工大编译原理实验三语义分析实验
- 编译原理实验报告,词法分析,语法
- 算符优先分析程序的设计可趁设计
- 山东大学编译原理实验
- 编译原理语法分析实验报告
- 编译原理-语法分析-LL1
- 编译原理优先算法代码,及详细实验
- 编译原理 课后习题答案 陈意云 张昱
- 编译原理语法树的实现
- 编译原理实验MiniPascal编译器设计 Fl
- 子集构造法NFA的确定化
- 程序设计语言 编译原理 第三版 国防
- 编译原理First集Follow集求解
- 云南大学软件学院编译原理实验1-5
- 山东科技大学编译原理课程设计
- 编译原理 实现TINY+编译器 课程实验报
- 广工编译原理历年真题及答案
- seu编译原理课程设计
- 符号表设计与实现
- 2014-20152编译原理-期末B卷.docx
- NFA确定化与DFA最小化
- 算术表达式翻译成对应的后缀表达式
- 编译原理学习大全,详解
- 广工编译原理实验报告+可执行程序
- [典例]编译原理学习笔记·文法的构造
- 广东工业大学编译原理实验报告PL0语
评论
共有 条评论