Go to the documentation of this file.
55 #define LTYPE_INTEGER 258
56 #define LTYPE_FLOAT 259
81 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
82 #line 1199 "goomsl_yacc.y"
94 #line 95 "goomsl_yacc.h"
95 # define yystype YYSTYPE
96 # define YYSTYPE_IS_DECLARED 1
97 # define YYSTYPE_IS_TRIVIAL 1
int val
Definition: goomsl_private.h:52
void gsl_reenternamespace(GoomHash *nsinfo)
Definition: goomsl.c:823
void gsl_declare_task(const char *name)
Definition: goomsl.c:844
void goom_hash_put_int(GoomHash *_this, const char *key, int i)
Definition: goomsl_hash.c:90
static void commit_call(NodeType *node)
Definition: goomsl_yacc.c:1073
static int is_tmp_expr(NodeType *node)
Definition: goomsl_yacc.c:141
static void gsl_ptr_decl_local(const char *name)
Definition: goomsl_yacc.c:446
static NodeType * new_affect_list_after(NodeType *affect_list)
Definition: goomsl_yacc.c:985
static void nodeFree(NodeType *node)
Definition: goomsl_yacc.c:1235
static void commit_node(NodeType *node, int releaseIfTemp)
Definition: goomsl_yacc.c:1170
#define CONST_INT_NODE
Definition: goomsl_private.h:16
#define OPR_AFFECT_LIST
Definition: goomsl_private.h:45
#define TYPE_PTR
Definition: goomsl_private.h:221
static const unsigned char yydefact[]
Definition: goomsl_yacc.c:1624
#define LTYPE_VAR
Definition: goomsl_yacc.c:81
static void precommit_div(NodeType *mul)
Definition: goomsl_yacc.c:722
#define OPR_SET
Definition: goomsl_private.h:25
#define PLUS_EQ
Definition: goomsl_yacc.h:67
#define NOT_EQ
Definition: goomsl_yacc.h:73
static void GSL_PUT_JNZERO(const char *name, int line_number)
Definition: goomsl_yacc.c:188
#define SUP_EQ
Definition: goomsl_yacc.h:71
NodeType * nPtr
Definition: goomsl_yacc.c:1320
OprNodeType opr
Definition: goomsl_private.h:75
#define YYTABLE_NINF
Definition: goomsl_yacc.c:1699
int type
Definition: goomsl_private.h:152
short yyss
Definition: goomsl_yacc.c:1379
static const unsigned char yyr1[]
Definition: goomsl_yacc.c:1594
#define YYTERROR
Definition: goomsl_yacc.c:1833
static NodeType * new_expr1(const char *name, int id, NodeType *expr1)
Definition: goomsl_yacc.c:641
int type
Definition: goomsl_private.h:61
#define FLOAT_TK
Definition: goomsl_yacc.h:61
#define TYPE_VAR
Definition: goomsl_private.h:220
static NodeType * new_while(NodeType *expression, NodeType *instr)
Definition: goomsl_yacc.c:838
int num_lines
Definition: goomsl_private.h:166
#define NOT
Definition: goomsl_yacc.h:66
#define OPR_IF
Definition: goomsl_private.h:26
#define DIV_EQ
Definition: goomsl_yacc.h:69
int id
Definition: goomsl_private.h:58
static void precommit_add(NodeType *add)
Definition: goomsl_yacc.c:660
void gsl_instr_set_namespace(Instruction *_this, GoomHash *ns)
Definition: goomsl.c:132
static void commit_not(NodeType *set)
Definition: goomsl_yacc.c:811
#define OPR_SUB_EQ
Definition: goomsl_private.h:41
Definition: goomsl_private.h:157
float floatValue
Definition: goomsl_yacc.c:1317
GoomHash * namespaces[16]
Definition: goomsl_private.h:174
static void gsl_declare_var(GoomHash *ns, const char *name, int type, void *space)
Definition: goomsl_yacc.c:370
GSL_Struct ** gsl_struct
Definition: goomsl_private.h:182
void gsl_commit_compilation()
Definition: goomsl_yacc.c:1150
#define EXTERNAL
Definition: goomsl_yacc.c:87
static NodeType * lastNode
Definition: goomsl_yacc.c:1087
#define YYTRANSLATE(YYX)
Definition: goomsl_yacc.c:1452
int i
Definition: goomsl_hash.h:9
void goom_hash_put_ptr(GoomHash *_this, const char *key, void *ptr)
Definition: goomsl_hash.c:102
static const unsigned char yytranslate[]
Definition: goomsl_yacc.c:1456
#define LTYPE_INTEGER
Definition: goomsl_yacc.h:55
static void commit_test2(NodeType *set, const char *type, int instr)
Definition: goomsl_yacc.c:770
static void gsl_ptr_decl_global(const char *name)
Definition: goomsl_yacc.c:426
#define YYLAST
Definition: goomsl_yacc.c:1437
#define YYACCEPT
Definition: goomsl_yacc.c:1803
static void releaseTemp(int n)
Definition: goomsl_yacc.c:1104
static void commit_function_outro(NodeType *node)
Definition: goomsl_yacc.c:968
#define ALIGN_ADDR(_addr, _align)
Definition: goomsl_yacc.c:195
static GSL_StructField * gsl_new_struct_field_struct(const char *name, const char *type)
Definition: goomsl_yacc.c:332
#define LTYPE_INTEGER
Definition: goomsl_yacc.c:79
static NodeType * new_function_intro(const char *name)
Definition: goomsl_yacc.c:949
#define FOR
Definition: goomsl_yacc.c:99
#define OPR_VAR_LIST
Definition: goomsl_private.h:47
static NodeType * new_nop(const char *str)
Definition: goomsl_yacc.c:1268
#define OPR_NODE
Definition: goomsl_private.h:22
static void gsl_add_struct_field(GSL_Struct *s, GSL_StructField *field)
Definition: goomsl_yacc.c:353
#define TYPE_FLOAT
Definition: goomsl_private.h:219
#define YY_REDUCE_PRINT(Rule)
Definition: goomsl_yacc.c:1951
#define OPR_EQU
Definition: goomsl_private.h:31
#define INSTR_RET
Definition: goomsl_private.h:233
#define STRUCT_ALIGNMENT
Definition: goomsl_yacc.c:114
#define YYDSYMPRINTF(Title, Token, Value, Location)
Definition: goomsl_yacc.c:1949
static int get_tmp_id(NodeType *node)
Definition: goomsl_yacc.c:150
#define OPR_WHILE
Definition: goomsl_private.h:27
#define LTYPE_VAR
Definition: goomsl_yacc.h:57
static int field
Definition: spudec.c:733
static const unsigned char yytable[]
Definition: goomsl_yacc.c:1700
#define FIRST_RESERVED
Definition: goomsl_private.h:216
int currentNS
Definition: goomsl_private.h:173
static NodeType * gsl_append(NodeType *curNode)
Definition: goomsl_yacc.c:1088
#define PLUS_EQ
Definition: goomsl_yacc.c:91
int yyparse()
Definition: goomsl_yacc.c:2142
int nbOp
Definition: goomsl_private.h:62
Definition: goomsl_private.h:66
int gsl_type_of_var(GoomHash *ns, const char *name)
Definition: goomsl_yacc.c:358
static NodeType * new_op(const char *str, int type, int nbOp)
Definition: goomsl_yacc.c:1273
union _NODE_TYPE::@40 unode
#define YYSTACK_FREE
Definition: goomsl_yacc.c:1367
static NodeType * new_sub_eq(NodeType *lvalue, NodeType *expression)
Definition: goomsl_yacc.c:493
static NodeType * new_function_outro()
Definition: goomsl_yacc.c:965
#define OPR_BLOCK
Definition: goomsl_private.h:28
static void commit_while(NodeType *node)
Definition: goomsl_yacc.c:845
char strValue[2048]
Definition: goomsl_yacc.c:1319
#define OPR_FUNC_INTRO
Definition: goomsl_private.h:36
#define INSTR_CALL
Definition: goomsl_private.h:232
static void precommit_node(NodeType *node)
Definition: goomsl_yacc.c:1157
#define STRUCT
Definition: goomsl_yacc.c:98
static void commit_low(NodeType *mul)
Definition: goomsl_yacc.c:833
static void commit_set(NodeType *set)
Definition: goomsl_yacc.c:468
int yynerrs
Definition: goomsl_yacc.c:2121
static NodeType * nodeNew(const char *str, int type, int line_number)
Definition: goomsl_yacc.c:1215
static void gsl_float_decl_local(const char *name)
Definition: goomsl_yacc.c:436
#define CONST_PTR_NODE
Definition: goomsl_private.h:18
#define YYFINAL
Definition: goomsl_yacc.c:1435
static void commit_function_intro(NodeType *node)
Definition: goomsl_yacc.c:956
#define INSTR_ISEQUAL
Definition: goomsl_private.h:247
static void commit_div_eq(NodeType *set)
Definition: goomsl_yacc.c:538
#define EMPTY_NODE
Definition: goomsl_private.h:15
void * goom_heap_malloc_with_alignment(GoomHeap *_this, int nb_bytes, int alignment)
Definition: goomsl_heap.c:102
NULL
Definition: xine_plugin.c:78
static NodeType * new_block(NodeType *lastNode)
Definition: goomsl_yacc.c:938
static void commit_foreach(NodeType *node)
Definition: goomsl_yacc.c:872
static NodeType * new_add(NodeType *expr1, NodeType *expr2)
Definition: goomsl_yacc.c:657
Instruction * gsl_instr_init(GoomSL *parent, const char *name, int id, int nb_param, int line_number)
Definition: goomsl.c:175
static NodeType * new_constFloat(const char *str, int line_number)
Definition: goomsl_yacc.c:1252
#define LOW_EQ
Definition: goomsl_yacc.c:96
#define LTYPE_FLOAT
Definition: goomsl_yacc.c:80
static GSL_Struct * gsl_new_struct(GSL_StructField *field)
Definition: goomsl_yacc.c:344
#define INSTR_JNZERO
Definition: goomsl_private.h:235
#define PTR_TK
Definition: goomsl_yacc.h:59
#define OPR_ADD
Definition: goomsl_private.h:29
static const yysigned_char yypgoto[]
Definition: goomsl_yacc.c:1688
#define YYEMPTY
Definition: goomsl_yacc.c:1800
void * ptr
Definition: goomsl_hash.h:8
int yylex(void)
Definition: goomsl_lex.c:790
#define WHILE
Definition: goomsl_yacc.h:64
static int lastLabel
Definition: goomsl_yacc.c:1145
#define OPR_FOREACH
Definition: goomsl_private.h:46
#define NOT_EQ
Definition: goomsl_yacc.c:97
#define OPR_MUL
Definition: goomsl_private.h:30
static void gsl_int_decl_local(const char *name)
Definition: goomsl_yacc.c:441
#define SUP_EQ
Definition: goomsl_yacc.c:95
#define STRUCT
Definition: goomsl_yacc.h:74
static void gsl_struct_decl_local(const char *struct_name, const char *name)
Definition: goomsl_yacc.c:451
#define CONST_FLOAT_NODE
Definition: goomsl_private.h:17
static NodeType * new_div_eq(NodeType *lvalue, NodeType *expression)
Definition: goomsl_yacc.c:531
Instruction * instr
Definition: goomsl_private.h:167
#define YYLEX
Definition: goomsl_yacc.c:1852
struct _NODE_TYPE * op[3]
Definition: goomsl_private.h:63
struct _NODE_TYPE * next
Definition: goomsl_private.h:64
Definition: goomsl_hash.h:20
static NodeType * nodeClone(NodeType *node)
Definition: goomsl_yacc.c:1224
static int gsl_get_struct_id(const char *name)
Definition: goomsl_yacc.c:294
static void commit_affect_list(NodeType *node)
Definition: goomsl_yacc.c:1002
Definition: goomsl_yacc.c:1315
GoomHash * gsl_leavenamespace(void)
Definition: goomsl.c:828
#define IN
Definition: goomsl_yacc.h:76
static void GSL_PUT_JZERO(const char *name, int line_number)
Definition: goomsl_yacc.c:184
static int allocateLabel(void)
Definition: goomsl_yacc.c:1146
static void precommit_sub(NodeType *sub)
Definition: goomsl_yacc.c:668
Definition: goomsl_hash.h:7
#define OPR_MUL_EQ
Definition: goomsl_private.h:42
GSL_StructField * fields[64]
Definition: goomsl_private.h:159
Block fBlock[64]
Definition: goomsl_private.h:162
static void precommit_call_expr(NodeType *call)
Definition: goomsl_yacc.c:735
static void commit_if(NodeType *node)
Definition: goomsl_yacc.c:926
GSL_StructField * gsl_struct_field
Definition: goomsl_yacc.c:1323
#define LOW_EQ
Definition: goomsl_yacc.h:72
int size
Definition: goomsl_private.h:160
#define LTYPE_FLOAT
Definition: goomsl_yacc.h:56
static void releaseAllTemps(void)
Definition: goomsl_yacc.c:1103
int data
Definition: goomsl_private.h:148
static void commit_plus_eq(NodeType *set)
Definition: goomsl_yacc.c:481
#define OPR_CALL
Definition: goomsl_private.h:38
#define INSTR_SET
Definition: goomsl_private.h:237
static NodeType * new_if(NodeType *expression, NodeType *instr)
Definition: goomsl_yacc.c:920
static void gsl_struct_decl_global_from_id(const char *name, int id)
Definition: goomsl_yacc.c:430
#define YYABORT
Definition: goomsl_yacc.c:1804
static NodeType * new_mul_eq(NodeType *lvalue, NodeType *expression)
Definition: goomsl_yacc.c:512
#define INSTR_SUB
Definition: goomsl_private.h:246
GoomHash * structIDS
Definition: goomsl_private.h:181
static NodeType * new_expr2(const char *name, int id, NodeType *expr1, NodeType *expr2)
Definition: goomsl_yacc.c:648
static NodeType * new_equ(NodeType *expr1, NodeType *expr2)
Definition: goomsl_yacc.c:822
#define OPR_DIV_EQ
Definition: goomsl_private.h:43
#define INT_TK
Definition: goomsl_yacc.h:60
#define YYNTOKENS
Definition: goomsl_yacc.c:1440
#define INSTR_FLOAT
Definition: goomsl_private.h:239
#define YYSTACK_BYTES(N)
Definition: goomsl_yacc.c:1388
YYSTYPE yylval
Definition: goomsl_yacc.c:2118
static NodeType * new_plus_eq(NodeType *lvalue, NodeType *expression)
Definition: goomsl_yacc.c:474
int size
Definition: goomsl_private.h:149
#define LTYPE_PTR
Definition: goomsl_yacc.h:58
static NodeType * new_constInt(const char *str, int line_number)
Definition: goomsl_yacc.c:1240
static const short yypact[]
Definition: goomsl_yacc.c:1661
GoomHash * vnamespace
Definition: goomsl_private.h:69
static void GSL_PUT_JUMP(char *name, int line_number)
Definition: goomsl_yacc.c:167
#define INSTR_JUMP
Definition: goomsl_private.h:230
short yysigned_char
Definition: goomsl_yacc.c:1431
#define YYMAXDEPTH
Definition: goomsl_yacc.c:1972
int line_number
Definition: goomsl_private.h:70
static NodeType * new_not(NodeType *expr1)
Definition: goomsl_yacc.c:808
static const short yycheck[]
Definition: goomsl_yacc.c:1727
#define INSTR_NOT
Definition: goomsl_private.h:248
const char name[16]
Definition: memcpy.c:569
float val
Definition: goomsl_private.h:55
#define OPR_DIV
Definition: goomsl_private.h:34
#define PTR_TK
Definition: goomsl_yacc.c:83
GoomHash * vars
Definition: goomsl_private.h:172
static void gsl_prepare_struct(GSL_Struct *s, int s_align, int i_align, int f_align)
Definition: goomsl_yacc.c:202
YYSTYPE yylval
Definition: goomsl_yacc.c:2118
Definition: goomsl_private.h:141
#define YYINITDEPTH
Definition: goomsl_yacc.c:1957
Definition: goomsl_private.h:151
#define OPR_LOW
Definition: goomsl_private.h:33
static NodeType * new_call_expr(const char *name, NodeType *affect_list)
Definition: goomsl_yacc.c:727
static NodeType * new_constPtr(const char *str, int line_number)
Definition: goomsl_yacc.c:1246
static NodeType * new_div(NodeType *expr1, NodeType *expr2)
Definition: goomsl_yacc.c:719
int yylineno
Definition: goomsl_lex.c:349
static NodeType * new_var(const char *str, int line_number)
Definition: goomsl_yacc.c:1258
#define INSTR_MUL
Definition: goomsl_private.h:244
#define INSTR_JZERO
Definition: goomsl_private.h:231
static GSL_StructField * gsl_new_struct_field(const char *name, int type)
Definition: goomsl_yacc.c:323
static void yydestruct(int yytype, YYSTYPE *yyvaluep)
Definition: goomsl_yacc.c:2079
static void commit_block(NodeType *node)
Definition: goomsl_yacc.c:944
#define EXTERNAL
Definition: goomsl_yacc.h:63
#define OPR_SUB
Definition: goomsl_private.h:35
#define OPR_PLUS_EQ
Definition: goomsl_private.h:40
void gsl_declare_external_task(const char *name)
Definition: goomsl.c:858
static const short yydefgoto[]
Definition: goomsl_yacc.c:1651
int is_extern
Definition: goomsl_private.h:144
int yychar
Definition: goomsl_yacc.c:2115
static NodeType * new_call(const char *name, NodeType *affect_list)
Definition: goomsl_yacc.c:1032
int nbFields
Definition: goomsl_private.h:158
#define DECLARE
Definition: goomsl_yacc.c:86
int intValue
Definition: goomsl_yacc.c:1316
#define OPR_FUNC_OUTRO
Definition: goomsl_private.h:37
#define INSTR_DIV
Definition: goomsl_private.h:245
static void gsl_add_struct(const char *name, GSL_Struct *gsl_struct)
Definition: goomsl_yacc.c:302
static int allocateTemp(void)
Definition: goomsl_yacc.c:1100
GoomHeap * data_heap
Definition: goomsl_private.h:178
Block iBlock[64]
Definition: goomsl_private.h:161
#define TYPE_INTEGER
Definition: goomsl_private.h:218
static void commit_mul_eq(NodeType *set)
Definition: goomsl_yacc.c:519
int type
Definition: goomsl_private.h:67
GoomSL * currentGoomSL
Definition: goomsl_lex.c:635
static void commit_sub_eq(NodeType *set)
Definition: goomsl_yacc.c:500
#define DO
Definition: goomsl_yacc.c:89
int compilationOK
Definition: goomsl_private.h:189
static void commit_ext_call(NodeType *node)
Definition: goomsl_yacc.c:1063
static NodeType * new_low(NodeType *expr1, NodeType *expr2)
Definition: goomsl_yacc.c:830
void gsl_enternamespace(const char *name)
Definition: goomsl.c:809
YYSTYPE yyvs
Definition: goomsl_yacc.c:1380
#define FOR
Definition: goomsl_yacc.h:75
Definition: goomsl_yacc.c:1377
Definition: goomsl_private.h:165
static void GSL_PUT_JXXX(const char *name, const char *iname, int instr_id, int line_number)
Definition: goomsl_yacc.c:176
static int is_commutative_expr(int itype)
Definition: goomsl_yacc.c:152
static const unsigned char yystos[]
Definition: goomsl_yacc.c:1756
static void GSL_PUT_LABEL(char *name, int line_number)
Definition: goomsl_yacc.c:159
static NodeType * new_sub(NodeType *expr1, NodeType *expr2)
Definition: goomsl_yacc.c:665
#define YYSTACK_RELOCATE(Stack)
Definition: goomsl_yacc.c:1415
#define YYSTACK_ALLOC
Definition: goomsl_yacc.c:1366
ConstIntNodeType constInt
Definition: goomsl_private.h:72
#define INSTR_INT
Definition: goomsl_private.h:238
static void precommit_expr(NodeType *expr, const char *type, int instr_id)
Definition: goomsl_yacc.c:551
static NodeType * new_var_list(NodeType *var, NodeType *next)
Definition: goomsl_yacc.c:1020
static void gsl_float_decl_global(const char *name)
Definition: goomsl_yacc.c:418
#define INSTR_PTR
Definition: goomsl_private.h:240
#define SUB_EQ
Definition: goomsl_yacc.c:92
static NodeType * new_mul(NodeType *expr1, NodeType *expr2)
Definition: goomsl_yacc.c:711
int nbStructID
Definition: goomsl_private.h:180
#define INT_TK
Definition: goomsl_yacc.c:84
GoomHash * gsl_find_namespace(const char *name)
Definition: goomsl.c:834
static void commit_equ(NodeType *mul)
Definition: goomsl_yacc.c:825
char charValue
Definition: goomsl_yacc.c:1318
static NodeType * new_neg(NodeType *expr)
Definition: goomsl_yacc.c:673
ConstFloatNodeType constFloat
Definition: goomsl_private.h:73
#define OPR_CALL_EXPR
Definition: goomsl_private.h:44
#define FLOAT_TK
Definition: goomsl_yacc.c:85
static NodeType * new_static_foreach(NodeType *var, NodeType *var_list, NodeType *instr)
Definition: goomsl_yacc.c:864
#define WHILE
Definition: goomsl_yacc.c:88
#define DECLARE
Definition: goomsl_yacc.h:62
#define LTYPE_PTR
Definition: goomsl_yacc.c:82
static NodeType * new_set(NodeType *lvalue, NodeType *expression)
Definition: goomsl_yacc.c:461
#define YYPACT_NINF
Definition: goomsl_yacc.c:1660
#define INSTR_ADD
Definition: goomsl_private.h:243
yytokentype
Definition: goomsl_yacc.c:54
#define SUB_EQ
Definition: goomsl_yacc.h:68
#define MUL_EQ
Definition: goomsl_yacc.c:94
static void commit_var_list(NodeType *node)
Definition: goomsl_yacc.c:1027
static void nodeFreeInternals(NodeType *node)
Definition: goomsl_yacc.c:1231
static void gsl_declare_global_variable(int type, char *name)
Definition: goomsl_yacc.c:1284
HashValue * goom_hash_get(GoomHash *_this, const char *key)
Definition: goomsl_hash.c:85
char * str
Definition: goomsl_private.h:68
#define DO
Definition: goomsl_yacc.h:65
static void precommit_mul(NodeType *mul)
Definition: goomsl_yacc.c:714
#define INSTR_EXT_CALL
Definition: goomsl_private.h:234
#define YYSIZE_T
Definition: goomsl_yacc.c:1795
GoomHash * functions
Definition: goomsl_private.h:176
static NodeType * rootNode
Definition: goomsl_yacc.c:1086
static const unsigned char yyr2[]
Definition: goomsl_yacc.c:1608
#define MUL_EQ
Definition: goomsl_yacc.h:70
#define INSTR_LABEL
Definition: goomsl_private.h:241
void gsl_instr_add_param(Instruction *instr, const char *param, int type)
Definition: goomsl.c:141
ConstPtrNodeType constPtr
Definition: goomsl_private.h:74
#define IN
Definition: goomsl_yacc.c:100
#define YYDPRINTF(Args)
Definition: goomsl_yacc.c:1947
GSL_Struct * gsl_struct
Definition: goomsl_yacc.c:1321
#define OPR_NOT
Definition: goomsl_private.h:32
void * goom_heap_malloc_with_alignment_prefixed(GoomHeap *_this, int nb_bytes, int alignment, int prefix_bytes)
Definition: goomsl_heap.c:56
int gsl_struct_size
Definition: goomsl_private.h:183
static void gsl_int_decl_global(const char *name)
Definition: goomsl_yacc.c:422
static NodeType * new_affec_list(NodeType *set, NodeType *next)
Definition: goomsl_yacc.c:978
static void gsl_struct_decl(GoomHash *namespace, const char *struct_name, const char *name)
Definition: goomsl_yacc.c:412
#define TYPE_LABEL
Definition: goomsl_private.h:222
#define NOT
Definition: goomsl_yacc.c:90
#define DIV_EQ
Definition: goomsl_yacc.c:93
#define VAR_NODE
Definition: goomsl_private.h:19
#define YY_STACK_PRINT(Bottom, Top)
Definition: goomsl_yacc.c:1950
#define OPR_EXT_CALL
Definition: goomsl_private.h:39
#define INSTR_ISLOWER
Definition: goomsl_private.h:242
#define YYEOF
Definition: goomsl_yacc.c:1801
void yyerror(const char *)
Definition: goomsl_yacc.c:2989
char name[256]
Definition: goomsl_private.h:153
int offsetInStruct
Definition: goomsl_private.h:154