home
/
code
/
tiger.ml.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove stand-alone grammar rule for ID
[tiger.ml.git]
/
tiger
/
src
/
lib
/
tiger
/
tiger_parser.mly
diff --git
a/tiger/src/lib/tiger/tiger_parser.mly
b/tiger/src/lib/tiger/tiger_parser.mly
index
35cae28
..
bbf89f7
100644
(file)
--- a/
tiger/src/lib/tiger/tiger_parser.mly
+++ b/
tiger/src/lib/tiger/tiger_parser.mly
@@
-132,7
+132,7
@@
exp:
{
sprintf "while[%s, do[%s]]" $2 $4
}
{
sprintf "while[%s, do[%s]]" $2 $4
}
- | FOR
id
ASSIGN exp TO exp DO exp
+ | FOR
ID
ASSIGN exp TO exp DO exp
{
let id = $2 in
let e1 = $4 in
{
let id = $2 in
let e1 = $4 in
@@
-185,20
+185,20
@@
dec:
| fundec {$1}
fundec:
| fundec {$1}
fundec:
- | FUNCTION
id
unit EQ exp
+ | FUNCTION
ID
unit EQ exp
{
let id = $2 in
let exp = $5 in
sprintf "fundec[%s, exp[%s]]" id exp
}
{
let id = $2 in
let exp = $5 in
sprintf "fundec[%s, exp[%s]]" id exp
}
- | FUNCTION
id
LPAREN tyfields RPAREN EQ exp
+ | FUNCTION
ID
LPAREN tyfields RPAREN EQ exp
{
let id = $2 in
let tyfields = $4 in
let exp = $7 in
sprintf "fundec[%s, tyfields[%s], exp[%s]]" id tyfields exp
}
{
let id = $2 in
let tyfields = $4 in
let exp = $7 in
sprintf "fundec[%s, tyfields[%s], exp[%s]]" id tyfields exp
}
- | FUNCTION
id
LPAREN tyfields RPAREN COLON ID EQ exp
+ | FUNCTION
ID
LPAREN tyfields RPAREN COLON ID EQ exp
{
let id = $2 in
let tyfields = $4 in
{
let id = $2 in
let tyfields = $4 in
@@
-210,13
+210,13
@@
fundec:
}
vardec:
}
vardec:
- | VAR
id
ASSIGN exp
+ | VAR
ID
ASSIGN exp
{
let id = $2 in
let exp = $4 in
sprintf "vardec[%s, exp[%s]]" id exp
}
{
let id = $2 in
let exp = $4 in
sprintf "vardec[%s, exp[%s]]" id exp
}
- | VAR
id
COLON ID ASSIGN exp
+ | VAR
ID
COLON ID ASSIGN exp
{
let id = $2 in
let type_id = $4 in
{
let id = $2 in
let type_id = $4 in
@@
-265,19
+265,13
@@
tyfields:
}
tyfield:
}
tyfield:
- |
id
COLON ID
+ |
ID
COLON ID
{
let id = $1 in
let type_id = $3 in
sprintf "tyfield[%s, %s]" id type_id
}
{
let id = $1 in
let type_id = $3 in
sprintf "tyfield[%s, %s]" id type_id
}
-id:
- | ID
- {
- sprintf "id[%S]" $1
- }
-
/* Perhaps "void"? */
unit:
| LPAREN RPAREN
/* Perhaps "void"? */
unit:
| LPAREN RPAREN
@@
-286,23
+280,31
@@
unit:
}
rec_field_assignments:
}
rec_field_assignments:
- |
id
EQ exp
+ |
ID
EQ exp
{
{
- sprintf "%S = %s" $1 $3
+ let id = $1 in
+ let exp = $3 in
+ sprintf "%S = %s" id exp
}
}
- |
id
EQ exp COMMA rec_field_assignments
+ |
ID
EQ exp COMMA rec_field_assignments
{
{
- sprintf "%S = %s, %s" $1 $3 $5
+ let id = $1 in
+ let exp = $3 in
+ let rec_field_assignments = $5 in
+ sprintf "%S = %s, %s" id exp rec_field_assignments
}
fun_call:
}
fun_call:
- |
id
unit
+ |
ID
unit
{
{
- sprintf "fun_call[%s, %s]" $1 $2
+ let id = $1 in
+ sprintf "fun_call[%s, []]" id
}
}
- |
id
LPAREN fun_args RPAREN
+ |
ID
LPAREN fun_args RPAREN
{
{
- sprintf "fun_call[%s, %s]" $1 $3
+ let id = $1 in
+ let fun_args = $3 in
+ sprintf "fun_call[%s, %s]" id fun_args
}
fun_args:
}
fun_args:
@@
-330,17
+332,22
@@
op:
| OR {"|"}
lvalue:
| OR {"|"}
lvalue:
- |
id
+ |
ID
{
{
- sprintf "lvalue[%s]" $1
+ let id = $1 in
+ sprintf "lvalue[%s]" id
}
}
- | lvalue DOT
id
+ | lvalue DOT
ID
{
{
- sprintf "get_record_field[%s, %s]" $1 $3
+ let record = $1 in
+ let field = $3 in
+ sprintf "get_record_field[%s, %s]" record field
}
| lvalue LBRACK exp RBRACK
{
}
| lvalue LBRACK exp RBRACK
{
- sprintf "get_array_subscript[%s, %s]" $1 $3
+ let array = $1 in
+ let subscript = $3 in
+ sprintf "get_array_subscript[%s, %s]" array subscript
}
%%
}
%%
This page took
0.045299 seconds
and
4
git commands to generate.