递归下降分析法的简单例子的c语言实现
2012-04-08 20:23
381 查看
我们举的简单例子是
G[s]:
S→a |∧| (T)
T→T, S | S
转化为LL1文法
S →a |∧| (T)
T →ST'
T'→,ST'| ε
c语言代码实现
G[s]:
S→a |∧| (T)
T→T, S | S
转化为LL1文法
S →a |∧| (T)
T →ST'
T'→,ST'| ε
c语言代码实现
#include<stdio.h> char scaner(char*input,int* p); void S(char*input,int* p); void T(char*input,int* p); void T1(char*input,int* p); void error(); int sym=0; int main() { int p=0; char input[200]={0}; printf("请输入你要识别的单词\n"); printf("单词只能由 ( ) a ^ , 组成,且单词必须以$#结尾\n"); scanf("%[^#]s",input); printf("the word you input is : %s\n",input); sym=scaner(input,&p); S(input,&p); if(sym=='$') printf("sucess\n"); else printf("fail"); do { ; }while(1); return 0; } char scaner(char*input,int *p) { char temp=input[*p]; (*p)++; return temp; } void S(char*input,int* p) { if(sym=='a'||sym=='^') sym=scaner(input,p); else if(sym=='(') { sym=scaner(input,p); T(input,p); if(sym==')') sym=scaner(input,p); else error(); } return ; } void T(char*input,int* p) { S(input,p); T1(input,p); return ; } void T1(char*input,int* p) { if(sym==','){ sym=scaner(input,p); S(input,p); T1(input,p);} else if(sym!=')') error(); } void error() { printf("error!!!"); return ; }
相关文章推荐
- 【龙书笔记】用Python实现一个简单数学表达式从中缀到后缀语法的翻译器(采用递归下降分析法)
- C语言实现简单的面向对象例子
- C语言实现的简单通讯录例子
- 简单C语言递归实现进制转换并输出
- c语言简单递归/非递归实现二分查找
- Linux下C语言实现的简单使用线程向FIFO里写入与读取数据的例子
- SQL2000 存储过程中实现递归的一个简单例子
- [数据结构]图的DFS用栈消除递归的C语言简单实现
- Java实现C语言语义分析(递归下降)
- C语言实现的简单通讯录例子
- 利用递归下降分析法求解简单正整数四则运算
- C语言简单递归实现字符串逆序输出
- 二叉树的创建、前序中序后序递归遍历与非递归遍历、层序遍历以及二叉树简单应用的C语言实现
- [算法]简单的背包问题递归解法,C语言实现
- C语言实现的简单通讯录例子 - 乌鸟heart - 博客园
- C语言实现简单的面向对象例子
- 小朋友学C语言(16):斐波那契数列的非递归实现
- C语言中strstr函数的简单实现
- C语言使用结构体实现接口简单列子
- C语言:动态顺序表的简单实现