aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/LuaSL/src/LuaSL_LSL_tree.h
diff options
context:
space:
mode:
authorDavid Walter Seikel2012-01-05 04:47:56 +1000
committerDavid Walter Seikel2012-01-05 04:47:56 +1000
commitd4b977d0904a1dea37922dac60d3bb37f9769230 (patch)
treee5f23ddd6a6dd880f770c897fa9c11e67c4c79cf /LuaSL/src/LuaSL_LSL_tree.h
parentAdd a compiler stub. (diff)
downloadSledjHamr-d4b977d0904a1dea37922dac60d3bb37f9769230.zip
SledjHamr-d4b977d0904a1dea37922dac60d3bb37f9769230.tar.gz
SledjHamr-d4b977d0904a1dea37922dac60d3bb37f9769230.tar.bz2
SledjHamr-d4b977d0904a1dea37922dac60d3bb37f9769230.tar.xz
Add a simple flex + btyacc stub.
Will be fleshed out soon with LSL grammer.
Diffstat (limited to 'LuaSL/src/LuaSL_LSL_tree.h')
-rw-r--r--LuaSL/src/LuaSL_LSL_tree.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/LuaSL/src/LuaSL_LSL_tree.h b/LuaSL/src/LuaSL_LSL_tree.h
new file mode 100644
index 0000000..6d89672
--- /dev/null
+++ b/LuaSL/src/LuaSL_LSL_tree.h
@@ -0,0 +1,55 @@
1/*
2 * Definition of the structure used to build the abstract syntax tree.
3 */
4#ifndef __EXPRESSION_H__
5#define __EXPRESSION_H__
6
7/**
8 * @brief The operation type
9 */
10typedef enum tagEOperationType
11{
12 eVALUE,
13 eMULTIPLY,
14 ePLUS
15}EOperationType;
16
17/**
18 * @brief The expression structure
19 */
20typedef struct tagSExpression
21{
22 EOperationType type;///< type of operation
23
24 int value;///< valid only when type is eVALUE
25 struct tagSExpression* left; ///< left side of the tree
26 struct tagSExpression* right;///< right side of the tree
27}SExpression;
28
29/**
30 * @brief It creates an identifier
31 * @param value The number value
32 * @return The expression or NULL in case of no memory
33 */
34SExpression* createNumber(int value);
35
36/**
37 * @brief It creates an operation
38 * @param type The operation type
39 * @param left The left operand
40 * @param right The right operand
41 * @return The expression or NULL in case of no memory
42 */
43SExpression* createOperation(
44 EOperationType type,
45 SExpression *left,
46 SExpression *right);
47
48/**
49 * @brief Deletes a expression
50 * @param b The expression
51 */
52void deleteExpression(SExpression *b);
53
54#endif // __EXPRESSION_H__
55