浅谈如何做一个编译器?

原创 2002年09月22日 12:12:00

这里不讲复杂的编译原理,我只想对我曾写过的Basic解释器做一些思路上的说明,或许能启发你做此类软件的思路.

第一步.词法分析

简单地说就是从源文件中提取单词,装到一个容器里(比如vector,MFC中的CArray).
比如说有这么一句程序
if A>B Then A=B
那么提取的单词就是"if", "A", ">", "B", "Then",  "A",  "=",  "B"
把他们通通装到一个容器里为以后的运行作准备.

第二步.运行

直接就运行吧,不再做什么复杂的分析工作了.

运行工作也是很简单的.
首先,我顺着一个单词一个单词地分析
for(int i=0;i<单词总数;i++)
{
   switch(单词(i))
   {
      case "if":     ....
                       break;
      case "=":     ....
                       break;
         .....
    }
}
我就是按上面这样的形式来分析已经提取的单词
遇到"if"单词该怎么样运行;遇到"="单词该怎么样运行;.........
具体的运行工作就看你自己写的了,我不再具体说了.

你可以在csdn上找到我的Basic解释器源代码来参考

自己制作页面编辑器(js+css)

编辑器都有什么功能。文字加粗,上传图片,改变大小等等。此例仅包含文字加粗和图片上传。 首页你要知道html标签中的contenteditable="true"属性,不知道的自行去百度。(可让div可...
  • u010674395
  • u010674395
  • 2017年03月03日 20:22
  • 1149

浅谈如何做一个编译器?

这里不讲复杂的编译原理,我只想对我曾写过的Basic解释器做一些思路上的说明,或许能启发你做此类软件的思路.第一步.词法分析简单地说就是从源文件中提取单词,装到一个容器里(比如vector,MFC中的...
  • tangl_99
  • tangl_99
  • 2002年09月22日 12:12
  • 3516

手把手教你做一个 C 语言编译器(9):总结

恭喜你完成了自己的 C 语言编译器,本章中我们发一发牢骚,说一说编写编译器值得注意的一些问题;编写编译器时遇到的一些难题。 本系列: 手把手教你做一个 C 语言编译器(0):前言手把手教你...
  • benpaobagzb
  • benpaobagzb
  • 2016年03月07日 23:48
  • 862

自制编译器:语法分析器(一)

感觉语法分析器在编译器前端是一个较为庞大的东西,因此打算分两篇博客来描述,第一篇着重描述思想,第二篇具体论述实现。   1、语法分析器要做什么 在编写任何一个东西的的时候,都要先弄明白这个玩意儿...
  • ROger__wonG
  • ROger__wonG
  • 2013年04月29日 22:45
  • 8181

用DIV做文本编辑器

今天的主角是我们大家都非常熟知的元素div,它可以说是前端布局里的核心标签了。 在几年前DIV+CSS是前端工作者所必须掌握的核心能力。但是,今天的这个属性并不是热门属性, contenteditab...
  • wurichengn
  • wurichengn
  • 2016年06月29日 16:42
  • 3053

自制纯js简易编辑器

  • 2008年11月13日 09:47
  • 157KB
  • 下载

浅谈工业级物联网项目架构设计及实施

摘要:互联网+和物联网由于发展的侧重点不同,在做架构设计上肯定有所不同。而以中小项目为主的物联网项目,其实更看重的,一是系统稳定可靠,能保证系统长期稳定的运行。本文主要介绍工业级物联网项目的架构设计及...
  • whywhom
  • whywhom
  • 2015年11月02日 16:58
  • 2201

用字符串做一个文本编译器

#include #define LINE 50      定义行 #define MAX  100       定义列 int main() {     char arr[LINE...
  • shui_yu_zheng_feng
  • shui_yu_zheng_feng
  • 2016年04月24日 17:58
  • 55

unity的自己制作自己编辑器的教程以及制定框架的讲解(序)

自己终于有段空闲的时间来写些东西了,以前就是整天在公司做项目,各种技术点,...
  • u011866450
  • u011866450
  • 2014年06月10日 20:53
  • 1132

流程设计器开发二(编辑器部分)

 为了实现流程编辑器,光有我们建立的模型,控制器和视图还不够,我们还必须新建一个编辑器类,为此,我们要新建一个插件项目,我们新建的插件项目com.example.workflow结构如下:为了实现一个...
  • jacky9881
  • jacky9881
  • 2007年03月15日 10:01
  • 4480
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅谈如何做一个编译器?
举报原因:
原因补充:

(最多只允许输入30个字)