中国程序员之家
LL(1)文法分析 [原创 2006-06-06 21:09:34]
字号: 大 中 小
/************************************/
/* 程序名称: LL(1)预测语法分析器
/* 程序用途: 编译原理实验(三)
/* 编写日期: 2006年5月20日
/* 实验题目: 识别下列表达式
/* E->TG
/* G->+TG|-TG|ε
/* T->FS
/* S->*FS|/FS|ε
/* F->(E)|i
/* 程序作者: 刘颖慧 09103103
/************************************/
/********************************************/
/* 程序相关说明
/*
/* 列 0=E 1=G 2=T 3=S 4=F
/* 行 0=i 1=+ 2=- 3=* 4=/ 5=( 6=) 7=#
/********************************************/
#include<stdio.h>
#include<malloc.h>
#include <conio.h>
#define true 1
typedef struct LLchar
{
char char_ch;
struct LLchar *next;
} Lchar;
Lchar *p,*h,*temp,*top,*base;
char curchar;
char curtocmp;
int right;
int i,j,table_index;
int print_index;
int table[5][8] =
{
/*i + - * / ( ) #*/
{1,0,0,0,0,1,0,0},//E
{0,1,1,0,0,0,1,1},//G
{1,0,0,0,0,1,0,0},//T
{0,1,1,1,1,0,1,1},//S
{1,0,0,0,0,1,0,0} //F
};
char* tstring[5][8] =
{
/* 0 1 2 3 4 5 6 7 */
/* i + - * / ( ) # */
{"E->TG", "ERROR", "ERROR", "ERROR", "ERROR", "E->TG", "ERROR", "ERROR" },//E