福建农林大学 编译原理 课程设计

2025-06-27

福建农林大学计算机与信息学院

计算机类 课程设计报告

课程名称: 编译原理

课程设计题目: 语法分析器 姓 名:

系: 专 业: 年 级: 学 号: 指导教师: 职 称:

2014~2015学年第二学期

林旭文 软件工程 软件工程 2012级 3126016056 李小林 副教授

福建农林大学计算机与信息学院计算机类

课程设计结果评定

评语: 成绩: 指导教师签字: 任务下达日期: 评定日期:

目 录

1 正则表达式 ···························································································································1

1.1 正则表达式 ················································································································1

1.2 确定化(化简)后的状态转换图 ·················································································1 1.3 分析程序代码 ············································································································1 1.4 程序运行截图 ············································································································2 1.5 小结 ·····························································································································3 2 LL(1)分析 ·····························································································································4

2.1 LL(1)文法 ··················································································································4 2.2 LL(1)预测分析表 ······································································································4 2.3 分析程序代码 ············································································································4 2.4 程序运行截图 ············································································································6 2.5 小结 ···························································································································7 3 算符优先分析 ·······················································································································8

3.1 算符优先文法 ············································································································8 3.2 算符优先关系表 ········································································································8 3.3 分析程序代码 ············································································································8 3.4 程序运行截图 ·········································································································· 11 3.5 小结 ························································································································· 12 4 LR分析 ································································································································ 13

4.1 LR文法 ···················································································································· 13 4.2 LR分析表 ················································································································· 13 4.3 分析程序代码 ·········································································································· 13 4.4 程序运行截图 ·········································································································· 17 4.5 小结 ························································································································· 19 参考文献: ······························································································································· 19

1 正则表达式

1.1 正则表达式

(a*|b*)b(ba)*

1.2 确定化(化简)后的状态转换图

1.3 分析程序代码

import java.util.Scanner;

import java.util.regex.Matcher; import java.util.regex.Pattern;

public class Main {

public static void main(String[] args){ String a,b;

Scanner input = new Scanner(System.in);

System.out.println(\请先输入【正则表达式】再输入【符号串】\); while(input.hasNext()) { a = input.next(); b = input.next();

System.out.println(\符号串【\ + b + \】\ + work(a,b) + \正则表达式【\ + a + \】\); } }

private static String work(String a, String b) {

Pattern pattern = Pattern.compile(a);//将给定的正则表达式编译并赋予给Pattern类

Matcher matcher = pattern.matcher(b);//对输入的字串以该正则表达式为模开展匹配

return matcher.matches()?\满足 \:\不满足 \;//匹配检测 } }

1

#include #include #include using namespace std;

int m[100][255];//m[起点][路径]=终点 bool end[100]; void init() {

m[1]['a']=2; m[1]['b']=3; m[2]['a']=2; m[2]['b']=4; m[3]['b']=6; m[4]['b']=5; m[5]['a']=4; m[6]['a']=4; m[6]['b']=6;

end[3]=end[4]=end[6]=true; }

int main() {

puts(\本程序的正则表达式为(a*|b*)b(ba)*,请输入符号串\ string s; init(); cin>>s; int now=1;

for(int i=0;s[i];i++) now=m[now][s[i]]; if(end[now])

puts(\符合\ else

puts(\不符合\ return 0; }

1.4 程序运行截图

JAVA

C++

2


福建农林大学 编译原理 课程设计.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:燕山大学电力电子课程设计光伏逆变并网设计

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219