version 1.3, 2000/08/22 05:04:27 |
version 1.4, 2000/09/21 09:19:27 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/parse/parse.y,v 1.2 2000/08/21 08:31:47 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/parse/parse.y,v 1.3 2000/08/22 05:04:27 noro Exp $ |
*/ |
*/ |
%{ |
%{ |
#define malloc(x) GC_malloc(x) |
#define malloc(x) GC_malloc(x) |
Line 102 extern jmp_buf env; |
|
Line 102 extern jmp_buf env; |
|
%type <p> desc rawstr |
%type <p> desc rawstr |
%type <f> expr pexpr opt |
%type <f> expr pexpr opt |
%type <s> stat complex |
%type <s> stat complex |
%type <n> stats node _node pvars fields members optlist |
%type <n> stats node _node pvars members optlist |
|
|
%right '=' BOPASS |
%right '=' BOPASS |
%right '?' ':' |
%right '?' ':' |
|
|
{ $$ = 0; } |
{ $$ = 0; } |
| GLOBAL { gdef=1; } pvars { gdef=0; } tail |
| GLOBAL { gdef=1; } pvars { gdef=0; } tail |
{ $$ = 0; } |
{ $$ = 0; } |
| STRUCT rawstr '{' fields '}' tail |
| STRUCT rawstr '{' members '}' tail |
{ structdef($2,$4); $$ = 0; } |
{ structdef($2,$4); $$ = 0; } |
| STRUCT rawstr '{' fields '}' pvars tail |
|
{ structdef($2,$4); setstruct($2,$6); $$ = 0; } |
|
| STRUCT rawstr pvars tail |
|
{ setstruct($2,$3); $$ = 0; } |
|
| expr tail |
| expr tail |
{ $$ = mksnode(1,S_SINGLE,$1); } |
{ $$ = mksnode(1,S_SINGLE,$1); } |
| complex |
| complex |
|
|
complex : '{' stats '}' |
complex : '{' stats '}' |
{ $$ = mksnode(1,S_CPLX,$2); } |
{ $$ = mksnode(1,S_CPLX,$2); } |
; |
; |
fields : |
|
{ $$ = 0; } |
|
| fields members tail |
|
{ MKNODE(a,0,$2); appendtonode($1,(pointer)a,&$$); } |
|
| fields STRUCT rawstr members tail |
|
{ MKNODE(a,$3,$4); appendtonode($1,(pointer)a,&$$); } |
|
; |
|
members : rawstr |
members : rawstr |
{ MKNODE($$,$1,0); } |
{ MKNODE($$,$1,0); } |
| members ',' rawstr |
| members ',' rawstr |
|
|
} |
} |
} |
} |
| pexpr POINT rawstr |
| pexpr POINT rawstr |
{ memberofstruct($1,$3,&$$); } |
{ $$ = mkfnode(2,I_POINT,$1,$3); } |
; |
; |
expr : pexpr |
expr : pexpr |
{ $$ = $1; } |
{ $$ = $1; } |