小弟想做一个简单的脚本解释的东东,各位大侠给点思路,up有分!!!

CHENGXB 2002-12-27 10:45:48
我的脚本的形式是这样的:
if 条件表达式 then
结果表达式
else
结果表达式;

说明:
1、if then else 的使用可以嵌套,类似一般编程语言的if 语句的规则,结尾用分号标识‘;’。
2、条件表达式中可以有AND ,OR ,NOT 等逻辑运算符
3、结果表达式为一个单行的四则运算表达式。
4、脚本中可以有多个这样的if then 语句。
我基本上可以解决条件表达式和结果表达式的处理,但对if then else 的处理还没有好的办法,各位高手指点小弟一二,最后有示例代码,^_^!!!
...全文
35 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
CHENGXB 2002-12-27
  • 打赏
  • 举报
回复
谢谢楼上,有没有代码可以借鉴一下的!
coffeebike 2002-12-27
  • 打赏
  • 举报
回复
最经典的办法是自己做一个解释器,先词法分析,再语法分析,最后语义分析,有经典的算法,看看编译原理就可以知道了:)
CHENGXB 2002-12-27
  • 打赏
  • 举报
回复
谢谢楼上各位!!!

我在这找到了一个可以执行DELPHI代码的控件,有源代码。
http://www.tommstudio.com/newclub30/d_download.asp

我准备就用它了,它可以处理各种语句,使用delphi的函数,功能很强大,值得好好研究一下。




zhengzewei 2002-12-27
  • 打赏
  • 举报
回复
把四则表达式运算处理放在statement_function里
写出语法产生式,一样写递归分析函数

E->T|E+T|E-T
T->F|T*F|T/F
F->(E)|i

Express_function()
{
switch( Sym):
{case (是T的开始符): Term_function(); break;
case (是E的开始符):
Express_function();
if(Sym=='+') { ……}
else(Sym==‘-’){…… }
break;
}
getSym();
}

Term_funciton()
{
类似处理^_^
}
…………
zhengzewei 2002-12-27
  • 打赏
  • 举报
回复
递归下降分析很简单:)
void if_function()
{
if(Sym == ifSYM)
{
getSym();
condition_function(); //条件表达式处理
if(Sym==thenSYM)
{ getSym();
statement_funtion(); //结果表达式处理
if(Sym==elseSYM)
statement_function();
}
else Error();
}
}

void statement_function()
{
…………
…………
getSym();
if(Sym==ifSYM)
if_function(); //递归调用,可以处理箝套
…………
…………
}
Sym 表示当前分析的符号
getSym() 取下一个符号
醉马不肖 2002-12-27
  • 打赏
  • 举报
回复
coffeebike(咖啡色BIKE) ( ) 信誉:100 2002-12-27 11:15:00 得分:0


最经典的办法是自己做一个解释器,先词法分析,再语法分析,最后语义分析,有经典的算法,看看编译原理就可以知道了:)



同意
zzwu 2002-12-27
  • 打赏
  • 举报
回复
单个if else 应是容易处理的, 箝套(加括号或不加括号)的 if else 有些复杂, 要弄清楚每个else所配的是哪一个if.
coffeebike 2002-12-27
  • 打赏
  • 举报
回复
或者你写个宏吧,也许更快!!

我的代码在家里,现在在公司里,不在身边,没办法,要不然可以发给你看看哦:)

要不,以后再联系?zzyfrank@hotmail.com
sliant 2002-12-27
  • 打赏
  • 举报
回复
yacc
lex
bison

你找台 linux / unix 机器 man yacc 看看
或者 http://www.gnu.org/software/bison/bison.html
我觉得这个对你比较合适
毕竟我只听说过有人要写语法分析程序
还没见到有人真正去写出来(例如我^_^)
CHENGXB 2002-12-27
  • 打赏
  • 举报
回复
自己up!

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧