-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinterpreter.h
More file actions
71 lines (56 loc) · 1.45 KB
/
interpreter.h
File metadata and controls
71 lines (56 loc) · 1.45 KB
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
#ifndef INTERPRETER_H
#define INTERPRETER_H
#include <iostream>
#include "token.h"
#include "parser.h"
#define TAPE_SIZE 1024
/*syntax analyser*/
tokenName syntax(treeNode*);
tokenName syntaxExit(treeNode*);
tokenName syntaxCond(treeNode*);
tokenName syntaxMem(treeNode*);
tokenName syntaxOutput(treeNode*);
tokenName syntaxInput(treeNode*);
tokenName syntaxShift(treeNode*);
tokenName syntaxAssignAndPoint(treeNode*);
tokenName syntaxBinary(treeNode*);
tokenName syntaxPlusMinus(treeNode*);
tokenName syntaxThis(treeNode*);
tokenName syntaxConst(treeNode*);
/*solver*/
Token solve(treeNode*);
Token funcExit();
Token funcAssign(treeNode*);
Token funcPoint(treeNode*, Side);
Token funcShift(treeNode*, Side);
Token funcThis();
Token funcLoop(treeNode*);
Token funcIf(treeNode*);
Token funcAnd(treeNode*);
Token funcOr(treeNode*);
Token funcNeq(treeNode*);
Token funcEq(treeNode*);
Token funcLt(treeNode*);
Token funcGt(treeNode*);
Token funcDiv(treeNode*);
Token funcMult(treeNode*);
Token funcMod(treeNode*);
Token funcAdd(treeNode*);
Token funcSub(treeNode*);
Token funcMem(treeNode*);
Token funcInput(treeNode*);
Token funcPrint(treeNode*);
/*Memory class: handles virtual program memory*/
class Memory {
static int tape[TAPE_SIZE];
unsigned int index;
public:
Memory(){ index = 0; }
int readVal(int steps=0);
void writeVal(int data);
void movePointer(int steps);
int currentIndex();
void writeAtLocation(int idx, int data);
void printTape(int num);
};
#endif