编译原理 - 语法分析
来源:互联网 发布:mac uvz文件 编辑:程序博客网 时间:2024/04/30 08:57
一、实验目的
加深对语法分析过程的理解。
二、实验平台
Windows + CodeBlocks
三、基础内容
递归下降分析
- 对该文法进行 LL(1)判别,若不是 LL(1)文法,则进行等价变换。
- 构造预测分析表。
- ## ##构造递归下降分析程序。
四、文法
E->TE’E’->+TE’ | εT->FT’T’->*F T’| εF->(E) | i
五、源代码
#include<stdio.h>#include<string.h>char str[10];int index=0;void E(); //E->TX;void X(); //X->+TX | evoid T(); //T->FYvoid Y(); //Y->*FY | evoid F(); //F->(E) | iint main(){ int len;printf("请输入要识别的字符串(只能由i、+、-、*、/、(、)组成):");scanf("%s",str); len=strlen(str); str[len]='#'; str[len+1]='\0'; E(); printf("success!\n"); strcpy(str,""); index=0; return 0;}void F(){ if(str[index]=='i') { index++; } else if (str[index]=='(') { index++; E(); if(str[index]==')') { index++; } else { printf("error!\n"); exit (0); } } else { printf("error!\n"); exit(0); }}void E(){ T(); X();}void X(){ if(str[index]=='+') { index++; T(); X(); }}void T(){ F(); Y();}void Y(){ if(str[index]=='*') { index++; F(); Y(); }}
六、运行
0 0
- 编译原理语法分析LR1
- 编译原理语法分析
- 编译原理之语法分析
- 【编译原理】语法分析
- 编译原理—语法分析
- 编译原理 - 语法分析
- 语法分析(编译原理)
- 编译原理语法分析
- 编译原理:语法分析
- 编译原理(三)语法分析
- 编译原理 实验3 语法分析
- 编译原理学习之语法分析
- 编译原理语法分析(java)
- 【编译原理】语法分析(一)
- 【编译原理】语法分析(二)
- 【编译原理】语法分析(三)
- 【编译原理】语法分析(四)
- 编译原理,自上而下非递归语法分析自上而下的语法分析
- Java 本地文件常用操作
- 【测试】从面试角度谈360和阿里的测试文化
- sqlite
- 蓝牙基带 物理信道
- 【IOS开发】WKWebView封装APP
- 编译原理 - 语法分析
- 让msysgit记住用户名和密码
- 全栈工程师笔记0808-3
- 树-堆结构练习——合并果子之哈夫曼树
- POJ 1679 The unique MST [次小生成树]
- Java中为什么要使用单例模式
- C#入门7.9——ArrayList类中元素的添加
- ABAP中的系统变量SY-INDEX与SY-TABIX
- 使用getid3插件获取文件播放时间