求教!字符表达式的递归分析法实现算法??

yougu110 2003-08-22 02:25:12

正在做一个项目,项目中遇到了需要识别用户输入的表达式的问题。那位仁兄有关于这方面的资料或代码?

谢谢!
...全文
109 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sncel 2003-08-27
  • 打赏
  • 举报
回复
晕,我有完整的C表达式解析公式代码,我已应用在Palm 程序中了,找我要就行了呀。
影子传说 2003-08-26
  • 打赏
  • 举报
回复
学习
yougu110 2003-08-26
  • 打赏
  • 举报
回复

to All

为帮助有同样需求的朋友,特将安装和使用过程总结如下:

1、安装ActiveX控件。在BCB中“Component|import ActiveX Control|Add”选择C:\winnt\system32\msscript.ocx。接着“Install...”弹出“Install Component”,选“into new package”,指定存放的路径,建议放在安装目录下的ocx目录里。然后按照提示一路确定完成安装,关闭当前项目。

2、使用TScriptControl。新建一个项目,在ActiveX面板,找到刚添加的TscriptControl拖入。

测试代码如下:

wchar_t *exp ;
int lenght;

lenght = Edit1->Text.Length();
exp = new wchar_t[lenght+1];

exp = Edit1->Text.WideChar(exp, lenght);
ScriptControl1->Language = "JavaScript";
TVariant result = ScriptControl1->Eval(exp);

Edit2->Text = (AnsiString)result;
yougu110 2003-08-26
  • 打赏
  • 举报
回复

to BCB(天下三分明月夜,二分无赖是扬州)

万分感谢老兄的帮助,按照你的指点我已经测试成功,且已用在我的项目里。工作的很好!
再次感谢!
BCB 2003-08-25
  • 打赏
  • 举报
回复
WideString exp="2*3+5";

ScriptControl1->Language="JavaScript";
TVariant result=ScriptControl1->Eval(exp.c_bstr());
ShowMessage((String)result);


BCB 2003-08-25
  • 打赏
  • 举报
回复
调用方法有点问题
yougu110 2003-08-25
  • 打赏
  • 举报
回复


msscript.ocx安装在BCB中后,使用如下:

TScriptControl *ScriptControl1 = new TScriptControl(this);

AnsiString result = (AnsiString )(ScriptControl1->Eval(WideString("2+3")));

ShowMessage(result);

编译成功
运行时出错
报错:“this->Eval(Expression,(VARIANT *)&pvarResult);未指定错误……”
yougu110 2003-08-23
  • 打赏
  • 举报
回复

各位大哥,帮帮忙吧!

要分再给!!
guanshangming 2003-08-22
  • 打赏
  • 举报
回复
如果你做了这个,记得给我一份,也可以给你参考一下
guanshangming 2003-08-22
  • 打赏
  • 举报
回复
通常这类问题用递归算法,
第一步、定义一个缓冲区、和符号对应的函数,如字符'+'对应哪个函数等,
如 
double FuncAdd(double Op1,double Op2)
{
return Op1 + Op2;
}
建立一个结构
typedef Struct
{
char sign;
double (*Func)(double Oper1,double Oper2);
}MyOper;
定义结构数组,对应上面的函数;
MyOper Funcs[20];
Funs[0].sign = '+'
Funs[0].Func = FuncAdd;

第二步、字符串的整理,如去除空格等。
第三步、写一个递归调用的函数,遇到'('就入栈再递归等分析语法,直至最内一层返回结果
如操作符与Funs[x].sign 相同,例如'+',就调用Funs[0].Func返回结果

思路大概如此,如果有现成的,那就最好不过了
yougu110 2003-08-22
  • 打赏
  • 举报
回复

在线等,急!!!

跪谢!
yougu110 2003-08-22
  • 打赏
  • 举报
回复

在线等,急!!!

跪谢!
yougu110 2003-08-22
  • 打赏
  • 举报
回复
to yesry(噎死你)

偶穷人一个,这个项目偶只是帮忙。但很有兴趣!!


to ljlln(阿明)

正要求教如何解析。特别是括号,运算符的优先级。再求教!


to BCB(天下三分明月夜,二分无赖是扬州)

能指出名字么,感谢之至!!



BCB 2003-08-22
  • 打赏
  • 举报
回复
最好找现成的,win2000上就有一个.ocx,可拿来用
ljlln 2003-08-22
  • 打赏
  • 举报
回复
是用户自定义公式吧!你你就解析就是了!
yesry 2003-08-22
  • 打赏
  • 举报
回复
你准备花多少钱?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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