个人简介

Echo Blog


江湖无名 安心练剑
  • 函数式编程-01-什么是函数?
    本章要点 理解现实世界中的函数 在 Java 中表示函数 使用lambda 使用高阶函数 使用柯里化函数 用函数式接口编程 学习目标 为了理解函数式编程是如何工作的, 我们会使用一些函数式库提供的函数式组件,还有Java 8 标准库里可用的少许组件。 不仅如此,...
    2020-06-05 09:42:59 | Pattern
  • 函数式编程-00-什么是函数式编程
    回顾 后来又看了一下这本身,感觉过于学术+偏向于数据结构。 所以感觉不如 《java8 函数式编程》适合学习。 序言 学习 java 函数式编程的目的主要有 2 个: (1)运用下 jdk8 (2)重新理解这种编程思想 实际上很多东西都要反复学些。 准备工作 你可以同时阅读下列内容: java8 系列学习 本系列学习方式 (1)以书本为核心,做发散式学习。 ...
    2020-06-05 09:42:59 | Pattern
  • 编译原理系列-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