编译原理语法分析器
在递归下降LL(1)分析法中,每个非终结符对应一个分析子程序,分析程序从调用文法开始符号所对应的分析子程序开始执行。
1.按照文法规则,每遇到一个终结符,则判断当前读入的单词符号是否与该终结符相匹配,若匹配,则继续读取下一个单词符号;若不匹配,则进行错误处理。
2.每遇到一个非终结符,则调用相应的分析子程序。以此方法,实现完整的字符串的语法分析。
基本内容:
给定简单算术表达式文法:
E → T | T + T | T - T
T → F | F * F | F / F
F → (E) | a | b | c
等价于:
E → T{ + T |-T }
T → F{ * F | / F }
F → (E) | a | b | c
1、输入:单词串(字符串), 以‘#’ 结束。
2、输出:
合法字符串: 符合文法规则,正确
非法字符串:不符合文法规则,错误
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN 100
char str[LEN];
int i;
int flag=1; //flag-是否分析正确的标识,1分析正确,0分析失败
void E();
void T();
void F();
int main()
{