projects
/
henge
/
webcc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
pushing to debug make
[henge/webcc.git]
/
src
/
apc
/
parser.y
diff --git
a/src/apc/parser.y
b/src/apc/parser.y
index
c16dc18
..
f42ea7b
100644
(file)
--- a/
src/apc/parser.y
+++ b/
src/apc/parser.y
@@
-3,8
+3,6
@@
#include <stdio.h>
#include <string.h>
#include <dirent.h>
#include <stdio.h>
#include <string.h>
#include <dirent.h>
- #include "sprite.h"
- #include "symbol.h"
#include <png.h>
#include "ir.h"
#include <png.h>
#include "ir.h"
@@
-26,20
+24,26
@@
%token RLE //#
%token RT //*
%token HB
%token RLE //#
%token RT //*
%token HB
+%token MOD
//nonterminal types
%type <int> element
%type <int> vdat
%type <str> elem_label
//nonterminal types
%type <int> element
%type <int> vdat
%type <str> elem_label
+%type <str> label
+
//terminals
%token <int> NUM
%token <int> fd
%token <str> STR
%token <int> VAR
%token <int> SS
//terminals
%token <int> NUM
%token <int> fd
%token <str> STR
%token <int> VAR
%token <int> SS
+%token <str> FNAME
//precedence
//precedence
-%right LOW HIGH
+%precedence LOW
+%precedence MED
+%precedence HIGH
-/* Syntax Directed Translation Scheme of the APC grammar */
+
/* Syntax Directed Translation Scheme of the APC grammar */
/* Rules */
/* Rules */
@@
-49,16
+53,12
@@
class_list {condense();} //Seperate file?
;
class_list:
;
class_list:
-class_list class {
cbi++;
};
+class_list class {
inc_cbi()
};
| class
;
| class
;
-class_label:
-STR
-;
-
class:
class:
-
class_label CLOPEN class_closure CLCLOSE {CB[cbi].label = $1
;};
+
label CLOPEN class_closure CLCLOSE {set_class_label($1)
;};
;
class_closure:
;
class_closure:
@@
-68,24
+68,24
@@
subclass_list
;
subclass_list:
;
subclass_list:
-subclass_list class {
CB[cbi].subclass_index++
;};
+subclass_list class {
inc_subclass_idx()
;};
| class
;
set_list:
| class
;
set_list:
-set_list set {
CB[cbi].set_index++
;};
+set_list set {
inc_set_index()
;};
| set
;
//set needs a label, vdat_id.
set:
| set
;
//set needs a label, vdat_id.
set:
-set_map_data element_list {insert_set();};
-| element_list
+set_map_data element_list
HIGH
{insert_set();};
+| element_list
LOW
;
;
-//TODO: Figure out what to do with hitbox and root.
+//TODO: Figure out what to do with hitbox and root.
set_map_data:
ref_list {};
| ref_list hitbox
set_map_data:
ref_list {};
| ref_list hitbox
@@
-100,7
+100,7
@@
RLS quads RLE
;
quads:
;
quads:
-quads quad {
OB[obi].ref_index++;OB[obi].num_ref++
;};
+quads quad {
inc_ref()
;};
| quad
;
| quad
;
@@
-118,12
+118,12
@@
RT NUM NUM NUM
//parent_id is the set_index of the subclass_index.
element_list:
//parent_id is the set_index of the subclass_index.
element_list:
-element_list element
{CB[cbi].set_stack[stack_index].num_ele++
;};
-| element
+element_list element
HIGH {inc_ele()
;};
+| element
LOW
;
element:
;
element:
-set_label elem_label vdat
{insert_ele($2,$3); vbi++;
};
+set_label elem_label vdat
LOW {insert_ele($2,$3);
};
;
set_label:
;
set_label:
@@
-135,12
+135,13
@@
elem_label:
;
vdat:
;
vdat:
-vdat model
{VB[vbi].num_models++
;};
+vdat model
{inc_models()
;};
| model
| model
+
;
model:
;
model:
-model fdat
+
MOD
model fdat
| fdat
;
| fdat
;
@@
-149,16
+150,10
@@
label SS FNAME {insert_fdat($1, $2, $3);};
;
label:
;
label:
-STR
+STR REF
+| REF
;
;
-ref:
-NUM
-;
-
-FNAME:
-STR
-;
%%
int
%%
int