美文网首页程序猿
如何实现一款中文代码解释器

如何实现一款中文代码解释器

作者: gamedilong | 来源:发表于2019-11-26 00:34 被阅读0次

    前言

    上一篇分享过一个简单的轻量级编译器翻译。为了加强自己对编译原理的理解,最近利用业余时间实现了一个中文的代码解释器。本篇介绍一下该编译器的主要内容和实现步骤。
    在线演示

    image
    因为内容是挂在github上,打开后可能要加载一段时间。如打开较慢,请耐心等待一下.

    项目内容

    1. 项目地址 https://github.com/gamedilong/ccc, 第一版为了简单且方便有需要的同学学习,无依赖且没有使用任何脚手架。代码也未压缩。可以直接在浏览器调试。
    2. 该项目命名为ccc解释器,主要取中文和编译器的简写。
    3. 主要功能,将中文代码通过词法分析,语法分析两个步骤编译成抽象语法树,然后将抽象语法树
      编译成js代码执行。

    实现步骤

    1. 实现中文代码解释器 生成ast语法树 (代码基于acorn.js第一个git log调整修改而来);
    2. 实现代码生成器 将ast语法树树编译成代码;
    3. 实现代码编辑器 通过monaco自定义中文高亮规则实现;
    4. 实现抽象语法树,控制台 展示当前抽象语法,及提供打印输出
    5. 整合如上前面的内容

    实现功能

    1. 目前实现了 赋值,表达式,逻辑判断,函数,循环 等相关语法
    2. 提供 打印,定时器 两个上下文供测试使用
    3. 在代码编辑窗口添加代码后,点击执行。右侧抽象语法树和控制台即会生成出对于内容

    总结

    1. 该项目的主要目的是将对编译原理的学习不停留在理论上,通过在已有的开源项目的基础上的实践,加深编译相关理解
    2. 在学习的基础上做一些发散,后续会新增一些其他的上下文实现一些有意思的东西。比如,在node环境下添加上下文执行,添加一些界面的上下文通过中文去操作。另外目前的中文语法主要因为主要是来自于acorn.js,可以看作js的汉化,后续可以自定义一些更符号中文语义的语法。

    相关文章

      网友评论

        本文标题:如何实现一款中文代码解释器

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