You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.4 KiB
74 lines
1.4 KiB
#ifndef _STMT_H_
|
|
#define _STMT_H_
|
|
|
|
#define STMT_CONST 0
|
|
#define STMT_BLOCK 1
|
|
|
|
#define STMT_PRINT 10
|
|
#define STMT_IF 11
|
|
#define STMT_FOREACH 12
|
|
#define STMT_REPEAT 13
|
|
#define STMT_ASSIGN 14
|
|
#define STMT_UNSET 15
|
|
|
|
#define STMT_EVAL_PLUS 20
|
|
#define STMT_EVAL_MINUS 21
|
|
#define STMT_EVAL_TIMES 22
|
|
#define STMT_EVAL_OVER 23
|
|
#define STMT_EVAL_MODULO 24
|
|
#define STMT_EVAL_NEG 25
|
|
|
|
#define STMT_IDENT_VAR 30
|
|
#define STMT_IDENT_ARRAY 31
|
|
#define STMT_IDENT_VAL 32
|
|
|
|
#define STMT_CAST_INT 40
|
|
#define STMT_CAST_FLOAT 41
|
|
#define STMT_CAST_STRING 42
|
|
|
|
#define STMT_COMP_EQ 50
|
|
#define STMT_COMP_NE 51
|
|
#define STMT_COMP_LT 52
|
|
#define STMT_COMP_GT 53
|
|
#define STMT_COMP_LE 54
|
|
#define STMT_COMP_GE 55
|
|
|
|
#define STMT_COND_EXPR 60
|
|
#define STMT_COND_AND 61
|
|
#define STMT_COND_OR 62
|
|
#define STMT_COND_NEG 63
|
|
|
|
|
|
|
|
#define STYP_NONE 0
|
|
#define STYP_COND 1
|
|
#define STYP_EVAL 2
|
|
#define STYP_IDVAL 3
|
|
|
|
/*
|
|
* Deklaration und Definition
|
|
*/
|
|
union stmtType
|
|
{
|
|
int cond;
|
|
struct expVal * eVal;
|
|
struct ident * idVal;
|
|
};
|
|
|
|
typedef struct stmt s_stmt;
|
|
typedef union stmtType u_stmtType;
|
|
|
|
#include <stmtQueue.h>
|
|
#include <block.h>
|
|
|
|
/*
|
|
* Interface
|
|
*/
|
|
s_stmt * stmtNew (int, s_stmtQueue *, int, u_stmtType);
|
|
void stmtFree (s_stmt *);
|
|
s_stmtQueue * stmtGetArgs (s_stmt *);
|
|
u_stmtType stmtGetVal (s_stmt *);
|
|
int stmtGetConstTyp (s_stmt *);
|
|
u_stmtType stmtDo (s_stmt *, s_block *);
|
|
|
|
#endif /* _STMT_H_ */
|