1.
实验目的
构造文法的语法分析程序实验要求,
2.
实验要求
采用预测分析法对输入的字符串进行语法分析。
3.
实验环境
VC++6.0
4.
实验原理
对文法 G 进行语法分析,文法 G 如下所示:
*0. S→a */
*1. S→^
*2. S→(T)
*3. T→SW *
*4. W→,SW
*5. W→ε;
5.
软件设计与编程
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char str[100]; //存储待分析的句子
const char T[ ] = "a^(),#"; //终结符,分析表的列符
const char NT[ ] = "STW"; // 非终结符,分析表的行符
/* 指向产生式右部符号串 */
const char *p[] = {
/*0. S→a */ "a",
/*1. S→^ */ "^",
/*2. S→(T) */ "(T)",
/*3. T→SW */ "SW",
/*4. W→,SW */ ",SW",
/*5. W→ε; */ ""
};
//设 M[i][j]=x ,通过 p[M[i][j]]=p[x] 获取右部符号串。
const int M[][6] = {
/* a ^ ( ) , # */
/*S*/ { 0, 1, 2, -1, -1, -1 },
/*T*/ { 3, 3, 3, -1, -1, -1 },
/*W*/ { -1, -1,-1, 5, 4, -1 }
};
void init()// 输入待分析的句子