美文网首页
手拉手教你实现一门编程语言 Enkel, 系列 2

手拉手教你实现一门编程语言 Enkel, 系列 2

作者: KevinOfNeu | 来源:发表于2018-09-08 01:29 被阅读0次

    本文系 Creating JVM language 翻译的第二篇。


    总的来说,我需要实现如下三个模块:

    模块 输入 输出
    Lexer(词法分析器) 代码(文本格式) Token 序列
    Parse(语法分析器) Token 序列 AST(抽象语法书)
    Compiler(编译器) AST JVM 字节码

    Lexer

    词法分析器的职责是把简单的文本输入,识别为 Token(可以理解为一种记号),代码,即文本文件在词法分析之前,仅仅是无意义的字节流而已,但 Token 不同,Token 记录的类型信息对接下来的步骤很重要。

    Parser

    语法分析器的职责是把 Token 序列输入,组织成具有层次结构的抽象语法树(AST), AST 决定了代码是被如何执行的。

    Compiler

    编译器的职责是遍历 AST,并且翻译成合法的 Java 字节码。

    例子

    假设有表达式 int x=a*5+2,处理流程如下图所示:

    image

    AST 创建完毕后,就可以用 Compiler 生成字节码了。

    相关文章

      网友评论

          本文标题:手拉手教你实现一门编程语言 Enkel, 系列 2

          本文链接:https://www.haomeiwen.com/subject/mqfkgftx.html