编译原理
文章平均质量分 86
不要清汤锅
The lion doesn't concern himself with the opinions of the sheep
展开
-
编译原理——实现简单json解析器
一、词法分析阶段1、创建Tok类,记录Token的类型以及将每个转换为相应的字符串值。package Lex;/** * Created by think on 2017/6/8. */public class TOK { //Tok类型 public static final int OBJB = 0; public static final int OBJE ...原创 2018-06-10 23:57:07 · 1312 阅读 · 0 评论 -
编译原理实现计算器
要求计算器接受四则运算表达式为输入(如下所示)。如果表达式语法正确,则输出计算结果,否则报错,指出错误位置及原因。1)每个语句需要以“;”结束;2)涉及的操作符只要求加减乘除;支持括号;3)操作数为整数或浮点数;4)变量不需要先声明,可直接赋值,它的类型由右边表达式的类型决定;每个变量在使用之前必须要已经有赋值;5)变量名可以是由数字和字母组成,但首字符必须是字母;6)输出语句使用p...原创 2018-06-10 23:57:26 · 7506 阅读 · 2 评论 -
编译原理——CMM词法分析器
整体思路: 为了将文件读取和内容处理分开,将整个文件读取为字符串,然后对该字符串进行解析,各种保留字和符号单独为一个类别,其值为本身,标识符、整型数字,浮点型数字为个为一个类,其值为具体值。先创建TOK类 ,设置词的类别,共32个类别。package CMMLex;/** * Created by think on 2017/10/11. */public class TOK { ...原创 2018-06-10 23:57:38 · 1071 阅读 · 0 评论 -
编译原理——CMM语法分析器
一、了解BNF范式 巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。 现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。 巴科斯范式的内容 在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引...原创 2018-06-10 23:57:51 · 1289 阅读 · 0 评论 -
编译原理——CMM语义分析
一、语义分析要解决的问题•确定类型:确定标识符所关联的数据对象的数据类型。•类型检查:按照语言的类型规则,对运算及运算分量进行类型检查,必要时做出相应类型转换。•识别含义:根据程序设计语言的语义定义,确定各个构造部分组合后的含义,做出相应处理(生成中间代码或者目标代码)。•静态语义检查:比如控制流检查,嵌套层数检查。二、总体思路说明 之前在语义分析阶段生成了抽象语法树,抽象语法树本身就是一种中间代...原创 2018-06-10 23:59:09 · 1864 阅读 · 0 评论