From: Siraaj Khandkar Date: Mon, 28 May 2018 18:05:34 +0000 (-0400) Subject: Remove stand-alone ty grammar rule X-Git-Url: https://git.xandkar.net/?p=tiger.ml.git;a=commitdiff_plain;h=0e2c715d15688b48aba534d8ab9c3a2aec918752 Remove stand-alone ty grammar rule --- diff --git a/tiger/src/lib/tiger/tiger_parser.mly b/tiger/src/lib/tiger/tiger_parser.mly index 7ab644a..2cd530d 100644 --- a/tiger/src/lib/tiger/tiger_parser.mly +++ b/tiger/src/lib/tiger/tiger_parser.mly @@ -233,32 +233,28 @@ vardec: } tydec: - | TYPE ID EQ ty + | TYPE ID EQ ID { - let type_id = $2 in - let ty = $4 in - sprintf "tydec[%s, %s]" type_id ty - } - -ty: - | ID - { - let type_id = $1 in - sprintf "type[type_id[%S]]" type_id + let type_id_new = $2 in + let type_id_orig = $4 in + sprintf "tydec_alias[from[%s], to[%s]]" type_id_new type_id_orig } - | LBRACE RBRACE + | TYPE ID EQ LBRACE RBRACE { - "record[]" + let type_id = $2 in + sprintf "tydec_empty_record[%s]" type_id } - | LBRACE tyfields RBRACE + | TYPE ID EQ LBRACE tyfields RBRACE { - let tyfields = $2 in - sprintf "record[%s]" tyfields + let type_id = $2 in + let tyfields = $5 in + sprintf "tydec_record[%s, fields[%s]]" type_id tyfields } - | ARRAY OF ID + | TYPE ID EQ ARRAY OF ID { - let type_id = $3 in - sprintf "array_of_type[%s]" type_id + let type_id = $2 in + let element_type_id = $6 in + sprintf "tydec_array[%s, elements_of_type[%s]]" type_id element_type_id } tyfields: