equal
deleted
inserted
replaced
35 datatype 'a trrule = |
35 datatype 'a trrule = |
36 ParseRule of 'a * 'a | |
36 ParseRule of 'a * 'a | |
37 PrintRule of 'a * 'a | |
37 PrintRule of 'a * 'a | |
38 ParsePrintRule of 'a * 'a |
38 ParsePrintRule of 'a * 'a |
39 type syntax |
39 type syntax |
|
40 val is_keyword: syntax -> string -> bool |
40 val extend_log_types: string list -> syntax -> syntax |
41 val extend_log_types: string list -> syntax -> syntax |
41 val extend_type_gram: (string * int * mixfix) list -> syntax -> syntax |
42 val extend_type_gram: (string * int * mixfix) list -> syntax -> syntax |
42 val extend_const_gram: string * bool -> (string * typ * mixfix) list -> syntax -> syntax |
43 val extend_const_gram: string * bool -> (string * typ * mixfix) list -> syntax -> syntax |
43 val extend_consts: string list -> syntax -> syntax |
44 val extend_consts: string list -> syntax -> syntax |
44 val extend_trfuns: |
45 val extend_trfuns: |
176 print_ruletab: ruletab, |
177 print_ruletab: ruletab, |
177 print_ast_trtab: ((Ast.ast list -> Ast.ast) * stamp) list Symtab.table, |
178 print_ast_trtab: ((Ast.ast list -> Ast.ast) * stamp) list Symtab.table, |
178 tokentrtab: (string * (string * ((string -> string * real) * stamp)) list) list, |
179 tokentrtab: (string * (string * ((string -> string * real) * stamp)) list) list, |
179 prtabs: Printer.prtabs} |
180 prtabs: Printer.prtabs} |
180 |
181 |
|
182 fun is_keyword (Syntax {lexicon, ...}) = Scan.is_literal lexicon o Symbol.explode; |
|
183 |
181 |
184 |
182 (* empty_syntax *) |
185 (* empty_syntax *) |
183 |
186 |
184 val empty_syntax = |
187 val empty_syntax = |
185 Syntax { |
188 Syntax { |
357 |
360 |
358 fun show_pt pt = |
361 fun show_pt pt = |
359 warning (Pretty.string_of (Ast.pretty_ast (SynTrans.pt_to_ast (K None) pt))); |
362 warning (Pretty.string_of (Ast.pretty_ast (SynTrans.pt_to_ast (K None) pt))); |
360 in |
363 in |
361 if length pts > ! ambiguity_level then |
364 if length pts > ! ambiguity_level then |
362 if ! ambiguity_is_error then |
365 if ! ambiguity_is_error then |
363 error ("Ambiguous input " ^ quote str) |
366 error ("Ambiguous input " ^ quote str) |
364 else |
367 else |
365 (warning ("Ambiguous input " ^ quote str); |
368 (warning ("Ambiguous input " ^ quote str); |
366 warning "produces the following parse trees:"; |
369 warning "produces the following parse trees:"; |
367 seq show_pt pts) |
370 seq show_pt pts) |
368 else (); |
371 else (); |
369 map (SynTrans.pt_to_ast (lookup_tr parse_ast_trtab)) pts |
372 map (SynTrans.pt_to_ast (lookup_tr parse_ast_trtab)) pts |
370 end; |
373 end; |
371 |
374 |
372 |
375 |