• 大小: 20KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-26
  • 语言: C/C++
  • 标签: 执行  脚本解析  

资源简介

新版本 修正了上一版本的某些bug,减少了全局变量的使用, 并增加对变量引用的判断,以在格式化公式组时确定变量的引用情况,确定是否释放公式组中的变量,对内存中公式删除时不会再产生野指针 本组建主要用于在程序中解析预先编写的类C脚本,并依据脚本执行,可通过调用外部指针函数读入输入变量执行计算,最终得出计算结果写入输出变量中;用户可通过读取输出变量获取最终的结果。 脚本中可调用函数,函数分为系统函数和自定义函数两种;系统函数可直接调用;自定义函数需在脚本中自行定义

资源截图

代码片段和文件信息

#include 
#include “ext_code_struct.h“

/** if */
CVarStruct * CCodeStruct_IF::proc_code_stuct(bool& bReturnFlag) {
CParamList *pParamList = this->pCParamList;
CVarStruct *pVarStruct = pParamList->get_param()->deal_param();

if ((long) atof(pVarStruct->get_value())) {
pParamList->pNext->get_param()->deal_param();
} else {
CParamList *p = pParamList->pNext->pNext;
while (NULL != p) {
if (NULL != p->pNext) {/* 存在 else if 子句 */
CVarStruct *pVar = p->get_param()->deal_param();
if ((long) atof(pVar->get_value())) {
p->pNext->get_param()->deal_param();
break;
} else if (p->pNext->pNext) {
p = p->pNext->pNext;
}
} else {
p->get_param()->deal_param();
break;
}
}
}
return NULL;
}

/** while */
CVarStruct * CCodeStruct_WHILE::proc_code_stuct(bool& bReturnFlag) {
CParamList *pParamList = this->pCParamList;

while ((long) atof(pParamList->get_param()->deal_param()->get_value()) != 0) {
pParamList->pNext->get_param()->deal_param();
}
return NULL;
}

/** user_def_function */
CVarStruct * CCodeStruct_UFunc::proc_code_stuct(bool& bReturnFlag) {
*pResValue = *(pCUseFunc->process(this));
return this->pResValue;
}

/** 附值语句 */
CVarStruct * CCodeStruct_Asign::proc_code_stuct(bool& bReturnFlag) {
CVarStruct *pVarStruct = this->pCParamList->get_param()->deal_param();

this->pResValue->copy(*pVarStruct);

return this->pResValue;
}

/* 数值计算的codestruct类 */
CVarStruct * CCodeStruct_Cal::proc_code_stuct(bool& bReturnFlag) {
CVarStruct *pPara1 = pCParamList->get_param()->deal_param();
CVarStruct *pPara2 = pCParamList->pNext->get_param()->deal_param();
char *str1 *str2;
double f_num1 f_num2;

if (StringK == pPara1->get_var_kind())
str1 = pPara1->get_value();
else
f_num1 = atof(pPara1->get_value());
if (StringK == pPara2->get_var_kind())
str2 = pPara2->get_value();
else
f_num2 = atof(pPara2->get_value());
switch (this->op) {
case PLUS:
if ((StringK == pPara1->get_var_kind() && StringK == pPara2->get_var_kind())) {//字符串相加
if (NULL != pResValue->get_value())
delete pResValue->get_value();
char * sStr = new char[strlen(str1) + strlen(str2) + 1];
sprintf(sStr “%s%s“ str1 str2);
pResValue->set_value(sStr);
} else if ((StringK == pPara1->get_var_kind() && FloatK == pPara2->get_var_kind())) {
pResValue->set_value(str1 + (int) ceil(f_num2));
} else if ((StringK == pPara2->get_var_kind() && FloatK == pPara1->get_var_kind())) {
pResValue->set_value(str2 + (int) ceil(f_num1));
} else {
pResValue->set_value(f_num1 + f_num2);
}
break;
case MINUS:
pResValue->set_value(f_num1 - f_num2);
break;
case MULTIPLY:
pResValue->set_value(f_num1 * f_num2);
break;
case DIVIDE:
if (fabs(f_num2) < 0.000001)
exit(1);
else
pResValue->set_value(f_num1 / f_num2);
break;
}
return pResValue;
}


/* 比较计算的codestruct类 */

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        870  2008-12-17 17:47  formula c++\Debug\my.cfg

     文件        870  2008-12-17 17:47  formula c++\formula\Debug\my.cfg

     文件       5778  2008-12-24 14:25  formula c++\formula\ext_code_struct.cpp

     文件       2772  2008-10-23 12:13  formula c++\formula\ext_code_struct.h

     文件       2948  2008-12-22 15:37  formula c++\formula\factory_code_struct.h

     文件       3773  2008-12-24 14:27  formula c++\formula\formula.cpp

     文件       2806  2008-12-23 17:44  formula c++\formula\formula.h

     文件       1111  2008-12-24 14:26  formula c++\formula\formula_group.cpp

     文件        532  2008-12-24 14:25  formula c++\formula\formula_group.h

     文件       9794  2008-12-24 14:38  formula c++\formula\formula_public.h

     文件       1137  2008-12-23 10:44  formula c++\formula\main.cpp

     文件      21238  2008-12-23 17:47  formula c++\formula\parse.cpp

     文件       3182  2008-12-22 09:26  formula c++\formula\parse.h

     文件        272  2008-06-24 11:29  formula c++\formula\singleton.h

     文件       6490  2008-12-24 14:39  formula c++\formula\sys_func_code_struct.h

     文件       2884  2008-12-18 11:42  formula c++\formula\user_func.h

     文件       4184  2008-08-19 11:09  formula c++\formula\util.cpp

     文件        490  2008-08-19 11:09  formula c++\formula\util.h

     目录          0  2009-01-12 18:24  formula c++\formula\Debug

     目录          0  2009-01-12 18:24  formula c++\Debug

     目录          0  2009-01-12 18:24  formula c++\formula

     目录          0  2009-01-12 18:24  formula c++

----------- ---------  ---------- -----  ----

                71131                    22


评论

共有 条评论