equal
deleted
inserted
replaced
17 val opt_bang = Scan.optional (P.$$$ "!" >> K true) false; |
17 val opt_bang = Scan.optional (P.$$$ "!" >> K true) false; |
18 |
18 |
19 val locale_val = |
19 val locale_val = |
20 Expression.parse_expression -- |
20 Expression.parse_expression -- |
21 Scan.optional (P.$$$ "+" |-- P.!!! (Scan.repeat1 SpecParse.context_element)) [] || |
21 Scan.optional (P.$$$ "+" |-- P.!!! (Scan.repeat1 SpecParse.context_element)) [] || |
22 Scan.repeat1 SpecParse.context_element >> pair (Expression.empty_expr, []); |
22 Scan.repeat1 SpecParse.context_element >> pair ([], []); |
23 |
23 |
24 in |
24 in |
25 |
25 |
26 val _ = |
26 val _ = |
27 OuterSyntax.command "locale" "define named proof context" K.thy_decl |
27 OuterSyntax.command "locale" "define named proof context" K.thy_decl |
28 (P.name -- Scan.optional (P.$$$ "=" |-- P.!!! locale_val) ((Expression.empty_expr, []), []) -- P.opt_begin |
28 (P.name -- Scan.optional (P.$$$ "=" |-- P.!!! locale_val) (([], []), []) -- P.opt_begin |
29 >> (fn ((name, (expr, elems)), begin) => |
29 >> (fn ((name, (expr, elems)), begin) => |
30 (begin ? Toplevel.print) o Toplevel.begin_local_theory begin |
30 (begin ? Toplevel.print) o Toplevel.begin_local_theory begin |
31 (Expression.add_locale name name expr elems #-> TheoryTarget.begin))); |
31 (Expression.add_locale name name expr elems #-> TheoryTarget.begin))); |
32 |
32 |
33 val _ = |
33 val _ = |