• 大小: 45KB
    文件类型: .7z
    金币: 2
    下载: 1 次
    发布日期: 2021-05-24
  • 语言: Html/CSS
  • 标签: expr  parser  

资源简介

http://topic.csdn.net/u/20090602/17/f9e42b12-5923-42b6-898f-402ab4901a74.html 类型 double , 支持 常用数学函数如 sqrt , sin , cos , 用户自定义函数,等

资源截图

代码片段和文件信息

/*************************************************************************/
/*
 * Copyright (c) 2006 The libAppExprParser Project.  All rights reserved.
 *
 **************************************************************************
 *
 * FILE NAME    : /sxep/main.c
 *
 * CREATED      : 2009-06-04  15:54:46
 *
 * AUTHOR       : Liang.Li  liangl79@gmail.com
 *
 **************************************************************************/
#include 
#include 
#include “sxep.h“

static int  SXEP_test_host( SXEP_context* ctx  const char* fname  int argc  double argv[]  double* result )
{
/*  
 * max ( a .... )
 * min ( a .... )
 * rand()
 */
int i;
double r;
if( 0 == strcmp( fname  “max“ ) )
{
if( 0 == argc )
return 1;
r = argv[0];
for( i = 1; i < argc; ++i )
{
if( argv[i] > r )
r = argv[i];
}
*result = r;
return 0;
}
else if( 0 == strcmp( fname  “min“ ) )
{
if( 0 == argc )
return 1;
r = argv[0];
for( i = 1; i < argc; ++i )
{
if( argv[i] < r )
r = argv[i];
}
*result = r;
return 0;
}
else if( 0 == strcmp( fname  “rand“ ) )
{
if( 0 != argc )
return 1;
*result = rand() * 1. / RAND_MAX;
return 0;
}
SXEP_ERROR_FNAME( “UNKNOWN user function call“  ctx );
return 1;
}

int main( int argc  char* argv[] )
{
int   flagf = 0;
SXEP_context ctx;
char expr [1024+1] = ““  *p  expr_cp[1024+1];

ctx.ROUTINE_user_function = SXEP_test_host;

if( argc == 2 )
{
flagf = 1;
freopen( argv[1]  “r“  stdin );
}

while( 1 )
{
if( ! flagf )
{
printf( “expr>“ );
fflush( stdout  );
}

if( NULL == fgets( expr  1024  stdin ) )
break;
for( p = expr; *p ; ++p )
{
if( *p == ‘\n‘ ) { *p = 0; break; }
}
strcpy( expr_cp  expr );
ctx.curr_input = ctx.expr = expr_cp;
if( 0 == SXEP_GRAMMER_FNAME( &ctx ) )
printf( “%s : %lg\n“  expr  ctx.result );
else
fprintf( stderr  “parser >>: %s :<< error\n“  expr );
}
return 0;
}



评论

共有 条评论