Initial revision
This commit is contained in:
105
source/gameengine/Expressions/InputParser.h
Normal file
105
source/gameengine/Expressions/InputParser.h
Normal file
@@ -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
|
Reference in New Issue
Block a user