详情请见我的blog
http://codefan.spaces.live.com/?_c11_blogpart_blogpart=blogview&_c=blogpart&partqs=cat%3d%25e7%25bc%2596%25e8%25af%2591%25e5%258e%259f%25e7%2590%2586

我的编译程序实现的内容。
四则运算和赋值语句;
if、switch、for、while语句;
内置函数可以用 list s来查看,函数后括号中的数字是其参数个数,如果是-1说明其参数过数没有限制;
单行注释 // 多行注释/* ……*/。
在我的编译程序中没有实现的,有些是稍微花点时间就可以实现的,比如自定义函数等等。
代码的优化
自定义结构,现在的数据类型只有四种bool,float,string,array float
自定义函数定义与调用,因为系统中已经对代码分层次来组织,所以实现这个功能很容易。现在代码中有一个主模块main,可以用list m查看到,并可以用 set 命令来改变其中的变量表。每一个编译的模块度是这个模块的子模块可以直接调用main木块中的变量但不能改变其值。可以用put命令来保存当前模块并给它命名,以便可以用get来调用。
使用介绍
工程代码(http://www.stocksun.com:100/Source/compile_source.rar)
一个使用案例:
E:\>cd E:\Centit\Controls\GeneralDLL

E:\Centit\Controls\GeneralDLL>CalcEx.exe
Like C++ Compile : Release 1.0.0.1 - Production on 2007-03-01
Copyright (c) 2002, 2007, 杨淮生.  All rights reserved.
Author MSN:codefan@hotmail.com
CMP>help
#       help    run     set     list
put     get     load    save
CMP>help list
list    ( m[odule] | f[ormula] | v[ariable] | e[rror]
        | r[eserved_key] | s[ystem_function] | sou[rce])
CMP>list
vsersion:       1.00a
company:        centit
author:         杨淮生
e-mail:         codefan@hotmail.com
CMP>int a=5;
..1>if(a>3)
..2>   a=6;
..3>switch(a){
..4>   case 3:
..5>      b=3;
..6>      break;
..7>   default:
..8>      b =5;
..9>      break;
.10>   case 2:
.11>      b=6;
.12>}
.13>for(i=0;i<a;i++)
.14> {
.15>    c=b+a;
.16>    b = c;
.17>}
.18>printmsg("OK!");
.19>return a+b+c;
.20>
.21>
There is 0 error(s)!
CMP>run
OK!

The Result:88.000000
CMP>save C:\a.txt
Source code be saved.
CMP>#2+3
5
CMP>quit

E:\Centit\Controls\GeneralDLL>CalcEx.exe /?
/?              help
/f <file path>  Compile file and run the code
/v              version and infomation
<formula>       Calculate the formule
E:\Centit\Controls\GeneralDLL>CalcEx.exe /f c:\a.txt
OK!

The Result:88.000000
我的BLOG中的关于编译原理的其它文档:
递归过程、循环过程
条件表达式与关系运算的优化--编程心得
Python语言设计上的革新或者新颖的部分
Switch语句的分析
C++、Pascal =(赋值),for,case语句,函数,变量空间的区别
四元式优化