118 val is_keyword: syntax -> string -> bool |
118 val is_keyword: syntax -> string -> bool |
119 val tokenize: syntax -> bool -> Symbol_Pos.T list -> Lexicon.token list |
119 val tokenize: syntax -> bool -> Symbol_Pos.T list -> Lexicon.token list |
120 val parse: Proof.context -> syntax -> string -> Lexicon.token list -> Parser.parsetree list |
120 val parse: Proof.context -> syntax -> string -> Lexicon.token list -> Parser.parsetree list |
121 val parse_ast_translation: syntax -> string -> (Proof.context -> Ast.ast list -> Ast.ast) option |
121 val parse_ast_translation: syntax -> string -> (Proof.context -> Ast.ast list -> Ast.ast) option |
122 val parse_translation: syntax -> string -> (Proof.context -> term list -> term) option |
122 val parse_translation: syntax -> string -> (Proof.context -> term list -> term) option |
123 val print_translation: syntax -> string -> (Proof.context -> typ -> term list -> term) list |
123 val print_translation: syntax -> string -> |
124 val print_ast_translation: syntax -> string -> (Proof.context -> Ast.ast list -> Ast.ast) list |
124 Proof.context -> typ -> term list -> term (*exception Match*) |
|
125 val print_ast_translation: syntax -> string -> |
|
126 Proof.context -> Ast.ast list -> Ast.ast (*exception Match*) |
125 val token_translation: syntax -> string list -> |
127 val token_translation: syntax -> string list -> |
126 string -> (Proof.context -> string -> Pretty.T) option |
128 string -> (Proof.context -> string -> Pretty.T) option |
127 type mode |
129 type mode |
128 val mode_default: mode |
130 val mode_default: mode |
129 val mode_input: mode |
131 val mode_input: mode |
419 handle Symtab.DUP c => err_dup_trfun name c; |
421 handle Symtab.DUP c => err_dup_trfun name c; |
420 |
422 |
421 |
423 |
422 (* print (ast) translations *) |
424 (* print (ast) translations *) |
423 |
425 |
424 fun lookup_tr' tab c = map fst (Symtab.lookup_list tab c); |
426 fun apply_tr' tab c ctxt T args = |
|
427 let |
|
428 val fns = map fst (Symtab.lookup_list tab c); |
|
429 fun app_first [] = raise Match |
|
430 | app_first (f :: fs) = f ctxt T args handle Match => app_first fs; |
|
431 in app_first fns end; |
|
432 |
|
433 fun apply_ast_tr' tab c ctxt args = |
|
434 let |
|
435 val fns = map fst (Symtab.lookup_list tab c); |
|
436 fun app_first [] = raise Match |
|
437 | app_first (f :: fs) = f ctxt args handle Match => app_first fs; |
|
438 in app_first fns end; |
425 |
439 |
426 fun update_tr'tab trfuns = fold_rev (Symtab.update_list Syn_Ext.eq_trfun) trfuns; |
440 fun update_tr'tab trfuns = fold_rev (Symtab.update_list Syn_Ext.eq_trfun) trfuns; |
427 fun remove_tr'tab trfuns = fold (Symtab.remove_list Syn_Ext.eq_trfun) trfuns; |
441 fun remove_tr'tab trfuns = fold (Symtab.remove_list Syn_Ext.eq_trfun) trfuns; |
428 fun merge_tr'tabs tab1 tab2 = Symtab.merge_list Syn_Ext.eq_trfun (tab1, tab2); |
442 fun merge_tr'tabs tab1 tab2 = Symtab.merge_list Syn_Ext.eq_trfun (tab1, tab2); |
429 |
443 |
505 fun tokenize (Syntax ({lexicon, ...}, _)) = Lexicon.tokenize lexicon; |
519 fun tokenize (Syntax ({lexicon, ...}, _)) = Lexicon.tokenize lexicon; |
506 fun parse ctxt (Syntax ({gram, ...}, _)) = Parser.parse ctxt gram; |
520 fun parse ctxt (Syntax ({gram, ...}, _)) = Parser.parse ctxt gram; |
507 |
521 |
508 fun parse_ast_translation (Syntax ({parse_ast_trtab, ...}, _)) = lookup_tr parse_ast_trtab; |
522 fun parse_ast_translation (Syntax ({parse_ast_trtab, ...}, _)) = lookup_tr parse_ast_trtab; |
509 fun parse_translation (Syntax ({parse_trtab, ...}, _)) = lookup_tr parse_trtab; |
523 fun parse_translation (Syntax ({parse_trtab, ...}, _)) = lookup_tr parse_trtab; |
510 fun print_translation (Syntax ({print_trtab, ...}, _)) = lookup_tr' print_trtab; |
524 fun print_translation (Syntax ({print_trtab, ...}, _)) = apply_tr' print_trtab; |
511 fun print_ast_translation (Syntax ({print_ast_trtab, ...}, _)) = lookup_tr' print_ast_trtab; |
525 fun print_ast_translation (Syntax ({print_ast_trtab, ...}, _)) = apply_ast_tr' print_ast_trtab; |
512 fun token_translation (Syntax ({tokentrtab, ...}, _)) = lookup_tokentr tokentrtab; |
526 fun token_translation (Syntax ({tokentrtab, ...}, _)) = lookup_tokentr tokentrtab; |
513 |
527 |
514 type mode = string * bool; |
528 type mode = string * bool; |
515 val mode_default = ("", true); |
529 val mode_default = ("", true); |
516 val mode_input = (Print_Mode.input, true); |
530 val mode_input = (Print_Mode.input, true); |