网络上有很多种开源的C语言解释器,但都只能作为学习编译原理的入门级代码来使用,要么功能简单,语法不完善,要么是被阉割的,漏洞百出,基本都没有实用价值。
而这里介绍的是一款灵活的C语言解释器,功能很强大,已经应用于商业的动态脚本编译。
该C语言解释器本身采用标准C语言实现,可以在各种C平台下编译执行。主要特色如下:
1. 完美支持各种标准C语言语法,如if-else结构语句, ?:结构求值语句,for循环,while循环,do...while循环等。
2. 支持各种数据类型包括: char,short,int,string,float。
3. 支持多维数组及指针。
4. 支持自定义函数以及系统函数。
5. 支持局部变量以及全局变量,允许在变量定义时直接初始化。
6. 支持局部变量层次化作用域
7. 允许定义系统常量
8 支持系统内部定义数据类型,但不支持用户在脚本中自定义数据类型.
9 支持行注释符//及段注释符/*...*/
10. 支持通过include加载其它源文件。
11. 支持各种条件运算符 || &&
12. 支持各种逻辑运算及位操作符: + - * / % ! ~ ^ > < << >>,并按照C语言标准来规范运算优先级。
13. 支持单目运算!(not)及~(位取反)的嵌套。
14. 支持 += -= *= /= %= &= |= >>= <<= 的赋值形式。
15. 支持++,--操作,包括 i++ , i-- , ++i , --i
16. 支持16进制立即数,例如 支持代码 int a=0x13;
17. 增加字符串自动解析,
例如:
int cmux=5;
char testr[80]="hss_{$cmux}_ok"; //其中{$cmux}表示载入变量cmux值.
printf("%s\n",testr); //将打印出 hss_5_ok
18 支持动态长度的字符串数据类型string.
例如 string s="hello"; //表示定义一个字符串变量s,并增初值为hello,string类型变量的控件大小是自动的,不需要指定。
19. 支持的系统函数包括:
printf,sprintf
fopen, fclose, fprintf,fscanf
getch, putch
strcat,strcmp,stricmp
strcpy,strncpy
memcpy,memcmp
atoi, inttostr, strtoint
log2, pow
exit, etc.
需要支持其他系统库函数,可以自行对解释器源码进行简单的扩展定制。
为更好地提供服务,请联系作者,索取源代码授权。联系邮箱 ming@cmsoft.cn