22 val bracks: 'a parser -> 'a parser |
22 val bracks: 'a parser -> 'a parser |
23 val mode: string -> bool parser |
23 val mode: string -> bool parser |
24 val maybe: 'a parser -> 'a option parser |
24 val maybe: 'a parser -> 'a option parser |
25 val name_token: Token.T parser |
25 val name_token: Token.T parser |
26 val name: string parser |
26 val name: string parser |
|
27 val name_position: (string * Position.T) parser |
27 val cartouche_inner_syntax: string parser |
28 val cartouche_inner_syntax: string parser |
28 val cartouche_input: Input.source parser |
29 val cartouche_input: Input.source parser |
29 val text_token: Token.T parser |
30 val text_token: Token.T parser |
30 val embedded_token: Token.T parser |
31 val embedded_token: Token.T parser |
31 val embedded_inner_syntax: string parser |
32 val embedded_inner_syntax: string parser |
32 val embedded_input: Input.source parser |
33 val embedded_input: Input.source parser |
33 val embedded: string parser |
34 val embedded: string parser |
|
35 val embedded_position: (string * Position.T) parser |
34 val text_input: Input.source parser |
36 val text_input: Input.source parser |
35 val text: string parser |
37 val text: string parser |
36 val binding: binding parser |
38 val binding: binding parser |
37 val alt_name: string parser |
39 val alt_name: string parser |
38 val liberal_name: string parser |
40 val liberal_name: string parser |
105 fun mode s = Scan.optional (parens ($$$ s) >> K true) false; |
107 fun mode s = Scan.optional (parens ($$$ s) >> K true) false; |
106 fun maybe scan = $$$ "_" >> K NONE || scan >> SOME; |
108 fun maybe scan = $$$ "_" >> K NONE || scan >> SOME; |
107 |
109 |
108 val name_token = ident || string; |
110 val name_token = ident || string; |
109 val name = name_token >> Token.content_of; |
111 val name = name_token >> Token.content_of; |
|
112 val name_position = name_token >> (Input.source_content o Token.input_of); |
110 |
113 |
111 val cartouche = Parse.token Parse.cartouche; |
114 val cartouche = Parse.token Parse.cartouche; |
112 val cartouche_inner_syntax = cartouche >> Token.inner_syntax_of; |
115 val cartouche_inner_syntax = cartouche >> Token.inner_syntax_of; |
113 val cartouche_input = cartouche >> Token.input_of; |
116 val cartouche_input = cartouche >> Token.input_of; |
114 |
117 |
115 val embedded_token = ident || string || cartouche; |
118 val embedded_token = ident || string || cartouche; |
116 val embedded_inner_syntax = embedded_token >> Token.inner_syntax_of; |
119 val embedded_inner_syntax = embedded_token >> Token.inner_syntax_of; |
117 val embedded_input = embedded_token >> Token.input_of; |
120 val embedded_input = embedded_token >> Token.input_of; |
118 val embedded = embedded_token >> Token.content_of; |
121 val embedded = embedded_token >> Token.content_of; |
|
122 val embedded_position = embedded_input >> Input.source_content; |
119 |
123 |
120 val text_token = embedded_token || Parse.token Parse.verbatim; |
124 val text_token = embedded_token || Parse.token Parse.verbatim; |
121 val text_input = text_token >> Token.input_of; |
125 val text_input = text_token >> Token.input_of; |
122 val text = text_token >> Token.content_of; |
126 val text = text_token >> Token.content_of; |
123 |
127 |
124 val binding = Parse.position name >> Binding.make; |
128 val binding = Parse.input name >> (Binding.make o Input.source_content); |
125 val alt_name = alt_string >> Token.content_of; |
129 val alt_name = alt_string >> Token.content_of; |
126 val liberal_name = (symbolic >> Token.content_of) || name; |
130 val liberal_name = (symbolic >> Token.content_of) || name; |
127 |
131 |
128 val var = |
132 val var = |
129 (ident >> Token.content_of) :|-- (fn x => |
133 (ident >> Token.content_of) :|-- (fn x => |