1. 要编写解释器,首先就要明确什么是解释器(具体的解释请參看维基百科:http://zh.wikipedia.org/zh-cn/解释器)。盗用《编程高手箴言》里的话:解释程序就是一个字符串的解释器(P165 解释语言的原理)。所以,假设仅仅是为我个人编写的话,我宁可会借助 lex & yacc 甚至 perl,而不会纯粹用 C 语言来写。 2. 在...
在写CuteC文本编辑器的同时,为了使之有脚本执行能力。特意实现了一个简易的C语言解释器,所谓的解释器,就是它是解析执行脚本文件的,并不产生可执行的目标代码。它具备了C语言的几乎全部的语法。随着时间的推移,我打算把它作为一个独立的项目来开发了。在这个过程中,自己也学到了不少的知识,所以也打算跟大家分享。...
使用GNU Readline 库 GNU Readline 提供了命令行编辑和历史记录功能,在交互式解释器和命令行操作中被广泛应用。它可以让用户在终端中输入和编辑命令行,支持类似于 Emacs 的键绑定和补全功能,还可以保存和检索用户之前输入的命令历史记录。 安装GNU Readline 库: # linux yum install readline-devel -y # mac brew ...
6.C的库函数调用 C语言有它的库函数,如果我们的解释器要自己实现这些库函数的话,那么工作量就大大增加了,有什么办法直接调用系统的库函数呢。如果能做到这点,那么也就能解释器的使用者提供更加强大的交换方式---即使用者可以注册自己的函数,供脚本使用。想了很多方法,唯有用汇编了。具体的做法就是: 例如,脚本有...
实现交互式解释器 交互式解释器,这种系统也被叫做 REPL(Read-Evaluate-Print Loop,读取-求值-输出-循环),这种技术被广泛地应用在各种编程语言的解释器中,例如 Python 的 Shell。我们称这种模式为交互提示。 在编写一个完整的 REPL 之前,我们先实现一个简单的程序:读取用户的输入,在程序内部进行处理,然后返回一些信息...
符号表是一种用于语言翻译器(例如编译器和解释器)中的数据结构。在符号表中,程序源代码中的每个标识符都和它的声明或使用信息绑定在一起,比如其数据类型、作用域以及内存地址。 简单来说就是,我们在符号表中存储对应的变量的各种信息,在定义的时候对符号表进行插入,以便下次碰见它的时候可以知道这个变量的具体信息。
首先,请问题主想写的是“解析器”(parser)还是“解释器”(interpreter)?在编程语言实现的上下文里,...
《用 C 语言开发一门编程语言 — 交互式解释器l》 《用 C 语言开发一门编程语言 — 跨平台的可移植性》 编程语言的本质 在19 世纪 50 年代,语言学家 Noam Chomsky 定义了一系列关于语言的重要理论。这些理论支撑了我们今天对于语言结构的基本理解。其中重要的一条结论就是:自然语言都是建立在递归和重复的子结...
BrainFuck——C实现BrainFuck解释器 首先介绍一下吊炸天的语言——BrainFuck Brainfuck是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于fuck在英语中是脏话,这种语言有时被称为brainf*ck或brainf**k,甚至被简称为BF 这种语言基于一个简单的机器模型,除了指令,这个机器还包括:一个以字节为单位、被...
而解释器是一种计算机程序,它直接执行由编程语言或脚本语言编写的代码,它并不会把源代码预编译成机器码,而是一行一行地分析源代码并且直接执行,相对编译器而言可能效率较为低下,但实现也相对简单,并且容易在不同的机器上进行移植(比如x86和mips指令集的机器)。