个人简介

Echo Blog


江湖无名 安心练剑
  • 编译原理系列-06-LR
    3.3 LR分析 LL(k)预测法的弱点是它必须预测下一个将被使用的产生式,并且需要向前查看一个字符、LR(k)是一个更有效的分析法,它可以在看见与整个产生式相关的所有输人记号以后再做出决定(多于k个记号)。 LR(k)分别代表由左自右的分析、最右推导、向前查看k个记号。最右推导的使用看起来有些奇怪,怎样用最右推导进行由左向右的分析呢? 图3.18说明了在文法3.1程序中的LR分析过程...
    2020-06-04 05:34:28 | Java
  • 编译原理系列-05-Predictive analysis 预测分析
    3.2 预测分析 有些文法使用了像递归下降这样的简单算法来简化分析。 实际上,就是把每个文法产生式转换成一个递归函数的子句。 如文法3.11所示。 文法3.11 S→if E then S else S L→end S→beginS L L→;SL S→print E E→num=num 这...
    2020-06-04 05:34:28 | Java
  • 编译原理系列-04-parsing 语法分析之上下文无关文法
    语法分析 前儿章讨论过了用符号代替正则表达式的简化机制,这种机制在使用时是很方便的: digits=[0-9] + sum=(digits“+") *digits 这些正则表达式定义了28+301+9的和。又如: digits=[0-9] + Sum=expr“+"expr expr="("sum") " | digits 所定义的表达形式如下所示: (109+23) 61 ...
    2020-06-04 05:34:28 | Java
  • 编译原理系列-03-lexical analysis 词法分析
    词法分析 为了把程序从一种语言翻译成另一种语言,编译器必须首先把程序分解并搞清相应的结构和含义,然后再用不同的方式把它们组合起来。编译器的前端负责分析,后端负责组合。 分析的类别 分析包含3类: 词法分析:将输入分解成单独的字或记号; 语法分析:分析程序中短语的结构; 语义分析:分析程序的含义。 词法分析器接收字符流,生成一系列的名字、关键字和标点符号,并舍弃了记号之间的空白符...
    2020-06-04 05:34:28 | Java
  • 编译原理系列-02-mini java
    mini java 重新写一个 java 时间有限,只能先实现一个核心功能。 所以需要对 java 多一些特性的简化。 文本主要收集一些网上资料,做下简单的整理。 EBNF Grammar for Mini-Java Goal = MainClass, { ClassDeclaration }, EOF; MainClass = "class", Identifier, "{", ...
    2020-06-04 05:34:28 | Java
  • 编译原理系列-01-概述
    概述 本书描述了将编程语言转换成可执行代码的技巧、数据结构以及运算法则。现代编译器是由很多阶段组成的,每一阶段对不同的语言进行操作。依据这样的结构,本的每章中都包含有一个相应的阶段。 为了说明编译语言的过程,本书将以一个简单但很重要的Java子集Mini Java为例。希望读者自己能够完成每一章中相应的阶段,那么在学习完第一部分后,就实现一个编译器。Mini Java很容易进行扩展以支持...
    2020-06-04 05:34:28 | Java
  • 编译原理系列-00-入门
    序言 至于《编译原理》,相信很多人都学习过。 就和《计算机组成原理》、《汇编语言》一样学的时候云里雾里,学完之后九霄云外。 这些知识属于难学少用,所以很容易忘记。 以前也学过 2 遍左右的编译原理,知道个大概,但是终究没有深入学习。 个人重学的理由 最新在写 lombok-ex 一个类似于 lombok 的小工具。 想把 AOP 再提升一个档次,虽然磕磕绊绊也写了一些,但是对于...
    2020-06-04 05:34:28 | Java
  • jvm-sandbox-repeater-00-overview 入门介绍
    基于JVM-Sandbox的录制/回放通用解决方案 jvm-sandbox-repeater是JVM-Sandbox生态体系下的重要模块,它具备了JVM-Sandbox的所有特点,插件式设计便于快速适配各种中间件,封装请求录制/回放基础协议,也提供了通用可扩展的各种丰富API。 目标人群 - 面向测试开发工程师 线上有个用户请求一直不成功,我想在测试环境Debug一下,...
    2020-06-04 05:34:28 | Jvm