美文网首页
编译过程介绍

编译过程介绍

作者: 云中翻月 | 来源:发表于2020-03-27 23:12 被阅读0次

编译过程介绍

1 问题简述

程序需要读入用户的脚本,然后判断是否符合预定义的语法规则。若存在则将第一条出错反馈给用户,否则,程序将对用户的脚本代码进行转化,生成可进一步处理的中间代码。

2 具体过程

2.1 第一步

载入预定义颜色映射表,关键字表。
初始化字典树。

2.2 第二步

检查各类可能错误。

2.2.1 具体步骤一

检查用户输入脚本代码的括号匹配,若存在问题,则进行反馈并中止编译。

2.2.2 具体步骤二

分解用户输入的脚本代码,将其分解为关键词形式。若存在未知关键词或者关键词冲突,则进行反馈并中止编译。

2.2.3 具体步骤三

检查变量声明问题,若存在变量未定义或重复定义,则进行反馈并中止编译。

2.2.4 具体步骤四

检查函数调用问题,若存在不合法调用、函数参数缺省或赘余,则进行反馈并中止编译。

2.3 第三步

通过上述编译过程后,程序完全分解用户代码。根据预定义的语法规则,输出对应符号相关信息(如变量内容,函数参数等)。

2.4 第四步

对函数的参数中的表达式一项进行化简处理,按照运算符优先级进行模拟展开,并建立表达式树,依次划分运算顺序,分离运算过程。

3 总结

3.1 时空复杂度分析

所有涉及操作的空间复杂度均低于OceanView中其他过程的空间复杂度,因此这里并不会产生空间使用超限的问题。

所有涉及操作的时间复杂度与读入脚本的长度几乎为线性相关,相比较于OceanView中其他过程的时间复杂度,编译用户脚本的占用时间可以忽略不计。

3.2 优势

程序较为完美的根据预定义的语法规则,完成了代码的转化。(目前尚未测试出bug)
最终生成的代码,依据表达式树的形式给出,便于OceanView做进一步处理。
程序代码经过多次重构,封装良好,最终只提供给用户唯一调用接口,方便迁移和复用。

3.3 劣势

由于预定义的语法规则比起一门正规语言要简便,最终生成的目标代码也可以理解为高级语言的形式。因此程序省略了传统编译器中的部分过程,并不能算作一个完整的编译器。

相关文章

  • 编译过程介绍

    编译过程介绍 1 问题简述 程序需要读入用户的脚本,然后判断是否符合预定义的语法规则。若存在则将第一条出错反馈给用...

  • gcc编译过程简单介绍

    写了好几年代码了,一直记不住gcc是如何编译。今天特地写篇笔记记录下来,以后忘记了还可以回来看笔记。 对于一个深爱...

  • C++编译过程

    C++ 编译过程在介绍编译器之前,先简单地说一下 C++ 的编译过程,以便理解编译器的工作。编译(compilin...

  • LLVM 编译过程 ②

    前面一个章节已经简单介绍了LLVM。该章节主要介绍LLVM的编译过程。 1. OC源文件 2. 编译过程 命令...

  • Linux Makefile与Kconfig文件详解

    本文章介绍了makefile跟kconfig文件,包括编译过程与makefile编码规则。 编译过程:我们在进行l...

  • Kotlin 编译流程简介

    Kotlin 编译流程简介 这里主要介绍 .kt 文件的处理编译过程。 如果使用命令行编译 kotlin 文件,例...

  • Kubernetes Build 总结以及问题

    本文介绍Kubernetes编译的过程。参考:https://kubernetes.io/docs/setup/r...

  • 浅谈编译过程

    浅谈编译过程浅谈编译过程

  • webpack4 编译过程

    介绍webpack4的编译过程, 以及会触发的一些hooks。本文只是简单的展示webpack编译流水线,通过函数...

  • 编译过程

    前言 计算机应用都依赖于计算机程序;除此之外,计算机应用还需要基础硬件去执行计算机程序,而基础硬件又是不能识别我们...

网友评论

      本文标题:编译过程介绍

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