⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mathparser.h

📁 这是一个编译器的程序代码
💻 H
字号:
#ifndef __MATHPARSER_H__
#define __MATHPARSER_H__
//#include "psms.h"

#define  ParserStackSize  100
#define  MaxFuncNameLen  5
#define  ExpLimit  11356
#define  SQRLIMIT  1E246
#define  MaxExpLen  4
#define  TotalErrors  7
#define  ErrParserStack  1
#define  ErrBadRange  2
#define  ErrExpression  3
#define  ErrOperator  4
#define  ErrOpenParen  5
#define  ErrOpCloseParen  6
#define  ErrInvalidNum  7

//type  ErrorRange = 0..TotalErrors;

typedef enum 
{
	PLUS, MINUS, TIMES, DIVIDE, EXPO, OPAREN, CPAREN, NUM,
	FUNC, EOL, BAD, ERR, MODU
}TokenTypes;

typedef double Extended;

typedef struct
{
	  BYTE State;
	  Extended Value;
	  CString FuncName;//[MaxFuncNameLen];
}TokenRec;

typedef struct{
	Extended Value;	
	char VarName[30];
}VARSTRU;

class  CMathParser
{
 public:
	CMathParser(CString s);
	~CMathParser();
	void AddVar(Extended Value, CString  VarName);

  
  protected:
	  CString  FInput;
	  TokenRec  CurrToken;
      BOOL MathError;
      TokenRec Stack[ParserStackSize];
      int StackTop;// : 0..ParserStackSize;
      int TokenError;// : ErrorRange;
      WORD TokenLen;// : Word;
      TokenTypes TokenType;
	  CPtrList m_VarList;

      WORD GotoState(WORD Production);
      BOOL IsFunc(CString S);
      BOOL IsVar(Extended &Value);

	  TokenTypes NextToken();
      void Push(TokenRec Token);
      void Pop(TokenRec &Token);
      void Reduce(WORD Reduction);
      void Shift(WORD State);
	  int Round(double value);
	
	  BOOL GetVar(CString VarName, Extended &Value);

  public://    { Public declarations }
      WORD Position;
      BOOL ParseError;
      Extended ParseValue;
      void  Parse();
  
};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -