equal
deleted
inserted
replaced
23 val locale_keyword: string parser |
23 val locale_keyword: string parser |
24 val locale_expression: bool -> Expression.expression parser |
24 val locale_expression: bool -> Expression.expression parser |
25 val context_element: Element.context parser |
25 val context_element: Element.context parser |
26 val statement: (Attrib.binding * (string * string list) list) list parser |
26 val statement: (Attrib.binding * (string * string list) list) list parser |
27 val if_prems: (Attrib.binding * (string * string list) list) list parser |
27 val if_prems: (Attrib.binding * (string * string list) list) list parser |
|
28 val obtains: Element.obtains parser |
28 val general_statement: (Element.context list * Element.statement) parser |
29 val general_statement: (Element.context list * Element.statement) parser |
29 val statement_keyword: string parser |
30 val statement_keyword: string parser |
30 end; |
31 end; |
31 |
32 |
32 structure Parse_Spec: PARSE_SPEC = |
33 structure Parse_Spec: PARSE_SPEC = |
70 val includes = Parse.$$$ "includes" |-- Parse.!!! (Scan.repeat1 (Parse.position Parse.xname)); |
71 val includes = Parse.$$$ "includes" |-- Parse.!!! (Scan.repeat1 (Parse.position Parse.xname)); |
71 |
72 |
72 val locale_fixes = |
73 val locale_fixes = |
73 Parse.and_list1 (Parse.binding -- Scan.option (Parse.$$$ "::" |-- Parse.typ) -- Parse.mixfix |
74 Parse.and_list1 (Parse.binding -- Scan.option (Parse.$$$ "::" |-- Parse.typ) -- Parse.mixfix |
74 >> (single o Parse.triple1) || |
75 >> (single o Parse.triple1) || |
75 Parse.params >> map (fn (x, y) => (x, y, NoSyn))) >> flat; |
76 Parse.params) >> flat; |
76 |
77 |
77 val locale_insts = |
78 val locale_insts = |
78 Scan.optional |
79 Scan.optional |
79 (Parse.$$$ "[" |-- Parse.!!! (Scan.repeat1 (Parse.maybe Parse.term) --| Parse.$$$ "]")) [] -- |
80 (Parse.$$$ "[" |-- Parse.!!! (Scan.repeat1 (Parse.maybe Parse.term) --| Parse.$$$ "]")) [] -- |
80 Scan.optional (Parse.where_ |-- Parse.and_list1 (opt_thm_name ":" -- Parse.prop)) []; |
81 Scan.optional (Parse.where_ |-- Parse.and_list1 (opt_thm_name ":" -- Parse.prop)) []; |
134 |
135 |
135 val if_prems = Scan.optional (Parse.$$$ "if" |-- Parse.!!! statement) []; |
136 val if_prems = Scan.optional (Parse.$$$ "if" |-- Parse.!!! statement) []; |
136 |
137 |
137 val obtain_case = |
138 val obtain_case = |
138 Parse.parbinding -- |
139 Parse.parbinding -- |
139 (Scan.optional (Parse.and_list1 Parse.params --| Parse.where_ >> flat) [] -- |
140 (Scan.optional (Parse.and_list1 Parse.fixes --| Parse.where_ >> flat) [] -- |
140 (Parse.and_list1 (Scan.repeat1 Parse.prop) >> flat)); |
141 (Parse.and_list1 (Scan.repeat1 Parse.prop) >> flat)); |
|
142 |
|
143 val obtains = Parse.enum1 "|" obtain_case; |
141 |
144 |
142 val general_statement = |
145 val general_statement = |
143 statement >> (fn x => ([], Element.Shows x)) || |
146 statement >> (fn x => ([], Element.Shows x)) || |
144 Scan.repeat context_element -- |
147 Scan.repeat context_element -- |
145 (Parse.$$$ "obtains" |-- Parse.!!! (Parse.enum1 "|" obtain_case) >> Element.Obtains || |
148 (Parse.$$$ "obtains" |-- Parse.!!! obtains >> Element.Obtains || |
146 Parse.$$$ "shows" |-- Parse.!!! statement >> Element.Shows); |
149 Parse.$$$ "shows" |-- Parse.!!! statement >> Element.Shows); |
147 |
150 |
148 val statement_keyword = Parse.$$$ "obtains" || Parse.$$$ "shows"; |
151 val statement_keyword = Parse.$$$ "obtains" || Parse.$$$ "shows"; |
149 |
152 |
150 end; |
153 end; |