push
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
#ifndef VISITOR_H
|
||||
#define VISITOR_H
|
||||
|
||||
enum node_type
|
||||
{
|
||||
// 0 operand
|
||||
NUM,
|
||||
|
||||
// 1 operand
|
||||
POS,
|
||||
NEG,
|
||||
|
||||
// 2 operands
|
||||
ADD,
|
||||
SUB,
|
||||
MUL,
|
||||
DIV,
|
||||
MOD,
|
||||
};
|
||||
|
||||
struct ast_node
|
||||
{
|
||||
int value;
|
||||
enum node_type type;
|
||||
struct ast_node *children;
|
||||
};
|
||||
|
||||
typedef void(*visitor)(struct ast_node *);
|
||||
|
||||
void visit(struct ast_node *node, visitor v);
|
||||
|
||||
void print_prefix(struct ast_node *node);
|
||||
void print_infix(struct ast_node *node);
|
||||
void print_suffix(struct ast_node *node);
|
||||
|
||||
#endif /* ! VISITOR_H */
|
||||
Reference in New Issue
Block a user