diff options
Diffstat (limited to 'source/gameengine/Expressions/InputParser.h')
-rw-r--r-- | source/gameengine/Expressions/InputParser.h | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/source/gameengine/Expressions/InputParser.h b/source/gameengine/Expressions/InputParser.h new file mode 100644 index 00000000000..43832f9c350 --- /dev/null +++ b/source/gameengine/Expressions/InputParser.h @@ -0,0 +1,105 @@ +/* + * Parser.h: interface for the CParser class. + * Eindhoven University of Technology 1997 + * OOPS team (Serge vd Boom, Erwin Coumans, Tom Geelen, Wynke Stuylemeier) + * $Id$ + * Copyright (c) 1996-2000 Erwin Coumans <coockie@acm.org> + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Erwin Coumans makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + */ +#ifndef __INPUTPARSER_H__ +#define __INPUTPARSER_H__ + +class CParser; +#include "Expression.h" + + +class CParser +{ +public: + CParser(); + virtual ~CParser(); + + float GetFloat(STR_String txt); + CValue* GetValue(STR_String txt, bool bFallbackToText=false); + CExpression* ProcessText(STR_String intext); + void SetContext(CValue* context); + +private: + enum symbols { + errorsym, + lbracksym, + rbracksym, + cellsym, + commasym, + opsym, + constsym, + sumsym, + ifsym, + whocodedsym, + eolsym, + idsym + }; // all kinds of symbols + + enum optype { + OPplus, + OPminus, + OPtimes, + OPdivide, + OPand, + OPor, + OPequal, + OPunequal, + OPgreater, + OPless, + OPgreaterequal, + OPlessequal, + OPnot + }; // all kinds of operators + + enum consttype { + booltype, + inttype, + floattype, + stringtype + }; // all kinds of constants + + int sym, // current symbol + opkind, // kind of operator, if symbol is an operator + constkind; // kind of operator, if symbol is a constant + + char ch; // current character + int chcount; // index to character in input string + CExpression *errmsg; // contains a errormessage, if scanner error + + STR_String text, // contains a copy of the original text + const_as_string; // string representation of the symbol, if symbol is a constant + bool boolvalue; // value of the boolean, if symbol is a constant of type boolean + CValue* m_identifierContext;// context in which identifiers are looked up + + + void ScanError(STR_String str); + CExpression* Error(STR_String str); + void NextCh(); + void TermChar(char c); + void DigRep(); + void CharRep(); + void GrabString(int start); + void NextSym(); + int MakeInt(); + STR_String Symbol2Str(int s); + void Term(int s); + int Priority(int optor); + CExpression *Ex(int i); + CExpression *Expr(); + +}; + +#endif |