Compiler_词法分析_直接转向法
来源:互联网 发布:复制linux系统 编辑:程序博客网 时间:2024/05/29 14:05
本文出自:blog.csdn.net/svitter
依据上述转换图,写出直接转向代码:
//============================================================================// Name : Comlier.cpp// Author : vit// Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include <iostream>#include <string.h>using namespace std;bool confirm;int status;int no;bool JudgeNum(char &a){ if(a >= '0' && a <= '9') return true; else return false;}void analysis(string &a){ if(status == 0) { if(a[no] == '.') { status = 6; no ++; analysis(a); } else if(JudgeNum(a[no])) { status = 1; no ++; analysis(a); } else { confirm = false;// cout << status; return; } } else if(status == 1) { if(JudgeNum(a[no]) || a[no] == '.') { status = 2; no++; analysis(a); } else if(a[no] == 'E'|| a[no] == 'e') { status = 5; no++; analysis(a); } else { confirm = false;// cout << status; return ; } } else if(status == 2) { if(JudgeNum(a[no])) { status = 2; no++; analysis(a); } else if(a[no] == 'E'|| a[no] == 'e') { status = 3; no++; analysis(a); } else { confirm = true;// cout << status; return; } } else if(status == 3) { if(a[no] == '+' || a[no] == '-') { status = 4; no++; analysis(a); } else { confirm = false;// cout << status; return; } } else if(status == 4) { if(JudgeNum(a[no])) { status = 5; no++; analysis(a); } else { confirm = false;// cout << status; return; } } else if(status == 5) { if(JudgeNum(a[no])) { status = 5; no++; analysis(a); } else { confirm = true;// cout << status; return; } } else if(status == 6) { if(JudgeNum(a[no])) { status = 2; no++; analysis(a); } else { confirm = false;// cout << status; return; } } else cout << "status error." << endl;}int main(){ string a; while(cin >> a) { confirm = false; status = 0; no = 0; analysis(a); if(confirm) cout << "yes" << endl; else cout << "no" << endl; }}
0 0
- Compiler_词法分析_直接转向法
- Compiler_词法分析_表驱动法
- Compiler_词法分析_表驱动法_分析文件
- 编译原理_词法分析
- 编译原理_词法分析
- 编译原理_词法分析部分
- 编译原理_PL/0_词法分析
- 编译原理_词法分析程序设计
- c词法分析 贪心法
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 3.1- 编程之美-字符串移位包含的问题
- PAT A 1021.Deepest Root (25)
- 日子越过越好
- 【文本分类】最强中文分词系统ICTCLAS
- QT中QString 类的使用
- Compiler_词法分析_直接转向法
- Scanner & BigInteher & BigDecimal
- Java中JME、JSE、JEE、JFX的区别
- wifi共享精灵2014. 4 .25升级日志详解
- magento 后台保存分类失败,无法保存产品,ajax一直在转的问题 的解决 - Cannot edit categories in Magento
- Algorithm学习笔记 --- Black Box
- 如何用各种编程语言杀死一条龙
- 智能家居离我们还有多远
- epoll通俗讲解