mirror of https://github.com/bsnes-emu/bsnes.git
38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
#pragma once
|
|
|
|
namespace nall { namespace Eval {
|
|
|
|
struct Node {
|
|
enum class Type : uint {
|
|
Null,
|
|
Literal,
|
|
Function, Subscript, Member, SuffixIncrement, SuffixDecrement,
|
|
Reference, Dereference, LogicalNot, BitwiseNot, Positive, Negative, PrefixIncrement, PrefixDecrement,
|
|
Multiply, Divide, Modulo,
|
|
Add, Subtract,
|
|
RotateLeft, RotateRight, ShiftLeft, ShiftRight,
|
|
BitwiseAnd, BitwiseOr, BitwiseXor,
|
|
Concatenate,
|
|
Equal, NotEqual, LessThanEqual, GreaterThanEqual, LessThan, GreaterThan,
|
|
LogicalAnd, LogicalOr,
|
|
Coalesce, Condition,
|
|
Assign, Create, //all assignment operators have the same precedence
|
|
AssignMultiply, AssignDivide, AssignModulo,
|
|
AssignAdd, AssignSubtract,
|
|
AssignRotateLeft, AssignRotateRight, AssignShiftLeft, AssignShiftRight,
|
|
AssignBitwiseAnd, AssignBitwiseOr, AssignBitwiseXor,
|
|
AssignConcatenate,
|
|
Separator,
|
|
};
|
|
|
|
Type type;
|
|
string literal;
|
|
vector<Node*> link;
|
|
|
|
Node() : type(Type::Null) {}
|
|
Node(Type type) : type(type) {}
|
|
~Node() { for(auto& node : link) delete node; }
|
|
};
|
|
|
|
}}
|