Code Monkey home page Code Monkey logo

simplecompiler's Introduction

SimpleCompiler

这是一个用 Javascript 编写的简易编译器,它可以将 Common-Lisp 代码转换为 JavaScript 表达式并执行。它的核心**是将 Common-Lisp 代码转化为语法树结构,再将语法树结构转换为 JavaScript 代码格式。

安装和运行

在使用本编译器之前,请确保您已经安装了 Node.js 环境。然后,您可以下载该项目,并在项目目录下执行以下命令进行安装依赖:

npm install

安装完成后,您可以通过以下命令运行编译器:

npm index.js

编译器会将输出结果打印在命令行终端上,并且执行结果也会在终端上显示出来。

实现细节

该编译器实现的核心**是将 Common-Lisp 代码转化为 JavaScript 格式,然后使用 JavaScript 引擎执行该代码。

概念上来讲,编译器的主要任务就是将一种语言翻译成另一种语言的程序,复杂的语言学话题暂且不论,要让一段复杂的程序被程序所认识,我们需要将其中的词法、语法以及语义准确地分析出来,并通过语法树将源码精准地翻译为目标语言(一般为机器语言或者低级语言)。

在转换过程中,为了保证转换后的代码能够在 JavaScript 中正确执行,该编译器需要做许多辅助处理工作,比如:处理 Common-Lisp 代码中的函数调用、变量声明、条件分支等等语法元素。

一点待处理的小问题

因为目前该编译器使用堆栈的形式对源语言进行语法分析,所以下面这种形式的Common-Lisp语句将无法分析:

(Function (Function a b)(Function c d))

在编译器分析完第一个函数后,会将下一个读取到的函数直接压在上面(于是生成的语法树就错误地变成了嵌套形式)

虽然在写的过程中注意到了这个问题,但是这种逻辑上的问题涉及到了设计**上的缺陷,应该需要另一种方式来进行语法分析,欢迎大家来讨论这个问题

simplecompiler's People

Contributors

ancaeus-whisper avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.