-map:
-NAME NUM NUM PATH {insert_map($1, 0, $3, 0, 0, $4);};
-| NAME PATH {insert_map($1, 0, 0, 0, 0, $2);};
-| NAME D PATH {insert_map($1, $2, 0, 0, 0, $3);};
-| NAME D NUM NUM PATH {insert_map($1, $2, $3, $4, 0, $5);};
-| NAME NUM NUM ref_id PATH {insert_map($1, 0, $2, $3, $4, $5);};
-| NAME ref_id PATH {insert_map($1, 0, 0, 0, $2, $3);};
-| NAME D ref_id PATH {insert_map($1, $2, 0, 0, $3, $4);};
-| NAME D NUM NUM ref_id PATH {insert_map($1, $2, $3, $4, $5, $6);};
-;
-
-//shift list_namelist name > reduce mlink
-mlink:
-MOPEN LINK NAME LINK link_namelist PATH {insert_mlink($3, 0); };
-| MOPEN LINK link_namelist PATH {insert_mlink(NULL, 0); };
-| MOPEN LINK ref_id PATH {insert_mlink(NULL, $3); };
-| MOPEN LINK NAME LINK ref_id PATH {insert_mlink($3,$5); };
-;
-
-//shift list_namelist name > reduce vlink
-vlink:
-LINK NAME LINK link_namelist PATH {insert_vlink($2, 0); };
-| LINK link_namelist PATH {insert_vlink(NULL, 0);};
-| LINK REF PATH {insert_vlink(NULL, $2);};//vdat of ref
-| LINK NAME LINK REF PATH {insert_vlink($2, $4);};//modelname of ref
-;
-
-
-olink:
-set_namelist MOPEN REF
+frame_spec:
+ NUM NUM { $$ = (struct frame_spec_t) {SFACE,$1,$2}; }
+| FACING { $$ = (struct frame_spec_t) {$1,0,0}; }
+| FACING NUM NUM { $$ = (struct frame_spec_t) {$1,$2,$3}; }
+| %empty { $$ = (struct frame_spec_t) {SFACE,0,0}; }