资源简介
语法分析和词法分析,编译技术原理实验报告完整代码。
代码片段和文件信息
#include “stdio.h“
#include “string.h“
char prog[100]token[8]ch;//prog[100],用来存储要处理的对象,token用来与关键字比较,ch用来存储一个字符
char *rwtab[6]={“begin““if““then““while““do““end“};//关键字表
int synpmnsum;
/*syn是种别码,p为prog数组的指针,m为token数组的指针,n为rwtab数组的指针,sum为词法分析器里的数字数值大小*/
int flag;//flag与判断是否end有关
void factor(void);//因式 factor
void expression(void);//表达式 expression
void yucu(void);
void term(void);//项 term
void statement(void);// 语句 statement
void parser(void);
void scaner(void);//扫描器
int main(void)
{
p=flag=0;
printf(“\nplease input a string (end with ‘#‘): \n“);
/*从命令行读取要处理的对象,并存储在prog[]数组中*/
do
{
scanf(“%c“&ch);
//printf(“\n input %c now\n“ch);
prog[p++]=ch;
}while(ch!=‘#‘);
p=0;
scaner();//主要完成赋值种别码等词法分析功能
parser();//调用各种递归子程序,完成语法分析的过程
//getch();
}
/*调用各种递归子程序,完成语法分析的过程*/
void parser(void)
{
if(syn==1)//begin
{
scaner(); /*读下一个单词符号*/
yucu(); /*调用yucu()函数;*/
if(syn==6)//end
{
scaner();
if((syn==0)&&(flag==0))//出现#且flag=0
printf(“success!\n“);
}
else
{
if(flag!=1) printf(“the string haven‘t got a ‘end‘!\n“);//flag来判断是否end
flag=1;
}
}
else
{
printf(“haven‘t got a ‘begin‘!\n“);
flag=1;
}
return;
}
void yucu(void)
{
statement(); /*调用函数statement();*/
while(syn==26)//分号
{
scaner(); /*读下一个单词符号*/
if(syn!=6)
statement(); /*调用函数statement();*/
}
return;
}
void statement(void)
{
if(syn==10)
{
scaner(); /*读下一个单词符号*/
if(syn==18)
{
scaner(); /*读下一个单词符号*/
expression(); /*调用函数expression();*/
}
else
{
printf(“the sing ‘:=‘ is wrong!\n“);
flag=1;
}
}
else
{
printf(“wrong sentence!\n“);
flag=1;
}
return;
}
void expression(void)
{
term();
while((syn==13)||(syn==14))
{
scaner(); /*读下一个单词符号*/
term(); /*调用函数term();*/
}
return;
}
void term(void)
{
factor();
while((syn==15)||(syn==16))
{
scaner(); /*读下一个单词符号*/
factor(); /*调用函数factor(); */
}
return;
}
void factor(void)//因式处理函数
{
if((syn==10)||(syn==11))//标识符,数字
{
scaner();
}
else if(syn==27)//开头是左括号(
{
scaner(); /*读下一个单词符号*/
expression(); /*调
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-05-01 22:49 语法分析\
目录 0 2018-05-01 11:20 语法分析\Debug\
文件 188501 2018-05-01 20:19 语法分析\Debug\YUFA1613001007.exe
文件 185956 2018-05-01 20:19 语法分析\Debug\YUFA1613001007.ilk
文件 14237 2018-05-01 20:19 语法分析\Debug\YUFA1613001007.obj
文件 213596 2018-05-01 11:20 语法分析\Debug\YUFA1613001007.pch
文件 369664 2018-05-01 11:20 语法分析\Debug\YUFA1613001007.pdb
文件 33792 2018-05-01 22:49 语法分析\Debug\vc60.idb
文件 45056 2018-05-01 11:20 语法分析\Debug\vc60.pdb
文件 6567 2018-05-01 11:08 语法分析\YUFA1613001007.cpp
文件 3497 2018-05-01 20:19 语法分析\YUFA1613001007.dsp
文件 553 2018-05-01 22:49 语法分析\YUFA1613001007.dsw
文件 41984 2018-05-01 22:49 语法分析\YUFA1613001007.ncb
文件 48640 2018-05-01 22:49 语法分析\YUFA1613001007.opt
文件 262 2018-05-01 22:49 语法分析\YUFA1613001007.plg
文件 14444 2018-05-01 11:13 语法分析\success截图.PNG
相关资源
- 自顶向下预测分析语法分析程序
- 以词法分析和语法分析部分的上机结
- 编译原理课程设计-LL(1)预测分析法
- 递归下降语法分析实验报告
- 实验二 递归下降语法分析程序设计
- 语法分析器_编译原理_带报告
- 实验三 LL1语法分析器设计
- PL0词法语法分析器225358
- 编译原理中VC实现语法分析器
- 语法分析器 算符优先 编译原理实验
- 赋值语句语法分析
- 编译原理 语法分析、语义分析综合实
- 哈工大软件学院编译原理语法分析源
- 基于Pascal语言的语法分析器
- 词法分析、语法分析、语义分析
- 词法分析语法分析语义分析
- 算术表达式的语法分析及语义分析程
- 编译原理 语法分析器
- 递归下降分析法的实现
- 自顶向下的语法分析器
- 四川大学编译原理课程设计报告C-词法
- 编译原理,词法分析&语法分析及源代
- 赋值语句词法和语法分析程序
- 《编译原理》课程设计指导书 算术表
- yacc实现的语法分析器
- 语法分析器实验报告
- 编译原理——语法分析器递归下降分
- LL(1)语法分析 任意输入一个文法符
- 编译课程设计报告通过编程实现语法
- 编译原理 递归下降语法分析程序代码
评论
共有 条评论