src/Parser.h

changeset 92
3a00d396bce2
parent 91
427eb377d53e
child 97
49e38433b9fd
--- a/src/Parser.h	Mon Feb 03 20:12:44 2014 +0200
+++ b/src/Parser.h	Tue Feb 04 02:28:33 2014 +0200
@@ -57,50 +57,6 @@
 };
 
 // ============================================================================
-// Operators
-//
-enum EOperator
-{
-	OPER_ADD,
-	OPER_SUBTRACT,
-	OPER_MULTIPLY,
-	OPER_DIVIDE,
-	OPER_MODULUS,
-	OPER_ASSIGN,
-	OPER_ASSIGNADD,
-	OPER_ASSIGNSUB,
-	OPER_ASSIGNMUL,
-	OPER_ASSIGNDIV,
-	OPER_ASSIGNMOD, // -- 10
-	OPER_EQUALS,
-	OPER_NOTEQUALS,
-	OPER_LESSTHAN,
-	OPER_GREATERTHAN,
-	OPER_LESSTHANEQUALS,
-	OPER_GREATERTHANEQUALS,
-	OPER_LEFTSHIFT,
-	OPER_RIGHTSHIFT,
-	OPER_ASSIGNLEFTSHIFT,
-	OPER_ASSIGNRIGHTSHIFT, // -- 20
-	OPER_OR,
-	OPER_AND,
-	OPER_BITWISEOR,
-	OPER_BITWISEAND,
-	OPER_BITWISEEOR,
-	OPER_TERNARY,
-	OPER_STRLEN,
-};
-
-// ============================================================================
-//
-struct operatorInfo
-{
-	EOperator		opercode;
-	EDataHeader		dataheader;
-	EToken			token;
-};
-
-// ============================================================================
 // Mark types
 //
 enum eMarkType
@@ -124,6 +80,16 @@
 	eElseScope,
 };
 
+enum EAssignmentOperator
+{
+	EAssign,
+	EAssignAdd,
+	EAssignSub,
+	EAssignMul,
+	EAssignDiv,
+	EAssignMod,
+};
+
 // ============================================================================
 // Meta-data about scopes
 //
@@ -171,21 +137,21 @@
 		// METHODS
 		BotscriptParser();
 		~BotscriptParser();
-		ConstantInfo*	FindConstant (const String& tok);
-		void			ParseBotscript (String fileName);
-		DataBuffer*		ParseCommand (CommandInfo* comm);
-		DataBuffer*		ParseAssignment (ScriptVariable* var);
-		int				ParseOperator (bool peek = false);
-		String			ParseFloat();
-		void			PushScope();
-		DataBuffer*		ParseStatement();
-		void			AddSwitchCase (DataBuffer* b);
-		void			CheckToplevel();
-		void			CheckNotToplevel();
-		bool			TokenIs (EToken a);
-		String			GetTokenString();
-		String			DescribePosition() const;
-		void			WriteToFile (String outfile);
+		ConstantInfo*			FindConstant (const String& tok);
+		void					ParseBotscript (String fileName);
+		DataBuffer*				ParseCommand (CommandInfo* comm);
+		DataBuffer*				ParseAssignment (ScriptVariable* var);
+		EAssignmentOperator		ParseAssignmentOperator ();
+		String					ParseFloat();
+		void					PushScope();
+		DataBuffer*				ParseStatement();
+		void					AddSwitchCase (DataBuffer* b);
+		void					CheckToplevel();
+		void					CheckNotToplevel();
+		bool					TokenIs (EToken a);
+		String					GetTokenString();
+		String					DescribePosition() const;
+		void					WriteToFile (String outfile);
 
 		inline int GetNumEvents() const
 		{
@@ -258,7 +224,8 @@
 		void			ParseFuncdef();
 		void			writeMemberBuffers();
 		void			WriteStringTable();
-		void ParseExpression (EType reqtype);
+		DataBuffer*		ParseExpression (EType reqtype, bool fromhere = false);
+		EDataHeader		GetAssigmentDataHeader (EAssignmentOperator op, ScriptVariable* var);
 };
 
 #endif // BOTC_PARSER_H

mercurial