编译原理实验报告(词法分析器语法分析器) 联系客服

发布时间 : 星期六 文章编译原理实验报告(词法分析器语法分析器)更新完毕开始阅读9c3b61ed2e60ddccda38376baf1ffc4fff47e269

..

else return(0); }

void main() {

printf(\ i=0; do{i=i+1;

scanf(\ }while(a[i]!='#'); i=1;

j=0; get();

while(s!='#'){ memset(token,0,20); switch(s) {

case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z':

while(letter(s)||digit(s)) {token[j]=s;

word 资料

..

j=j+1; get(); }

retract();k=lookup(token); if(k==0)

printf(\ else printf(\ break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':

while(digit(s)){ token[j]=s; j=j+1; get(); }

retract();

printf(\ break;

case '+':printf(\ case '-':printf(\ case '*':printf(\ case '<':get();

if(s=='=') printf(\ else{retract();

printf(\ }

break; case '=': get(); if(s=='=')

printf(\ else{

retract();

printf(\ }

break;

word 资料

..

case ';':

printf(\ break;

case ' ':break;

default:printf(\ } j=0; get(); } }

六:实验结果:

实验二

一、 实验名称:语法分析器的设计 二、 实验目的:

用C语言编写对一个算术表达式实现语法分析的语法分析程序,并以四元式的形式输出,以加深对语法语义分析原理的理解,掌握语法分析程序的实现方法和技术。 三、 实验原理:

word 资料

..

1、算术表达式语法分析程序的算法思想

首先通过关系图法构造出终结符间的左右优先函数f(a),g(a)。在分析的过程中,通过左右优先函数比较当前读入终结符与前一个读入终结符间的优先关系,分析后适时的以四元式形式输出相关的符号。

2、通过优先函数关系图构造优先函数

优先函数表

f g + 4 3 * 6 5 i 6 7 ( 2 7 ) 6 2 优先函数关系图

四、实验容: 1、实验分析

f+ f* fi f( f) g+ g* gi g( g) 本实验所用文法是: G[E]:E->E+E|E-E|E*E|E/E|(E)

E->0|1|2|3|……|9

根据此文法编写程序时,算术表达式的求解过程需要用到算术符号的优先判断,定义两个字符串数组optr[]、opnd[]用来模拟栈,存放算术符和操作数,用a[]来存放表达式字符串,在分析时还要通过函数int f(char c)和int g(char c),判断运算符之间的优先关系,根据不同情况作各种不同操作。流程图如下:

word 资料