src/tokens.h

changeset 119
bdf8d46c145f
child 133
dbbdb870c835
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tokens.h	Sun Mar 30 21:51:23 2014 +0300
@@ -0,0 +1,131 @@
+/*
+	Copyright 2012-2014 Santeri Piippo
+	All rights reserved.
+
+	Redistribution and use in source and binary forms, with or without
+	modification, are permitted provided that the following conditions
+	are met:
+
+	1. Redistributions of source code must retain the above copyright
+	   notice, this list of conditions and the following disclaimer.
+	2. Redistributions in binary form must reproduce the above copyright
+	   notice, this list of conditions and the following disclaimer in the
+	   documentation and/or other materials provided with the distribution.
+	3. The name of the author may not be used to endorse or promote products
+	   derived from this software without specific prior written permission.
+
+	THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+	IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+	OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+	IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+	INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+	NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+	DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+	THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+	(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+	THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef TOKENS_H
+#define TOKENS_H
+
+#include <climits>
+#include "macros.h"
+
+// =======================================================
+named_enum ETokenType
+{
+	// Non-word tokens
+	TK_LeftShiftAssign,
+	TK_RightShiftAssign,
+	TK_Equals,
+	TK_NotEquals,
+	TK_AddAssign,
+	TK_SubAssign,
+	TK_MultiplyAssign,
+	TK_DivideAssign,
+	TK_ModulusAssign,
+	TK_LeftShift,
+	TK_RightShift,
+	TK_AtLeast,
+	TK_AtMost,
+	TK_DoubleAmperstand,
+	TK_DoubleBar,
+	TK_DoublePlus,
+	TK_DoubleMinus,
+	TK_SingleQuote,
+	TK_DollarSign,
+	TK_ParenStart,
+	TK_ParenEnd,
+	TK_BracketStart,
+	TK_BracketEnd,
+	TK_BraceStart,
+	TK_BraceEnd,
+	TK_Assign,
+	TK_Plus,
+	TK_Minus,
+	TK_Multiply,
+	TK_Divide,
+	TK_Modulus,
+	TK_Comma,
+	TK_Lesser,
+	TK_Greater,
+	TK_Dot,
+	TK_Colon,
+	TK_Semicolon,
+	TK_Hash,
+	TK_ExclamationMark,
+	TK_Amperstand,
+	TK_Bar,
+	TK_Caret,
+	TK_QuestionMark,
+	TK_Arrow,
+
+	// --------------
+	// Named tokens
+	TK_Bool,
+	TK_Break,
+	TK_Case,
+	TK_Continue,
+	TK_Const,
+	TK_Constexpr,
+	TK_Default,
+	TK_Do,
+	TK_Else,
+	TK_Event,
+	TK_Eventdef,
+	TK_For,
+	TK_Funcdef,
+	TK_If,
+	TK_Int,
+	TK_Mainloop,
+	TK_Onenter,
+	TK_Onexit,
+	TK_State,
+	TK_Switch,
+	TK_Str,
+	TK_Using,
+	TK_Var,
+	TK_Void,
+	TK_While,
+	TK_True,
+	TK_False,
+
+	// These ones aren't implemented yet but I plan to do so, thus they are
+	// reserved. Also serves as a to-do list of sorts for me. >:F
+	TK_Enum,
+	TK_Func,
+	TK_Return,
+
+	// --------------
+	// Generic tokens
+	TK_Symbol,
+	TK_Number,
+	TK_String,
+	TK_Any,
+};
+
+static const int gFirstNamedToken		= TK_Bool;
+static const int gLastNamedToken		= (int) TK_Symbol - 1;
+
+#endif

mercurial