src/Pure/Syntax/syntax.ML
changeset 175 c02750f7f604
parent 174 319ff2d6760b
child 237 a7d3e712767a
equal deleted inserted replaced
174:319ff2d6760b 175:c02750f7f604
   435     val Syntax (ggr0, tabs0 as Tabs {roots = roots0, ...}) = syn;
   435     val Syntax (ggr0, tabs0 as Tabs {roots = roots0, ...}) = syn;
   436 
   436 
   437     val ext1 = ext_of_sext ((distinct roots) \\ roots0) xconsts read_ty sext;
   437     val ext1 = ext_of_sext ((distinct roots) \\ roots0) xconsts read_ty sext;
   438 
   438 
   439     val (syn1 as Syntax (ggr1, tabs1)) = 
   439     val (syn1 as Syntax (ggr1, tabs1)) = 
   440       (case mk_xgram ext1 of
   440       (case ext1 of
   441         xg1 as XGram {prods = [], ...} => 
   441         Ext {roots = [], mfix = [], ...} => 
   442           Syntax (ref (ExtGG (ggr0, ext1)), extend_tables tabs0 xg1)
   442           Syntax (ref (ExtGG (ggr0, ext1)), extend_tables tabs0 (mk_xgram ext1))
   443       | _ => mk_syntax (ref (ExtGG (ggr0, ext1))));
   443       | _ => mk_syntax (ref (ExtGG (ggr0, ext1))));
   444 
   444 
   445     val (parse_rules, print_rules) = read_xrules syn1 (xrules_of sext);
   445     val (parse_rules, print_rules) = read_xrules syn1 (xrules_of sext);
   446     val ext2 = ExtRules {parse_rules = parse_rules, print_rules = print_rules};
   446     val ext2 = ExtRules {parse_rules = parse_rules, print_rules = print_rules};
   447   in
   447   in