Add sources
This commit is contained in:
11
CMakeLists.txt
Normal file
11
CMakeLists.txt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
cmake_minimum_required(VERSION 2.8)
|
||||||
|
|
||||||
|
project(SL++)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -std=c++11")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=return-type")
|
||||||
|
|
||||||
|
include_directories(include definitions)
|
||||||
|
|
||||||
|
add_subdirectory(src)
|
||||||
|
add_subdirectory(test)
|
||||||
34
definitions/keywords.def
Normal file
34
definitions/keywords.def
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
DEF("namespace", NAMESPACE)
|
||||||
|
DEF("struct", STRUCT)
|
||||||
|
DEF("class", CLASS)
|
||||||
|
DEF("union", UNION)
|
||||||
|
DEF("enum", ENUM)
|
||||||
|
|
||||||
|
DEF("break", BREAK)
|
||||||
|
DEF("continue", CONTINUE)
|
||||||
|
DEF("return", RETURN)
|
||||||
|
DEF("goto", GOTO)
|
||||||
|
|
||||||
|
DEF("if", IF)
|
||||||
|
DEF("else", ELSE)
|
||||||
|
DEF("switch", SWITCH)
|
||||||
|
|
||||||
|
DEF("for", FOR)
|
||||||
|
DEF("while", WHILE)
|
||||||
|
DEF("do", DO)
|
||||||
|
|
||||||
|
DEF("case", CASE)
|
||||||
|
DEF("default", DEFAULT)
|
||||||
|
|
||||||
|
DEF("try", TRY)
|
||||||
|
DEF("catch", CATCH)
|
||||||
|
|
||||||
|
DEF("template", TEMPLATE)
|
||||||
|
DEF("using", USING)
|
||||||
|
|
||||||
|
DEF("static_assert", STATIC_ASSERT)
|
||||||
|
|
||||||
|
DEF("typename", TYPENAME)
|
||||||
|
|
||||||
|
DEF("extern", EXTERN)
|
||||||
|
DEF("asm", ASM)
|
||||||
74
definitions/operator_precedence.def
Normal file
74
definitions/operator_precedence.def
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
/**
|
||||||
|
* http://en.cppreference.com/w/cpp/language/operator_precedence
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Prefix increment and decrement
|
||||||
|
UNARY(PLUS_PLUS, 3)
|
||||||
|
UNARY(MINUS_MINUS, 3)
|
||||||
|
|
||||||
|
// Unary plus and minus
|
||||||
|
UNARY(PLUS, 3)
|
||||||
|
UNARY(MINUS, 3)
|
||||||
|
|
||||||
|
// Logical NOT and bitwise NOT
|
||||||
|
UNARY(TILDE, 3)
|
||||||
|
UNARY(EXCLAMATION, 3)
|
||||||
|
|
||||||
|
// Multiplication, division, and remainder
|
||||||
|
BINARY(ASTERISK, 5)
|
||||||
|
BINARY(SLASH, 5)
|
||||||
|
BINARY(PERCENT, 5)
|
||||||
|
|
||||||
|
// Addition and subtraction
|
||||||
|
BINARY(PLUS, 6)
|
||||||
|
BINARY(MINUS, 6)
|
||||||
|
|
||||||
|
// Bitwise left shift and right shift
|
||||||
|
BINARY(LT_LT, 7)
|
||||||
|
BINARY(GT_GT, 7)
|
||||||
|
|
||||||
|
// For relational operators < and ≤ respectively
|
||||||
|
BINARY(LT, 8)
|
||||||
|
BINARY(LT_EQUAL, 8)
|
||||||
|
|
||||||
|
// For relational operators > and ≥ respectively
|
||||||
|
BINARY(GT, 8)
|
||||||
|
BINARY(GT_EQUAL, 8)
|
||||||
|
|
||||||
|
// For relational = and ≠ respectively
|
||||||
|
BINARY(EQUAL_EQUAL, 9)
|
||||||
|
BINARY(EXCLAMATION_EQUAL, 9)
|
||||||
|
|
||||||
|
// Bitwise AND
|
||||||
|
BINARY(AMPERSAND, 10)
|
||||||
|
|
||||||
|
// Bitwise XOR (exclusive or)
|
||||||
|
BINARY(CIRCUMFLEX, 11)
|
||||||
|
|
||||||
|
// Bitwise OR (inclusive or)
|
||||||
|
BINARY(PIPE, 12)
|
||||||
|
|
||||||
|
// Logical AND
|
||||||
|
BINARY(AMPERSAND_AMPERSAND, 13)
|
||||||
|
|
||||||
|
// Logical OR
|
||||||
|
BINARY(PIPE_PIPE, 14)
|
||||||
|
|
||||||
|
// Assignements
|
||||||
|
BINARY(EQUAL, 15)
|
||||||
|
BINARY(PLUS_EQUAL, 15)
|
||||||
|
BINARY(MINUS_EQUAL, 15)
|
||||||
|
BINARY(ASTERISK_EQUAL, 15)
|
||||||
|
BINARY(SLASH_EQUAL, 15)
|
||||||
|
BINARY(PERCENT_EQUAL, 15)
|
||||||
|
BINARY(LT_LT_EQUAL, 15)
|
||||||
|
BINARY(GT_GT_EQUAL, 15)
|
||||||
|
BINARY(AMPERSAND_EQUAL, 15)
|
||||||
|
BINARY(CIRCUMFLEX_EQUAL, 15)
|
||||||
|
BINARY(PIPE_EQUAL, 15)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* New operators
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ...
|
||||||
47
definitions/symbols.def
Normal file
47
definitions/symbols.def
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
// relation operators
|
||||||
|
DEF("==", EQUAL_EQUAL)
|
||||||
|
DEF("!=", EXCLAMATION_EQUAL)
|
||||||
|
DEF("<", LT)
|
||||||
|
DEF("<=", LT_EQUAL)
|
||||||
|
DEF(">", GT)
|
||||||
|
DEF(">=", GT_EQUAL)
|
||||||
|
|
||||||
|
// assignement operators
|
||||||
|
DEF("=", EQUAL)
|
||||||
|
DEF("+=", PLUS_EQUAL)
|
||||||
|
DEF("-=", MINUS_EQUAL)
|
||||||
|
DEF("*=", ASTERISK_EQUAL)
|
||||||
|
DEF("/=", SLASH_EQUAL)
|
||||||
|
DEF("%=", PERCENT_EQUAL)
|
||||||
|
DEF("<<=", LT_LT_EQUAL)
|
||||||
|
DEF(">>=", GT_GT_EQUAL)
|
||||||
|
DEF("&=", AMPERSAND_EQUAL)
|
||||||
|
DEF("^=", CIRCUMFLEX_EQUAL)
|
||||||
|
DEF("|=", PIPE_EQUAL)
|
||||||
|
|
||||||
|
// arithmetic operators
|
||||||
|
DEF("++", PLUS_PLUS)
|
||||||
|
DEF("--", MINUS_MINUS)
|
||||||
|
DEF("+", PLUS)
|
||||||
|
DEF("-", MINUS)
|
||||||
|
DEF("*", ASTERISK)
|
||||||
|
DEF("/", SLASH)
|
||||||
|
DEF("%", PERCENT)
|
||||||
|
|
||||||
|
// bitwise operators
|
||||||
|
DEF("~", TILDE)
|
||||||
|
DEF("&", AMPERSAND)
|
||||||
|
DEF("^", CIRCUMFLEX)
|
||||||
|
DEF("|", PIPE)
|
||||||
|
DEF("<<", LT_LT)
|
||||||
|
DEF(">>", GT_GT)
|
||||||
|
|
||||||
|
// logical operators
|
||||||
|
DEF("!", EXCLAMATION)
|
||||||
|
DEF("&&", AMPERSAND_AMPERSAND)
|
||||||
|
DEF("||", PIPE_PIPE)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
10
definitions/types.def
Normal file
10
definitions/types.def
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
DEF("char", CHAR)
|
||||||
|
DEF("uchar", UCHAR)
|
||||||
|
DEF("short", SHORT)
|
||||||
|
DEF("ushort", USHORT)
|
||||||
|
DEF("int", INT)
|
||||||
|
DEF("uint", UINT)
|
||||||
|
DEF("long", LONG)
|
||||||
|
DEF("ulong", ULONG)
|
||||||
|
DEF("float", FLOAT)
|
||||||
|
DEF("double", DOUBLE)
|
||||||
213
include/GLSL450Lib.h
Normal file
213
include/GLSL450Lib.h
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
/*
|
||||||
|
** Copyright (c) 2015 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
** of this software and/or associated documentation files (the "Materials"),
|
||||||
|
** to deal in the Materials without restriction, including without limitation
|
||||||
|
** the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
** and/or sell copies of the Materials, and to permit persons to whom the
|
||||||
|
** Materials are furnished to do so, subject to the following conditions:
|
||||||
|
**
|
||||||
|
** The above copyright notice and this permission notice shall be included in
|
||||||
|
** all copies or substantial portions of the Materials.
|
||||||
|
**
|
||||||
|
** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
||||||
|
** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
||||||
|
** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||||
|
**
|
||||||
|
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
|
||||||
|
** IN THE MATERIALS.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// Author: John Kessenich, LunarG
|
||||||
|
//
|
||||||
|
|
||||||
|
namespace GLSL_STD_450 {
|
||||||
|
|
||||||
|
enum Entrypoints {
|
||||||
|
Round = 0,
|
||||||
|
RoundEven = 1,
|
||||||
|
Trunc = 2,
|
||||||
|
Abs = 3,
|
||||||
|
Sign = 4,
|
||||||
|
Floor = 5,
|
||||||
|
Ceil = 6,
|
||||||
|
Fract = 7,
|
||||||
|
|
||||||
|
Radians = 8,
|
||||||
|
Degrees = 9,
|
||||||
|
Sin = 10,
|
||||||
|
Cos = 11,
|
||||||
|
Tan = 12,
|
||||||
|
Asin = 13,
|
||||||
|
Acos = 14,
|
||||||
|
Atan = 15,
|
||||||
|
Sinh = 16,
|
||||||
|
Cosh = 17,
|
||||||
|
Tanh = 18,
|
||||||
|
Asinh = 19,
|
||||||
|
Acosh = 20,
|
||||||
|
Atanh = 21,
|
||||||
|
Atan2 = 22,
|
||||||
|
|
||||||
|
Pow = 23,
|
||||||
|
Exp = 24,
|
||||||
|
Log = 25,
|
||||||
|
Exp2 = 26,
|
||||||
|
Log2 = 27,
|
||||||
|
Sqrt = 28,
|
||||||
|
InverseSqrt = 29,
|
||||||
|
|
||||||
|
Determinant = 30,
|
||||||
|
MatrixInverse = 31,
|
||||||
|
|
||||||
|
Modf = 32, // second argument needs the OpVariable = , not an OpLoad
|
||||||
|
Min = 33,
|
||||||
|
Max = 34,
|
||||||
|
Clamp = 35,
|
||||||
|
Mix = 36,
|
||||||
|
Step = 37,
|
||||||
|
SmoothStep = 38,
|
||||||
|
|
||||||
|
FloatBitsToInt = 39,
|
||||||
|
FloatBitsToUint = 40,
|
||||||
|
IntBitsToFloat = 41,
|
||||||
|
UintBitsToFloat = 42,
|
||||||
|
|
||||||
|
Fma = 43,
|
||||||
|
Frexp = 44,
|
||||||
|
Ldexp = 45,
|
||||||
|
|
||||||
|
PackSnorm4x8 = 46,
|
||||||
|
PackUnorm4x8 = 47,
|
||||||
|
PackSnorm2x16 = 48,
|
||||||
|
PackUnorm2x16 = 49,
|
||||||
|
PackHalf2x16 = 50,
|
||||||
|
PackDouble2x32 = 51,
|
||||||
|
UnpackSnorm2x16 = 52,
|
||||||
|
UnpackUnorm2x16 = 53,
|
||||||
|
UnpackHalf2x16 = 54,
|
||||||
|
UnpackSnorm4x8 = 55,
|
||||||
|
UnpackUnorm4x8 = 56,
|
||||||
|
UnpackDouble2x32 = 57,
|
||||||
|
|
||||||
|
Length = 58,
|
||||||
|
Distance = 59,
|
||||||
|
Cross = 60,
|
||||||
|
Normalize = 61,
|
||||||
|
Ftransform = 62,
|
||||||
|
FaceForward = 63,
|
||||||
|
Reflect = 64,
|
||||||
|
Refract = 65,
|
||||||
|
|
||||||
|
UaddCarry = 66,
|
||||||
|
UsubBorrow = 67,
|
||||||
|
UmulExtended = 68,
|
||||||
|
ImulExtended = 69,
|
||||||
|
BitfieldExtract = 70,
|
||||||
|
BitfieldInsert = 71,
|
||||||
|
BitfieldReverse = 72,
|
||||||
|
BitCount = 73,
|
||||||
|
FindLSB = 74,
|
||||||
|
FindMSB = 75,
|
||||||
|
|
||||||
|
InterpolateAtCentroid = 76,
|
||||||
|
InterpolateAtSample = 77,
|
||||||
|
InterpolateAtOffset = 78,
|
||||||
|
|
||||||
|
Count
|
||||||
|
};
|
||||||
|
|
||||||
|
inline void GetDebugNames(const char** names)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < Count; ++i)
|
||||||
|
names[i] = "Unknown";
|
||||||
|
|
||||||
|
names[Round] = "round";
|
||||||
|
names[RoundEven] = "roundEven";
|
||||||
|
names[Trunc] = "trunc";
|
||||||
|
names[Abs] = "abs";
|
||||||
|
names[Sign] = "sign";
|
||||||
|
names[Floor] = "floor";
|
||||||
|
names[Ceil] = "ceil";
|
||||||
|
names[Fract] = "fract";
|
||||||
|
names[Radians] = "radians";
|
||||||
|
names[Degrees] = "degrees";
|
||||||
|
names[Sin] = "sin";
|
||||||
|
names[Cos] = "cos";
|
||||||
|
names[Tan] = "tan";
|
||||||
|
names[Asin] = "asin";
|
||||||
|
names[Acos] = "acos";
|
||||||
|
names[Atan] = "atan";
|
||||||
|
names[Sinh] = "sinh";
|
||||||
|
names[Cosh] = "cosh";
|
||||||
|
names[Tanh] = "tanh";
|
||||||
|
names[Asinh] = "asinh";
|
||||||
|
names[Acosh] = "acosh";
|
||||||
|
names[Atanh] = "atanh";
|
||||||
|
names[Atan2] = "atan2";
|
||||||
|
names[Pow] = "pow";
|
||||||
|
names[Exp] = "exp";
|
||||||
|
names[Log] = "log";
|
||||||
|
names[Exp2] = "exp2";
|
||||||
|
names[Log2] = "log2";
|
||||||
|
names[Sqrt] = "sqrt";
|
||||||
|
names[InverseSqrt] = "inverseSqrt";
|
||||||
|
names[Determinant] = "determinant";
|
||||||
|
names[MatrixInverse] = "matrixInverse";
|
||||||
|
names[Modf] = "modf";
|
||||||
|
names[Min] = "min";
|
||||||
|
names[Max] = "max";
|
||||||
|
names[Clamp] = "clamp";
|
||||||
|
names[Mix] = "mix";
|
||||||
|
names[Step] = "step";
|
||||||
|
names[SmoothStep] = "smoothStep";
|
||||||
|
names[FloatBitsToInt] = "floatBitsToInt";
|
||||||
|
names[FloatBitsToUint] = "floatBitsToUint";
|
||||||
|
names[IntBitsToFloat] = "intBitsToFloat";
|
||||||
|
names[UintBitsToFloat] = "uintBitsToFloat";
|
||||||
|
names[Fma] = "fma";
|
||||||
|
names[Frexp] = "frexp";
|
||||||
|
names[Ldexp] = "ldexp";
|
||||||
|
names[PackSnorm4x8] = "packSnorm4x8";
|
||||||
|
names[PackUnorm4x8] = "packUnorm4x8";
|
||||||
|
names[PackSnorm2x16] = "packSnorm2x16";
|
||||||
|
names[PackUnorm2x16] = "packUnorm2x16";
|
||||||
|
names[PackHalf2x16] = "packHalf2x16";
|
||||||
|
names[PackDouble2x32] = "packDouble2x32";
|
||||||
|
names[UnpackSnorm2x16] = "unpackSnorm2x16";
|
||||||
|
names[UnpackUnorm2x16] = "unpackUnorm2x16";
|
||||||
|
names[UnpackHalf2x16] = "unpackHalf2x16";
|
||||||
|
names[UnpackSnorm4x8] = "unpackSnorm4x8";
|
||||||
|
names[UnpackUnorm4x8] = "unpackUnorm4x8";
|
||||||
|
names[UnpackDouble2x32] = "unpackDouble2x32";
|
||||||
|
names[Length] = "length";
|
||||||
|
names[Distance] = "distance";
|
||||||
|
names[Cross] = "cross";
|
||||||
|
names[Normalize] = "normalize";
|
||||||
|
names[Ftransform] = "ftransform";
|
||||||
|
names[FaceForward] = "faceForward";
|
||||||
|
names[Reflect] = "reflect";
|
||||||
|
names[Refract] = "refract";
|
||||||
|
names[UaddCarry] = "uaddCarry";
|
||||||
|
names[UsubBorrow] = "usubBorrow";
|
||||||
|
names[UmulExtended] = "umulExtended";
|
||||||
|
names[ImulExtended] = "imulExtended";
|
||||||
|
names[BitfieldExtract] = "bitfieldExtract";
|
||||||
|
names[BitfieldInsert] = "bitfieldInsert";
|
||||||
|
names[BitfieldReverse] = "bitfieldReverse";
|
||||||
|
names[BitCount] = "bitCount";
|
||||||
|
names[FindLSB] = "findLSB";
|
||||||
|
names[FindMSB] = "findMSB";
|
||||||
|
names[InterpolateAtCentroid] = "interpolateAtCentroid";
|
||||||
|
names[InterpolateAtSample] = "interpolateAtSample";
|
||||||
|
names[InterpolateAtOffset] = "interpolateAtOffset";
|
||||||
|
}
|
||||||
|
|
||||||
|
}; // end namespace GLSL_STD_450
|
||||||
1304
include/spirv.h
Normal file
1304
include/spirv.h
Normal file
File diff suppressed because it is too large
Load Diff
17
src/AST/Declaration.cpp
Normal file
17
src/AST/Declaration.cpp
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include "Declaration.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Declaration::Declaration
|
||||||
|
*/
|
||||||
|
AST::Declaration::Declaration(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Declaration::~Declaration
|
||||||
|
*/
|
||||||
|
AST::Declaration::~Declaration(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
40
src/AST/Declaration.h
Normal file
40
src/AST/Declaration.h
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Node.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Declaration : public Node
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
enum EDeclarationType
|
||||||
|
{
|
||||||
|
SIMPLE,
|
||||||
|
NAMESPACE,
|
||||||
|
STRUCTURE,
|
||||||
|
CLASS,
|
||||||
|
FUNCTION,
|
||||||
|
EMPTY, // created by empty-declaration
|
||||||
|
ATTRIBUTE, // created be attribute-declaration
|
||||||
|
ASM, // created by asm-definition
|
||||||
|
TEMPLATE, // created by template-declaration
|
||||||
|
EXPLICIT_INSTANTIATION, // created by explicit-instantiation
|
||||||
|
EXPLICIT_SPECIALIZATION, // created by explicit-specialization
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit Declaration (void);
|
||||||
|
virtual ~Declaration (void);
|
||||||
|
|
||||||
|
virtual ENodeType getNodeType (void) const { return(DECLARATION); }
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const = 0;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
// ...
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
18
src/AST/Declarations/AssemblerDefinition.cpp
Normal file
18
src/AST/Declarations/AssemblerDefinition.cpp
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#include "AssemblerDefinition.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::AssemblerDefinition::AssemblerDefinition
|
||||||
|
*/
|
||||||
|
AST::AssemblerDefinition::AssemblerDefinition(const char * instructions)
|
||||||
|
: m_strInstructions(instructions)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::AssemblerDefinition::~AssemblerDefinition
|
||||||
|
*/
|
||||||
|
AST::AssemblerDefinition::~AssemblerDefinition()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
26
src/AST/Declarations/AssemblerDefinition.h
Normal file
26
src/AST/Declarations/AssemblerDefinition.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Declaration.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class AssemblerDefinition : public Declaration
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit AssemblerDefinition (const char * instructions);
|
||||||
|
virtual ~AssemblerDefinition (void);
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const { return(ASM); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std::string m_strInstructions;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
17
src/AST/Declarations/AttributeDeclaration.cpp
Normal file
17
src/AST/Declarations/AttributeDeclaration.cpp
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include "AttributeDeclaration.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::AttributeDeclaration::AttributeDeclaration
|
||||||
|
*/
|
||||||
|
AST::AttributeDeclaration::AttributeDeclaration(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::AttributeDeclaration::~AttributeDeclaration
|
||||||
|
*/
|
||||||
|
AST::AttributeDeclaration::~AttributeDeclaration()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
26
src/AST/Declarations/AttributeDeclaration.h
Normal file
26
src/AST/Declarations/AttributeDeclaration.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Declaration.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class AttributeDeclaration : public Declaration
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit AttributeDeclaration (void);
|
||||||
|
virtual ~AttributeDeclaration (void);
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const { return(ATTRIBUTE); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
// ...
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
19
src/AST/Declarations/Class.cpp
Normal file
19
src/AST/Declarations/Class.cpp
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#include "Class.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Class::Class
|
||||||
|
* @param pName
|
||||||
|
*/
|
||||||
|
AST::Class::Class(const char * pName)
|
||||||
|
: m_strName(pName)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Class::~Class
|
||||||
|
*/
|
||||||
|
AST::Class::~Class()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
43
src/AST/Declarations/Class.h
Normal file
43
src/AST/Declarations/Class.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Declaration.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Class : public Declaration
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit Class (const char * pName);
|
||||||
|
virtual ~Class (void);
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const { return(CLASS); }
|
||||||
|
|
||||||
|
void addNode (const Node * pNode)
|
||||||
|
{
|
||||||
|
m_aNodes.push_back(pNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<const Node *> & getNodes (void) const
|
||||||
|
{
|
||||||
|
return(m_aNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string & getName(void) const
|
||||||
|
{
|
||||||
|
return(m_strName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std::string m_strName;
|
||||||
|
|
||||||
|
std::vector<const Node *> m_aNodes;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
17
src/AST/Declarations/EmptyDeclaration.cpp
Normal file
17
src/AST/Declarations/EmptyDeclaration.cpp
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include "EmptyDeclaration.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::EmptyDeclaration::EmptyDeclaration
|
||||||
|
*/
|
||||||
|
AST::EmptyDeclaration::EmptyDeclaration(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::EmptyDeclaration::~EmptyDeclaration
|
||||||
|
*/
|
||||||
|
AST::EmptyDeclaration::~EmptyDeclaration()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
26
src/AST/Declarations/EmptyDeclaration.h
Normal file
26
src/AST/Declarations/EmptyDeclaration.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Declaration.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class EmptyDeclaration : public Declaration
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit EmptyDeclaration (void);
|
||||||
|
virtual ~EmptyDeclaration (void);
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const { return(EMPTY); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
// ...
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
18
src/AST/Declarations/ExplicitInstantiation.cpp
Normal file
18
src/AST/Declarations/ExplicitInstantiation.cpp
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#include "ExplicitInstantiation.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::ExplicitInstantiation::ExplicitInstantiation
|
||||||
|
*/
|
||||||
|
AST::ExplicitInstantiation::ExplicitInstantiation(const Declaration * pDeclaration)
|
||||||
|
: m_pDeclaration(pDeclaration)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::ExplicitInstantiation::~ExplicitInstantiation
|
||||||
|
*/
|
||||||
|
AST::ExplicitInstantiation::~ExplicitInstantiation()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
26
src/AST/Declarations/ExplicitInstantiation.h
Normal file
26
src/AST/Declarations/ExplicitInstantiation.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Declaration.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class ExplicitInstantiation : public Declaration
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit ExplicitInstantiation (const Declaration * pDeclaration);
|
||||||
|
virtual ~ExplicitInstantiation (void);
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const { return(EXPLICIT_INSTANTIATION); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
const Declaration * m_pDeclaration;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
18
src/AST/Declarations/ExplicitSpecialization.cpp
Normal file
18
src/AST/Declarations/ExplicitSpecialization.cpp
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#include "ExplicitSpecialization.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::ExplicitSpecialization::ExplicitSpecialization
|
||||||
|
*/
|
||||||
|
AST::ExplicitSpecialization::ExplicitSpecialization(const Declaration * pDeclaration)
|
||||||
|
: m_pDeclaration(pDeclaration)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::ExplicitSpecialization::~ExplicitSpecialization
|
||||||
|
*/
|
||||||
|
AST::ExplicitSpecialization::~ExplicitSpecialization()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
26
src/AST/Declarations/ExplicitSpecialization.h
Normal file
26
src/AST/Declarations/ExplicitSpecialization.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Declaration.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class ExplicitSpecialization : public Declaration
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit ExplicitSpecialization (const Declaration * pDeclaration);
|
||||||
|
virtual ~ExplicitSpecialization (void);
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const { return(EXPLICIT_SPECIALIZATION); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
const Declaration * m_pDeclaration;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
22
src/AST/Declarations/FunctionDefinition.cpp
Normal file
22
src/AST/Declarations/FunctionDefinition.cpp
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#include "FunctionDefinition.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Function::Function
|
||||||
|
* @param pName
|
||||||
|
* @param pReturnType
|
||||||
|
*/
|
||||||
|
AST::FunctionDefinition::FunctionDefinition(const char * pName, const char * pReturnType, const std::vector<const AST::Declaration*> & params)
|
||||||
|
: m_strName(pName)
|
||||||
|
, m_strReturnType(pReturnType)
|
||||||
|
, m_aParameters(params)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Function::~Function
|
||||||
|
*/
|
||||||
|
AST::FunctionDefinition::~FunctionDefinition(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
54
src/AST/Declarations/FunctionDefinition.h
Normal file
54
src/AST/Declarations/FunctionDefinition.h
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Declaration.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class FunctionDefinition : public Declaration
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit FunctionDefinition (const char * pName, const char * pReturnType, const std::vector<const AST::Declaration*> & params);
|
||||||
|
virtual ~FunctionDefinition (void);
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const { return(FUNCTION); }
|
||||||
|
|
||||||
|
const std::string & getReturnType (void) const
|
||||||
|
{
|
||||||
|
return(m_strReturnType);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<const AST::Declaration*> & getParameters (void) const
|
||||||
|
{
|
||||||
|
return(m_aParameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
void addNode (const Node * pNode)
|
||||||
|
{
|
||||||
|
m_aNodes.push_back(pNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<const Node *> & getNodes (void) const
|
||||||
|
{
|
||||||
|
return(m_aNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string & getName(void) const
|
||||||
|
{
|
||||||
|
return(m_strName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std::string m_strName;
|
||||||
|
std::string m_strReturnType;
|
||||||
|
std::vector<const AST::Declaration*> m_aParameters;
|
||||||
|
std::vector<const Node *> m_aNodes;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Declarations/NamespaceDefinition.cpp
Normal file
20
src/AST/Declarations/NamespaceDefinition.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "NamespaceDefinition.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Namespace::Namespace
|
||||||
|
* @param pName
|
||||||
|
*/
|
||||||
|
AST::NamespaceDefinition::NamespaceDefinition(const char * pName, const std::vector<const Node *> & children)
|
||||||
|
: m_strName(pName)
|
||||||
|
, m_aNodes(children)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Namespace::~Namespace
|
||||||
|
*/
|
||||||
|
AST::NamespaceDefinition::~NamespaceDefinition()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
38
src/AST/Declarations/NamespaceDefinition.h
Normal file
38
src/AST/Declarations/NamespaceDefinition.h
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Declaration.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class NamespaceDefinition : public Declaration
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit NamespaceDefinition (const char * pName, const std::vector<const Node *> & children);
|
||||||
|
virtual ~NamespaceDefinition (void);
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const { return(NAMESPACE); }
|
||||||
|
|
||||||
|
const std::vector<const Node *> & getNodes (void) const
|
||||||
|
{
|
||||||
|
return(m_aNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string & getName(void) const
|
||||||
|
{
|
||||||
|
return(m_strName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std::string m_strName;
|
||||||
|
|
||||||
|
std::vector<const Node *> m_aNodes;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Declarations/SimpleDeclaration.cpp
Normal file
20
src/AST/Declarations/SimpleDeclaration.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "SimpleDeclaration.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::SimpleDeclaration::SimpleDeclaration
|
||||||
|
*/
|
||||||
|
AST::SimpleDeclaration::SimpleDeclaration(const char * pType, const char * pName, const Expression * pExpression)
|
||||||
|
: m_strType(pType)
|
||||||
|
, m_strName(pName)
|
||||||
|
, m_pExpression(pExpression)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::SimpleDeclaration::~SimpleDeclaration
|
||||||
|
*/
|
||||||
|
AST::SimpleDeclaration::~SimpleDeclaration()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
33
src/AST/Declarations/SimpleDeclaration.h
Normal file
33
src/AST/Declarations/SimpleDeclaration.h
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Declaration.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Expression;
|
||||||
|
|
||||||
|
class SimpleDeclaration : public Declaration
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit SimpleDeclaration (const char * pType, const char * pName, const Expression * pExpression = nullptr);
|
||||||
|
virtual ~SimpleDeclaration (void);
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const { return(SIMPLE); }
|
||||||
|
|
||||||
|
const std::string & getVariableType (void) const { return(m_strType); }
|
||||||
|
const std::string & getVariableName (void) const { return(m_strName); }
|
||||||
|
const Expression * getExpression (void) const { return(m_pExpression); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std::string m_strType;
|
||||||
|
std::string m_strName;
|
||||||
|
const Expression * m_pExpression;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
18
src/AST/Declarations/StaticAssertDeclaration.cpp
Normal file
18
src/AST/Declarations/StaticAssertDeclaration.cpp
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#include "StaticAssertDeclaration.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::StaticAssertDeclaration::StaticAssertDeclaration
|
||||||
|
*/
|
||||||
|
AST::StaticAssertDeclaration::StaticAssertDeclaration(const Expression * pExpression)
|
||||||
|
: m_pExpression(pExpression)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::StaticAssertDeclaration::~StaticAssertDeclaration
|
||||||
|
*/
|
||||||
|
AST::StaticAssertDeclaration::~StaticAssertDeclaration(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
28
src/AST/Declarations/StaticAssertDeclaration.h
Normal file
28
src/AST/Declarations/StaticAssertDeclaration.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Declaration.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Expression;
|
||||||
|
|
||||||
|
class StaticAssertDeclaration : public Declaration
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit StaticAssertDeclaration (const Expression * pExpression);
|
||||||
|
virtual ~StaticAssertDeclaration (void);
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const { return(EMPTY); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
const Expression * m_pExpression;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
19
src/AST/Declarations/Structure.cpp
Normal file
19
src/AST/Declarations/Structure.cpp
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#include "Structure.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Structure::Structure
|
||||||
|
* @param pName
|
||||||
|
*/
|
||||||
|
AST::Structure::Structure(const char * pName)
|
||||||
|
: m_strName(pName)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Structure::~Structure
|
||||||
|
*/
|
||||||
|
AST::Structure::~Structure()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
43
src/AST/Declarations/Structure.h
Normal file
43
src/AST/Declarations/Structure.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Declaration.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Structure : public Declaration
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit Structure (const char * pName);
|
||||||
|
virtual ~Structure (void);
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const { return(STRUCTURE); }
|
||||||
|
|
||||||
|
void addNode (const Node * pNode)
|
||||||
|
{
|
||||||
|
m_aNodes.push_back(pNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<const Node *> & getNodes (void) const
|
||||||
|
{
|
||||||
|
return(m_aNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string & getName(void) const
|
||||||
|
{
|
||||||
|
return(m_strName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std::string m_strName;
|
||||||
|
|
||||||
|
std::vector<const Node *> m_aNodes;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
18
src/AST/Declarations/TemplateDeclaration.cpp
Normal file
18
src/AST/Declarations/TemplateDeclaration.cpp
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#include "TemplateDeclaration.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::TemplateDeclaration::TemplateDeclaration
|
||||||
|
*/
|
||||||
|
AST::TemplateDeclaration::TemplateDeclaration(const Declaration * pDeclaration)
|
||||||
|
: m_pDeclaration(pDeclaration)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::TemplateDeclaration::~TemplateDeclaration
|
||||||
|
*/
|
||||||
|
AST::TemplateDeclaration::~TemplateDeclaration()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
26
src/AST/Declarations/TemplateDeclaration.h
Normal file
26
src/AST/Declarations/TemplateDeclaration.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Declaration.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class TemplateDeclaration : public Declaration
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit TemplateDeclaration (const Declaration * pDeclaration);
|
||||||
|
virtual ~TemplateDeclaration (void);
|
||||||
|
|
||||||
|
virtual EDeclarationType getDeclarationType (void) const { return(TEMPLATE); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
const Declaration * m_pDeclaration;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
17
src/AST/Expression.cpp
Normal file
17
src/AST/Expression.cpp
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include "Expression.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Expression::Expression
|
||||||
|
*/
|
||||||
|
AST::Expression::Expression(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Expression::~Expression
|
||||||
|
*/
|
||||||
|
AST::Expression::~Expression(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
31
src/AST/Expression.h
Normal file
31
src/AST/Expression.h
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Node.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Expression : public Node
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
enum EExpressionType
|
||||||
|
{
|
||||||
|
VARIABLE,
|
||||||
|
CONSTANT,
|
||||||
|
CALL,
|
||||||
|
UNARY,
|
||||||
|
BINARY
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit Expression (void);
|
||||||
|
virtual ~Expression (void);
|
||||||
|
|
||||||
|
virtual ENodeType getNodeType (void) const { return(EXPRESSION); }
|
||||||
|
|
||||||
|
virtual EExpressionType getExpressionType (void) const = 0;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/Addition.cpp
Normal file
20
src/AST/Expressions/Arithmetic/Addition.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "Addition.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Addition::Addition
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::Addition::Addition(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Addition::~Addition
|
||||||
|
*/
|
||||||
|
AST::Addition::~Addition(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/Addition.h
Normal file
20
src/AST/Expressions/Arithmetic/Addition.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Addition : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit Addition (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~Addition (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::ADDITION); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/Division.cpp
Normal file
20
src/AST/Expressions/Arithmetic/Division.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "Division.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Division::Division
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::Division::Division(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Division::~Division
|
||||||
|
*/
|
||||||
|
AST::Division::~Division(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/Division.h
Normal file
20
src/AST/Expressions/Arithmetic/Division.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Division : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit Division (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~Division (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::DIVISION); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/Modulo.cpp
Normal file
20
src/AST/Expressions/Arithmetic/Modulo.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "Modulo.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Modulo::Modulo
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::Modulo::Modulo(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Modulo::~Modulo
|
||||||
|
*/
|
||||||
|
AST::Modulo::~Modulo(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/Modulo.h
Normal file
20
src/AST/Expressions/Arithmetic/Modulo.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Modulo : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit Modulo (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~Modulo (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::MODULO); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/Multiplication.cpp
Normal file
20
src/AST/Expressions/Arithmetic/Multiplication.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "Multiplication.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Multiplication::Multiplication
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::Multiplication::Multiplication(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Multiplication::~Multiplication
|
||||||
|
*/
|
||||||
|
AST::Multiplication::~Multiplication(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/Multiplication.h
Normal file
20
src/AST/Expressions/Arithmetic/Multiplication.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Multiplication : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit Multiplication (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~Multiplication (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::MULTIPLICATON); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/Subtraction.cpp
Normal file
20
src/AST/Expressions/Arithmetic/Subtraction.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "Subtraction.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Subtraction::Subtraction
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::Subtraction::Subtraction(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Subtraction::~Subtraction
|
||||||
|
*/
|
||||||
|
AST::Subtraction::~Subtraction(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/Subtraction.h
Normal file
20
src/AST/Expressions/Arithmetic/Subtraction.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Subtraction : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit Subtraction (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~Subtraction (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::SUBTRACTION); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/UnaryMinus.cpp
Normal file
20
src/AST/Expressions/Arithmetic/UnaryMinus.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "UnaryMinus.h"
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::UnaryMinus::UnaryMinus
|
||||||
|
* @param pExpr
|
||||||
|
*/
|
||||||
|
AST::UnaryMinus::UnaryMinus(const AST::Expression * pExpr)
|
||||||
|
: Unary(pExpr)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::UnaryMinus::~UnaryMinus
|
||||||
|
*/
|
||||||
|
AST::UnaryMinus::~UnaryMinus(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/UnaryMinus.h
Normal file
20
src/AST/Expressions/Arithmetic/UnaryMinus.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Unary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class UnaryMinus : public Unary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit UnaryMinus (const Expression * pExpr);
|
||||||
|
virtual ~UnaryMinus (void);
|
||||||
|
|
||||||
|
virtual EUnaryType getUnaryType (void) const { return(Unary::MINUS); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
19
src/AST/Expressions/Arithmetic/UnaryPlus.cpp
Normal file
19
src/AST/Expressions/Arithmetic/UnaryPlus.cpp
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#include "UnaryPlus.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::UnaryPlus::UnaryPlus
|
||||||
|
* @param pExpr
|
||||||
|
*/
|
||||||
|
AST::UnaryPlus::UnaryPlus(const AST::Expression * pExpr)
|
||||||
|
: Unary(pExpr)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::UnaryPlus::~UnaryPlus
|
||||||
|
*/
|
||||||
|
AST::UnaryPlus::~UnaryPlus(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Arithmetic/UnaryPlus.h
Normal file
20
src/AST/Expressions/Arithmetic/UnaryPlus.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Unary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class UnaryPlus : public Unary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit UnaryPlus (const Expression * pExpr);
|
||||||
|
virtual ~UnaryPlus (void);
|
||||||
|
|
||||||
|
virtual EUnaryType getUnaryType (void) const { return(Unary::PLUS); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Assignment/AdditionAssignment.cpp
Normal file
20
src/AST/Expressions/Assignment/AdditionAssignment.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "AdditionAssignment.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::AdditionAssignment::AdditionAssignment
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::AdditionAssignment::AdditionAssignment(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::AdditionAssignment::~AdditionAssignment
|
||||||
|
*/
|
||||||
|
AST::AdditionAssignment::~AdditionAssignment(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Assignment/AdditionAssignment.h
Normal file
20
src/AST/Expressions/Assignment/AdditionAssignment.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class AdditionAssignment : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit AdditionAssignment (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~AdditionAssignment (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::ADDITION_ASSIGNMENT); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Assignment/BasicAssignment.cpp
Normal file
20
src/AST/Expressions/Assignment/BasicAssignment.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "BasicAssignment.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::BasicAssignment::BasicAssignment
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::BasicAssignment::BasicAssignment(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::BasicAssignment::~BasicAssignment
|
||||||
|
*/
|
||||||
|
AST::BasicAssignment::~BasicAssignment(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Assignment/BasicAssignment.h
Normal file
20
src/AST/Expressions/Assignment/BasicAssignment.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class BasicAssignment : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit BasicAssignment (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~BasicAssignment (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::BASIC_ASSIGNMENT); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Assignment/DivisionAssignment.cpp
Normal file
20
src/AST/Expressions/Assignment/DivisionAssignment.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "DivisionAssignment.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::DivisionAssignment::DivisionAssignment
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::DivisionAssignment::DivisionAssignment(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::DivisionAssignment::~DivisionAssignment
|
||||||
|
*/
|
||||||
|
AST::DivisionAssignment::~DivisionAssignment(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Assignment/DivisionAssignment.h
Normal file
20
src/AST/Expressions/Assignment/DivisionAssignment.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class DivisionAssignment : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit DivisionAssignment (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~DivisionAssignment (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::DIVISION_ASSIGNMENT); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Assignment/ModuloAssignment.cpp
Normal file
20
src/AST/Expressions/Assignment/ModuloAssignment.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "ModuloAssignment.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::ModuloAssignment::ModuloAssignment
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::ModuloAssignment::ModuloAssignment(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::ModuloAssignment::~ModuloAssignment
|
||||||
|
*/
|
||||||
|
AST::ModuloAssignment::~ModuloAssignment(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Assignment/ModuloAssignment.h
Normal file
20
src/AST/Expressions/Assignment/ModuloAssignment.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class ModuloAssignment : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit ModuloAssignment (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~ModuloAssignment (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::MODULO_ASSIGNMENT); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Assignment/MultiplicationAssignment.cpp
Normal file
20
src/AST/Expressions/Assignment/MultiplicationAssignment.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "MultiplicationAssignment.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::MultiplicationAssignment::MultiplicationAssignment
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::MultiplicationAssignment::MultiplicationAssignment(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::MultiplicationAssignment::~MultiplicationAssignment
|
||||||
|
*/
|
||||||
|
AST::MultiplicationAssignment::~MultiplicationAssignment(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Assignment/MultiplicationAssignment.h
Normal file
20
src/AST/Expressions/Assignment/MultiplicationAssignment.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class MultiplicationAssignment : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit MultiplicationAssignment (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~MultiplicationAssignment (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::MULTIPLICATION_ASSIGNMENT); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Assignment/SubtractionAssignment.cpp
Normal file
20
src/AST/Expressions/Assignment/SubtractionAssignment.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "SubtractionAssignment.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::SubtractionAssignment::SubtractionAssignment
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::SubtractionAssignment::SubtractionAssignment(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::SubtractionAssignment::~SubtractionAssignment
|
||||||
|
*/
|
||||||
|
AST::SubtractionAssignment::~SubtractionAssignment(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Assignment/SubtractionAssignment.h
Normal file
20
src/AST/Expressions/Assignment/SubtractionAssignment.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class SubtractionAssignment : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit SubtractionAssignment (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~SubtractionAssignment (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::SUBTRACTION_ASSIGNMENT); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
19
src/AST/Expressions/Binary.cpp
Normal file
19
src/AST/Expressions/Binary.cpp
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#include "Binary.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Binary::Binary
|
||||||
|
*/
|
||||||
|
AST::Binary::Binary(const Expression * pLeftExpr, const Expression * pRightExpr)
|
||||||
|
: m_pLeftExpr(pLeftExpr)
|
||||||
|
, m_pRightExpr(pRightExpr)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Binary::~Binary
|
||||||
|
*/
|
||||||
|
AST::Binary::~Binary(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
53
src/AST/Expressions/Binary.h
Normal file
53
src/AST/Expressions/Binary.h
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Expression.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Binary : public Expression
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
enum EBinaryType
|
||||||
|
{
|
||||||
|
// Arithmetic
|
||||||
|
ADDITION,
|
||||||
|
SUBTRACTION,
|
||||||
|
MULTIPLICATON,
|
||||||
|
DIVISION,
|
||||||
|
MODULO,
|
||||||
|
// Relational
|
||||||
|
EQ,
|
||||||
|
NEQ,
|
||||||
|
GT,
|
||||||
|
GEQ,
|
||||||
|
LT,
|
||||||
|
LEQ,
|
||||||
|
// Assignment
|
||||||
|
BASIC_ASSIGNMENT,
|
||||||
|
ADDITION_ASSIGNMENT,
|
||||||
|
SUBTRACTION_ASSIGNMENT,
|
||||||
|
MULTIPLICATION_ASSIGNMENT,
|
||||||
|
DIVISION_ASSIGNMENT,
|
||||||
|
MODULO_ASSIGNMENT,
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit Binary (const Expression * pLeftExpr, const Expression * pRightExpr);
|
||||||
|
virtual ~Binary (void);
|
||||||
|
|
||||||
|
virtual EExpressionType getExpressionType (void) const { return(BINARY); }
|
||||||
|
|
||||||
|
const Expression * getLeftExpression() const { return(m_pLeftExpr); }
|
||||||
|
const Expression * getRightExpression() const { return(m_pRightExpr); }
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const = 0;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
const Expression * m_pLeftExpr;
|
||||||
|
const Expression * m_pRightExpr;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
19
src/AST/Expressions/Call.cpp
Normal file
19
src/AST/Expressions/Call.cpp
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#include "Call.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Call::Call
|
||||||
|
*/
|
||||||
|
AST::Call::Call(const char * pName, const std::vector<const Expression *> & arguments)
|
||||||
|
: m_strFunctionName(pName)
|
||||||
|
, m_aArguments(arguments)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Call::~Call
|
||||||
|
*/
|
||||||
|
AST::Call::~Call(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
31
src/AST/Expressions/Call.h
Normal file
31
src/AST/Expressions/Call.h
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Expression.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Call : public Expression
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit Call (const char * pName, const std::vector<const Expression *> & arguments);
|
||||||
|
virtual ~Call (void);
|
||||||
|
|
||||||
|
virtual EExpressionType getExpressionType (void) const { return(CALL); }
|
||||||
|
|
||||||
|
const std::string & getFunctionName(void) const { return(m_strFunctionName); }
|
||||||
|
|
||||||
|
const std::vector<const Expression *> & getArguments(void) const { return(m_aArguments); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std::string m_strFunctionName;
|
||||||
|
std::vector<const Expression *> m_aArguments;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
59
src/AST/Expressions/Constant.cpp
Normal file
59
src/AST/Expressions/Constant.cpp
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
#include "Constant.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Constant::Constant
|
||||||
|
* @param c
|
||||||
|
*/
|
||||||
|
AST::Constant::Constant(char c)
|
||||||
|
: m_eType(CHAR)
|
||||||
|
{
|
||||||
|
m_nValue.as_char = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Constant::Constant
|
||||||
|
* @param s
|
||||||
|
*/
|
||||||
|
AST::Constant::Constant(short s)
|
||||||
|
: m_eType(SHORT)
|
||||||
|
{
|
||||||
|
m_nValue.as_short = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Constant::Constant
|
||||||
|
* @param i
|
||||||
|
*/
|
||||||
|
AST::Constant::Constant(int i)
|
||||||
|
: m_eType(INTEGER)
|
||||||
|
{
|
||||||
|
m_nValue.as_int = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Constant::Constant
|
||||||
|
* @param f
|
||||||
|
*/
|
||||||
|
AST::Constant::Constant(float f)
|
||||||
|
: m_eType(FLOAT)
|
||||||
|
{
|
||||||
|
m_nValue.as_float = f;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Constant::Constant
|
||||||
|
* @param d
|
||||||
|
*/
|
||||||
|
AST::Constant::Constant(double d)
|
||||||
|
: m_eType(DOUBLE)
|
||||||
|
{
|
||||||
|
m_nValue.as_double = d;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Constant::~Constant
|
||||||
|
*/
|
||||||
|
AST::Constant::~Constant(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
54
src/AST/Expressions/Constant.h
Normal file
54
src/AST/Expressions/Constant.h
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Expression.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Constant : public Expression
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
enum ENumberType
|
||||||
|
{
|
||||||
|
CHAR,
|
||||||
|
SHORT,
|
||||||
|
INTEGER,
|
||||||
|
FLOAT,
|
||||||
|
DOUBLE
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit Constant (char c);
|
||||||
|
explicit Constant (short s);
|
||||||
|
explicit Constant (int i);
|
||||||
|
explicit Constant (float f);
|
||||||
|
explicit Constant (double d);
|
||||||
|
virtual ~Constant (void);
|
||||||
|
|
||||||
|
virtual EExpressionType getExpressionType (void) const { return(CONSTANT); }
|
||||||
|
|
||||||
|
ENumberType getNumberType(void) const { return(m_eType); }
|
||||||
|
|
||||||
|
char getValueAsChar (void) const { return(m_nValue.as_char); }
|
||||||
|
short getValueAsShort (void) const { return(m_nValue.as_short); }
|
||||||
|
int getValueAsInt (void) const { return(m_nValue.as_int); }
|
||||||
|
float getValueAsFloat (void) const { return(m_nValue.as_float); }
|
||||||
|
double getValueAsDouble(void) const { return(m_nValue.as_double); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
union Number
|
||||||
|
{
|
||||||
|
char as_char;
|
||||||
|
short as_short;
|
||||||
|
int as_int;
|
||||||
|
float as_float;
|
||||||
|
double as_double;
|
||||||
|
};
|
||||||
|
|
||||||
|
ENumberType m_eType;
|
||||||
|
Number m_nValue;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Relational/EqualTo.cpp
Normal file
20
src/AST/Expressions/Relational/EqualTo.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "EqualTo.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::EqualTo::EqualTo
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::EqualTo::EqualTo(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::EqualTo::~EqualTo
|
||||||
|
*/
|
||||||
|
AST::EqualTo::~EqualTo(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Relational/EqualTo.h
Normal file
20
src/AST/Expressions/Relational/EqualTo.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class EqualTo : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit EqualTo (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~EqualTo (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::EQ); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Relational/GreaterThan.cpp
Normal file
20
src/AST/Expressions/Relational/GreaterThan.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "GreaterThan.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::GreaterThan::GreaterThan
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::GreaterThan::GreaterThan(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::GreaterThan::~GreaterThan
|
||||||
|
*/
|
||||||
|
AST::GreaterThan::~GreaterThan(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Relational/GreaterThan.h
Normal file
20
src/AST/Expressions/Relational/GreaterThan.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class GreaterThan : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit GreaterThan (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~GreaterThan (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::GT); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Relational/GreaterThanOrEqualTo.cpp
Normal file
20
src/AST/Expressions/Relational/GreaterThanOrEqualTo.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "GreaterThanOrEqualTo.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::GreaterThanOrEqualTo::GreaterThanOrEqualTo
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::GreaterThanOrEqualTo::GreaterThanOrEqualTo(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::GreaterThanOrEqualTo::~GreaterThanOrEqualTo
|
||||||
|
*/
|
||||||
|
AST::GreaterThanOrEqualTo::~GreaterThanOrEqualTo(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Relational/GreaterThanOrEqualTo.h
Normal file
20
src/AST/Expressions/Relational/GreaterThanOrEqualTo.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class GreaterThanOrEqualTo : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit GreaterThanOrEqualTo (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~GreaterThanOrEqualTo (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::GEQ); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Relational/LessThan.cpp
Normal file
20
src/AST/Expressions/Relational/LessThan.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "LessThan.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::LessThan::LessThan
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::LessThan::LessThan(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::LessThan::~LessThan
|
||||||
|
*/
|
||||||
|
AST::LessThan::~LessThan(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Relational/LessThan.h
Normal file
20
src/AST/Expressions/Relational/LessThan.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class LessThan : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit LessThan (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~LessThan (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::LT); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Relational/LessThanOrEqualTo.cpp
Normal file
20
src/AST/Expressions/Relational/LessThanOrEqualTo.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "LessThanOrEqualTo.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::LessThanOrEqualTo::LessThanOrEqualTo
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::LessThanOrEqualTo::LessThanOrEqualTo(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::LessThanOrEqualTo::~LessThanOrEqualTo
|
||||||
|
*/
|
||||||
|
AST::LessThanOrEqualTo::~LessThanOrEqualTo(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Relational/LessThanOrEqualTo.h
Normal file
20
src/AST/Expressions/Relational/LessThanOrEqualTo.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class LessThanOrEqualTo : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit LessThanOrEqualTo (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~LessThanOrEqualTo (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::LEQ); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Relational/NotEqualTo.cpp
Normal file
20
src/AST/Expressions/Relational/NotEqualTo.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include "NotEqualTo.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::NotEqualTo::NotEqualTo
|
||||||
|
* @param lhs
|
||||||
|
* @param rhs
|
||||||
|
*/
|
||||||
|
AST::NotEqualTo::NotEqualTo(const Expression * lhs, const Expression * rhs)
|
||||||
|
: Binary(lhs, rhs)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::NotEqualTo::~NotEqualTo
|
||||||
|
*/
|
||||||
|
AST::NotEqualTo::~NotEqualTo(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
20
src/AST/Expressions/Relational/NotEqualTo.h
Normal file
20
src/AST/Expressions/Relational/NotEqualTo.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Binary.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class NotEqualTo : public Binary
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit NotEqualTo (const Expression * lhs, const Expression * rhs);
|
||||||
|
virtual ~NotEqualTo (void);
|
||||||
|
|
||||||
|
virtual EBinaryType getBinaryType (void) const { return(Binary::NEQ); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
18
src/AST/Expressions/Unary.cpp
Normal file
18
src/AST/Expressions/Unary.cpp
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#include "Unary.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Unary::Unary
|
||||||
|
*/
|
||||||
|
AST::Unary::Unary(const Expression * pExpr)
|
||||||
|
: m_pExpr(pExpr)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Call::~Call
|
||||||
|
*/
|
||||||
|
AST::Unary::~Unary(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
33
src/AST/Expressions/Unary.h
Normal file
33
src/AST/Expressions/Unary.h
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Expression.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Unary : public Expression
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
enum EUnaryType
|
||||||
|
{
|
||||||
|
PLUS,
|
||||||
|
MINUS
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit Unary (const Expression * pExpr);
|
||||||
|
virtual ~Unary (void);
|
||||||
|
|
||||||
|
virtual EExpressionType getExpressionType (void) const { return(UNARY); }
|
||||||
|
|
||||||
|
const Expression * getExpression() const { return(m_pExpr); }
|
||||||
|
|
||||||
|
virtual EUnaryType getUnaryType (void) const = 0;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
const Expression * m_pExpr;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
19
src/AST/Expressions/Variable.cpp
Normal file
19
src/AST/Expressions/Variable.cpp
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#include "Variable.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Variable::Variable
|
||||||
|
* @param pName
|
||||||
|
*/
|
||||||
|
AST::Variable::Variable(const char * pName)
|
||||||
|
: m_strName(pName)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Variable::~Variable
|
||||||
|
*/
|
||||||
|
AST::Variable::~Variable(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
30
src/AST/Expressions/Variable.h
Normal file
30
src/AST/Expressions/Variable.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Expression.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Variable : public Expression
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit Variable (const char * pName);
|
||||||
|
virtual ~Variable (void);
|
||||||
|
|
||||||
|
virtual EExpressionType getExpressionType (void) const { return(VARIABLE); }
|
||||||
|
|
||||||
|
const std::string & getName (void) const
|
||||||
|
{
|
||||||
|
return(m_strName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std::string m_strName;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
17
src/AST/Statement.cpp
Normal file
17
src/AST/Statement.cpp
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include "Statement.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Statement::Statement
|
||||||
|
*/
|
||||||
|
AST::Statement::Statement(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Statement::~Statement
|
||||||
|
*/
|
||||||
|
AST::Statement::~Statement()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
40
src/AST/Statement.h
Normal file
40
src/AST/Statement.h
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Node.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Statement : public Node
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
enum EStatementType
|
||||||
|
{
|
||||||
|
BLOCK,
|
||||||
|
IF,
|
||||||
|
WHILE,
|
||||||
|
DO,
|
||||||
|
FOR,
|
||||||
|
EXPRESSION_LIST,
|
||||||
|
DECLARATION_LIST,
|
||||||
|
RETURN,
|
||||||
|
SELECTION,
|
||||||
|
ITERATION,
|
||||||
|
JUMP,
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit Statement (void);
|
||||||
|
virtual ~Statement (void);
|
||||||
|
|
||||||
|
virtual ENodeType getNodeType (void) const { return(STATEMENT); }
|
||||||
|
|
||||||
|
virtual EStatementType getStatementType (void) const = 0;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
// ...
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
18
src/AST/Statements/CompoundStatement.cpp
Normal file
18
src/AST/Statements/CompoundStatement.cpp
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#include "CompoundStatement.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Block::Block
|
||||||
|
*/
|
||||||
|
AST::CompoundStatement::CompoundStatement(const std::vector<const Statement *> & children)
|
||||||
|
: m_aChild(children)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::Block::~Block
|
||||||
|
*/
|
||||||
|
AST::CompoundStatement::~CompoundStatement(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
27
src/AST/Statements/CompoundStatement.h
Normal file
27
src/AST/Statements/CompoundStatement.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Statement.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class CompoundStatement : public Statement
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit CompoundStatement (const std::vector<const Statement *> & children);
|
||||||
|
virtual ~CompoundStatement (void);
|
||||||
|
|
||||||
|
virtual EStatementType getStatementType (void) const { return(BLOCK); }
|
||||||
|
|
||||||
|
const std::vector<const Statement *> & getChildren (void) const { return(m_aChild); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std::vector<const Statement *> m_aChild;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
17
src/AST/Statements/DeclarationList.cpp
Normal file
17
src/AST/Statements/DeclarationList.cpp
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include "DeclarationList.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::DeclarationList::DeclarationList
|
||||||
|
*/
|
||||||
|
AST::DeclarationList::DeclarationList(const Declaration * pDecl)
|
||||||
|
{
|
||||||
|
m_aDeclarations.push_back(pDecl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::DeclarationList::~DeclarationList
|
||||||
|
*/
|
||||||
|
AST::DeclarationList::~DeclarationList(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
29
src/AST/Statements/DeclarationList.h
Normal file
29
src/AST/Statements/DeclarationList.h
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Statement.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Declaration;
|
||||||
|
|
||||||
|
class DeclarationList : public Statement
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit DeclarationList (const Declaration * pExpr);
|
||||||
|
virtual ~DeclarationList (void);
|
||||||
|
|
||||||
|
virtual EStatementType getStatementType (void) const { return(DECLARATION_LIST); }
|
||||||
|
|
||||||
|
const std::vector<const Declaration *> & getDeclaration(void) const { return(m_aDeclarations); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std::vector<const Declaration *> m_aDeclarations;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
17
src/AST/Statements/ExpressionList.cpp
Normal file
17
src/AST/Statements/ExpressionList.cpp
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include "ExpressionList.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::ExpressionList::ExpressionList
|
||||||
|
*/
|
||||||
|
AST::ExpressionList::ExpressionList(const Expression * pExpr)
|
||||||
|
{
|
||||||
|
m_aExpressions.push_back(pExpr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::ExpressionList::~ExpressionList
|
||||||
|
*/
|
||||||
|
AST::ExpressionList::~ExpressionList(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
29
src/AST/Statements/ExpressionList.h
Normal file
29
src/AST/Statements/ExpressionList.h
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Statement.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Expression;
|
||||||
|
|
||||||
|
class ExpressionList : public Statement
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit ExpressionList (const Expression * pExpr);
|
||||||
|
virtual ~ExpressionList (void);
|
||||||
|
|
||||||
|
virtual EStatementType getStatementType (void) const { return(EXPRESSION_LIST); }
|
||||||
|
|
||||||
|
const std::vector<const Expression *> & getExpressions(void) const { return(m_aExpressions); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std::vector<const Expression *> m_aExpressions;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
18
src/AST/Statements/IterationStatement.cpp
Normal file
18
src/AST/Statements/IterationStatement.cpp
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#include "IterationStatement.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::IterationStatement::IterationStatement
|
||||||
|
*/
|
||||||
|
AST::IterationStatement::IterationStatement(EIterationStatementType type)
|
||||||
|
: m_eType(type)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::IterationStatement::~IterationStatement
|
||||||
|
*/
|
||||||
|
AST::IterationStatement::~IterationStatement(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
30
src/AST/Statements/IterationStatement.h
Normal file
30
src/AST/Statements/IterationStatement.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../Statement.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class IterationStatement : public Statement
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
enum EIterationStatementType
|
||||||
|
{
|
||||||
|
WHILE,
|
||||||
|
DO,
|
||||||
|
FOR,
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit IterationStatement (EIterationStatementType type);
|
||||||
|
virtual ~IterationStatement (void);
|
||||||
|
|
||||||
|
virtual EStatementType getStatementType (void) const { return(ITERATION); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
EIterationStatementType m_eType;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
19
src/AST/Statements/IterationStatements/DoWhile.cpp
Normal file
19
src/AST/Statements/IterationStatements/DoWhile.cpp
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#include "DoWhile.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::DoWhile::DoWhile
|
||||||
|
*/
|
||||||
|
AST::DoWhile::DoWhile(const Expression * pCondition, const Statement * stmt)
|
||||||
|
: m_pCondition(pCondition)
|
||||||
|
, m_pChild(stmt)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::DoWhile::~DoWhile
|
||||||
|
*/
|
||||||
|
AST::DoWhile::~DoWhile()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
29
src/AST/Statements/IterationStatements/DoWhile.h
Normal file
29
src/AST/Statements/IterationStatements/DoWhile.h
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../IterationStatement.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Expression;
|
||||||
|
|
||||||
|
class DoWhile : public Statement
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit DoWhile (const Expression * pCondition, const Statement * stmt);
|
||||||
|
virtual ~DoWhile (void);
|
||||||
|
|
||||||
|
virtual EStatementType getStatementType (void) const { return(DO); }
|
||||||
|
|
||||||
|
const Expression * getCondition (void) const { return(m_pCondition); }
|
||||||
|
const Statement * getChild (void) const { return(m_pChild); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
const Expression * m_pCondition;
|
||||||
|
const Statement * m_pChild;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
21
src/AST/Statements/IterationStatements/For.cpp
Normal file
21
src/AST/Statements/IterationStatements/For.cpp
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#include "For.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::For::For
|
||||||
|
*/
|
||||||
|
AST::For::For(const Node * pInit, const Expression * pCondition, const Expression * pUpdate, const Statement * stmt)
|
||||||
|
: m_pInit(pInit)
|
||||||
|
, m_pCondition(pCondition)
|
||||||
|
, m_pUpdate(pUpdate)
|
||||||
|
, m_pChild(stmt)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::For::~For
|
||||||
|
*/
|
||||||
|
AST::For::~For()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
37
src/AST/Statements/IterationStatements/For.h
Normal file
37
src/AST/Statements/IterationStatements/For.h
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../IterationStatement.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Expression;
|
||||||
|
|
||||||
|
class For : public Statement
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit For (const Node * pInit, const Expression * pCondition, const Expression * pUpdate, const Statement * stmt);
|
||||||
|
virtual ~For (void);
|
||||||
|
|
||||||
|
virtual EStatementType getStatementType (void) const { return(FOR); }
|
||||||
|
|
||||||
|
const Node * getInit (void) const { return(m_pInit); }
|
||||||
|
const Expression * getCondition (void) const { return(m_pCondition); }
|
||||||
|
const Expression * getUpdate (void) const { return(m_pUpdate); }
|
||||||
|
|
||||||
|
const Statement * getChild (void) const { return(m_pChild); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
const Node * m_pInit;
|
||||||
|
const Expression * m_pCondition;
|
||||||
|
const Expression * m_pUpdate; // ExpressionList
|
||||||
|
|
||||||
|
const Statement * m_pChild;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
19
src/AST/Statements/IterationStatements/While.cpp
Normal file
19
src/AST/Statements/IterationStatements/While.cpp
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#include "While.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::While::While
|
||||||
|
*/
|
||||||
|
AST::While::While(const Expression * pCondition, const Statement * stmt)
|
||||||
|
: m_pCondition(pCondition)
|
||||||
|
, m_pChild(stmt)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::While::~While
|
||||||
|
*/
|
||||||
|
AST::While::~While()
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
29
src/AST/Statements/IterationStatements/While.h
Normal file
29
src/AST/Statements/IterationStatements/While.h
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../IterationStatement.h"
|
||||||
|
|
||||||
|
namespace AST
|
||||||
|
{
|
||||||
|
|
||||||
|
class Expression;
|
||||||
|
|
||||||
|
class While : public Statement
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit While (const Expression * pCondition, const Statement * stmt);
|
||||||
|
virtual ~While (void);
|
||||||
|
|
||||||
|
virtual EStatementType getStatementType (void) const { return(WHILE); }
|
||||||
|
|
||||||
|
const Expression * getCondition (void) const { return(m_pCondition); }
|
||||||
|
const Statement * getChild (void) const { return(m_pChild); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
const Expression * m_pCondition;
|
||||||
|
const Statement * m_pChild;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
18
src/AST/Statements/JumpStatement.cpp
Normal file
18
src/AST/Statements/JumpStatement.cpp
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#include "JumpStatement.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::JumpStatement::JumpStatement
|
||||||
|
*/
|
||||||
|
AST::JumpStatement::JumpStatement(EJumpStatementType type)
|
||||||
|
: m_eType(type)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AST::JumpStatement::~JumpStatement
|
||||||
|
*/
|
||||||
|
AST::JumpStatement::~JumpStatement(void)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user