summaryrefslogtreecommitdiff
path: root/src/pim/Token.h
blob: 95d3f083b1988c75eeed3a83773bd414ec16876c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#pragma once

#include <string>
namespace pim
{
	namespace compiler
	{
		class Token
		{
		public:
			static std::string SymbolNames[];

			enum
			{
				AssignSymbol = 0,
				FunctionSymbol,

				LeftBracket,
				RightBracket,
				DivideSymbol,
				MultiplySymbol,
				PlusSymbol,
				MinusSymbol,
				ModuloSymbol,

				IntegerConstant,
				DecimalConstant,
				ParticleConstant,

				IntegerSymbol,
				DecimalSymbol,
				ParticleSymbol,

				IsSymbol,
				LessSymbol,
				LessEqualSymbol,
				GreaterSymbol,
				GreaterEqualSymbol,
				NotEqualSymbol,
				EqualSymbol,

				NeighbourSymbol,
				DoSymbol,
				OfSymbol,
				BreakSymbol,
				ContinueSymbol,
				IfSymbol,
				ElseSymbol,
				ElseIfSymbol,
				ThenSymbol,
				EndSymbol,

				KillSymbol,
				CreateSymbol,
				TransformSymbol,
				GetSymbol,

				RTMacro,
				Identifier,

				CommaSymbol,
				DotSymbol,

				InvalidSymbol,

				SymbolNumber
			};
			int Symbol;
			int LineNumber;
			std::string Source;

			Token(int symbol = InvalidSymbol, std::string source = "HERP DERP", int lineNumber = 0) :
				Symbol(symbol),
				Source(source),
				LineNumber(lineNumber) {}

			std::string GetName()
			{
				return SymbolNames[Symbol];
			}
		};
	}
}