File tree Expand file tree Collapse file tree 3 files changed +68
-4
lines changed Expand file tree Collapse file tree 3 files changed +68
-4
lines changed Original file line number Diff line number Diff line change 40
40
41
41
# Compile files in _03_pc_2_out directory
42
42
43
- pc_to_out : pseudo_code_lex pseudo_code interpreter
43
+ pc_to_out : pseudo_code_lex stack pseudo_code interpreter
44
44
cd ${PC_2_OUT_DIR} ; \
45
- gcc -o interpreter lex.yy.o interpreter.o pseudo_code.o; \
45
+ gcc -o interpreter lex.yy.o interpreter.o pseudo_code.o stack.o ; \
46
46
mv interpreter ${TARGET_DIR} /interpreter
47
47
48
48
pseudo_code_lex :
49
49
cd ${PC_2_OUT_DIR} ; \
50
50
flex _pseudo_code.lex; \
51
51
gcc -c lex.yy.c
52
52
53
+ stack :
54
+ cd ${PC_2_OUT_DIR} ; \
55
+ gcc -c stack.c
56
+
53
57
pseudo_code :
54
58
cd ${PC_2_OUT_DIR} ; \
55
59
gcc -c pseudo_code.c
@@ -62,15 +66,15 @@ interpreter:
62
66
63
67
clean : clean_in_to_ri clean_pc_to_out
64
68
65
- # Compile files in _01_in_2_ri directory
69
+ # Clean _01_in_2_ri directory
66
70
67
71
clean_in_to_ri :
68
72
rm ${IN_2_RI_DIR} /lex.yy.c
69
73
rm ${IN_2_RI_DIR} /* .o
70
74
71
75
# ---------------------------------------
72
76
73
- # Compile files in _03_pc_2_out directory
77
+ # Clean _03_pc_2_out directory
74
78
75
79
clean_pc_to_out :
76
80
rm ${PC_2_OUT_DIR} /lex.yy.c
Original file line number Diff line number Diff line change
1
+ #include <stdlib.h>
2
+ #include "stack.h"
3
+
4
+ _stack _stack_init () {
5
+ return NULL ;
6
+ }
7
+
8
+ _stack _stack_push (_stack stack , _stack_node_type type , _stack_node_value value ) {
9
+ _stack_node * node = (_stack_node * ) malloc (sizeof (_stack_node ));
10
+ node -> element .type = type ;
11
+ node -> element .value = value ;
12
+ node -> next = stack ;
13
+ return node ;
14
+ }
15
+
16
+ _stack _stack_pop (_stack stack ) {
17
+ _stack_node * toFree = stack ;
18
+ stack = stack -> next ;
19
+ free (toFree );
20
+ return stack ;
21
+ }
22
+
23
+ _stack_node_element _stack_peek (_stack stack ) {
24
+ return stack -> element ;
25
+ }
Original file line number Diff line number Diff line change
1
+ #ifndef STACK_H
2
+ #define STACK_H
3
+
4
+ typedef enum {
5
+ STACK_NODE_NUMBER ,
6
+ STACK_NODE_STRING
7
+ } _stack_node_type ;
8
+
9
+ typedef union {
10
+ char * variable ;
11
+ char * string ;
12
+ double number ;
13
+ } _stack_node_value ;
14
+
15
+ typedef struct {
16
+ _stack_node_type type ;
17
+ _stack_node_value value ;
18
+ } _stack_node_element ;
19
+
20
+ typedef struct _stack_node {
21
+ _stack_node_element element ;
22
+ struct _stack_node * next ;
23
+ } _stack_node ;
24
+
25
+ typedef _stack_node * _stack ;
26
+
27
+ _stack _stack_init ();
28
+
29
+ _stack _stack_push (_stack stack , _stack_node_type type , _stack_node_value value );
30
+
31
+ _stack _stack_pop (_stack stack );
32
+
33
+ _stack_node_element _stack_peek (_stack stack );
34
+
35
+ #endif
You can’t perform that action at this time.
0 commit comments