如何写一个简单的解释器(Interpreter)-1

本文将引导你逐步学习如何编写一个简单的解释器,从实现一个处理加法的Pascal语言解释器开始。通过这个过程,你将了解解释器的工作原理,学习词法分析和如何将输入转换为可执行的指令。文章涵盖了如何处理输入字符串,将其分解为tokens,并执行加法操作。
摘要由CSDN通过智能技术生成

 原创声明:这一个系列是翻译自https://ruslanspivak.com。插图是原文中自带的,同时我删除了一些没必要的解释。

如果你不知道compiler是怎么工作的,那么你就不会清楚计算机是怎么工作的。如果你不是100%确定地知道‘你知道compiler是怎么工作的’,那么你肯定不知道compiler是怎么工作的。 — Steve Yegge

别着急,试着跟我读完整个教程,最终你会学会怎么写interpreter和compiler的。并且你一定会变得自信,至少我希望如此。为什么要学习这些呢?我给三个理由你听听。

  1. 为了写成一个interpreter或者compiler,你必须学习相当多的技术和技巧,而且会综合运用。这些工作会让你更善于使用这些技术,变成一个更好的码农。同时,你得到的是如何开发好一个软件,而不仅仅是interpreter和compiler。
  2. 你会真切地想知道计算机内部是怎么工作的。通常人们都认为interpreter和compiler像是魔法,并且你一定不习惯那个魔法。你会想解开魔法的帘子,去弄明白帘子里面是什么,它们是怎么控制这一切的。
  3. 或者你希望创造一个你自己的编程语言或者领域语言。如果你想这么做,那你就要为这个语言创建一个interpreter或者compiler。干这个事儿最近很流行,很多新语言层出不穷,比如Elixir、Go、Rust,还有好多。

OK,那什么是interpreter和compiler呢?

Interpreter 或者 compiler 的目标是吧源程序翻译成某些高层语言的形式。听起来好像没有说,是吗?相信我,看完这些文章你会弄明白源程序到底被转化成了什么东西。

看到这里,你可能心生疑问:interpreter和compiler区别在哪儿?看下图吧。compiler是源程序转换成了机器语言,而interpreter不转换。

来,我们动手,写一个Pascal语言的interpreter。为了简单,我们选择用python来写。

下面是一个经典的阶乘运算的Pascal程序。

program factorial;

function factorial(n: integer): longint;
begin
    if n = 0 then
        factorial := 1
    else
        factorial := n * factorial(n - 1);
end;

var
    n: integer;

begin
    for n := 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值