这是我自学编译原理时为练手所做的一个解释器.所以完全没做任何优化,执行大的循环时会非常慢.支持pascal大部分语法 包括 变量,常量,数组,函数,过程,递归,重载以及基本数据类型integer, real, char, string, boolean 和 基本运算不支持的 多维数组,构造类型,类,变参已知问题(留至下个版本修改):
运态执行的,一些语法问题会在执行到时才识别(例如类型是否匹配)
语法错误能正错检查出来,但有时候编译报的错误不能做到准确
无限递归调用一个函数时会堆栈溢出
下载地址
http://www.akunspy.com/pascal/pkpascal.rar

解决方案 »

  1.   

    to ehom
    数组定义和DELPHI一样的,例如
    var
      a: array [0..10] of Integer;
    做完了构建语法树的,解释执行时就是执行的语法树
      

  2.   

    原来是编译器给错了行号,是上一行的Cradinal不被识别导致的问题~~~测试通过了一个简单程序,不过大量的内建函数Inc,Dec,Length,SizeOf...没有,很多复杂程序测试不了其实这几个步骤完全是体力活,用Lex/Yacc来做就可以了。代码优化才是重点。
      

  3.   

    ehom说的对 :-)
    代码优化是下个版本要考虑的问题了,目前这个只是为了实现而实现
      

  4.   

    to ehom:贱神都说了知识学编译原理练手而已,你别要求太完美了:)景仰一下贱神,我当时学编译原理学的一塌糊涂的:(
      

  5.   

    呵呵,还不错哦参看一下IFPS3/RemObject Pascal Script,那个才是强大的http://lysoft.7u7.net
      

  6.   

    俺这阵子忙着辞职呢 hehe^^
      

  7.   

    太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太牛了怎么弄的
    你要是早出生几十年,比Bill Gates都牛了,Bill顶多编一个 BASIC