1 ! Copyright (C) 2024 Aleksander Sabak.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: help.markup help.markup help.syntax kernel math quotations sequences
9 { "from" integer } { "to" integer } { "seq" sequence }
10 { "slice/f" { $maybe slice } }
14 HELP: <sequence-parser>
16 { "sequence" sequence }
17 { "sequence-parser" sequence-parser }
20 "Creates a new sequence-parser parsing " { $snippet "sequence" } "."
22 { $see-also advance current offset }
25 { advance current consume next offset } related-words
29 { "sequence-parser" sequence-parser }
31 { $description "Advances the parser by one element." } ;
35 { "sequence-parser" sequence-parser }
36 { "obj/f" { $maybe object } }
38 { $description "Returns the current element and advances the parser." } ;
42 { "sequence-parser" sequence-parser }
43 { "obj/f" { $maybe object } }
45 { $description "Returns the current element." } ;
49 { "sequence-parser" sequence-parser }
50 { "obj/f" { $maybe object } }
52 { $description "Advances the parser and returns the new current element." } ;
56 { "sequence-parser" sequence-parser } { "offset" object }
57 { "obj/f" { $maybe object } }
59 { $description "Return the element of the parsed sequence offset from the current position of the parser. Negative offsets will yield already parsed elements." } ;
61 { parse-sequence with-sequence-parser } related-words
65 { "sequence" sequence } { "quot" { $quotation ( ..a parser -- ..b ) } }
67 { $description "Runs the quotation on a sequence-parser parsing the " { $snippet "sequence" } "." } ;
71 { "sequence-parser" sequence-parser }
72 { "obj/f" { $maybe object } }
74 { $description "Return the element of the sequence after the current position of the parser." } ;
78 { "sequence-parser" sequence-parser }
79 { "obj/f" { $maybe object } }
81 { $description "Return the element of the sequence before the current position of the parser." } ;
83 HELP: sequence-parse-end?
85 { "sequence-parser" sequence-parser }
88 { $description "Retruns " { $link POSTPONE: t } " if the parser has exhausted the sequence, otherwise " { $link POSTPONE: f } "." } ;
91 { $class-description "" } ;
95 { "sequence-parser" sequence-parser } { "quot" quotation }
101 { "sequence-parser" sequence-parser }
103 { $description "" } ;
105 HELP: skip-whitespace-eol
107 { "sequence-parser" sequence-parser }
109 { $description "" } ;
116 { $description "" } ;
118 HELP: take-first-matching
120 { "sequence-parser" sequence-parser } { "seq" sequence }
122 { $description "" } ;
126 { "sequence-parser" sequence-parser }
127 { "n/f" { $maybe integer } }
129 { $description "" } ;
133 { "sequence-parser" sequence-parser } { "seq" sequence }
135 { $description "" } ;
139 { "sequence-parser" sequence-parser } { "n" integer }
140 { "seq/f" { $maybe sequence } }
142 { $description "" } ;
146 { "sequence-parser" sequence-parser }
147 { "sequence" sequence }
149 { $description "" } ;
151 HELP: take-rest-slice
153 { "sequence-parser" sequence-parser }
154 { "sequence/f" { $maybe sequence } }
156 { $description "" } ;
160 { "sequence-parser" sequence-parser } { "sequence" sequence }
161 { "obj/f" { $maybe object } }
163 { $description "" } ;
167 { "sequence-parser" sequence-parser } { "sequence" sequence }
169 { $description "" } ;
173 { "sequence-parser" sequence-parser } { "quot" quotation }
174 { "sequence/f" { $maybe sequence } }
176 { $description "" } ;
178 HELP: take-until-object
180 { "sequence-parser" sequence-parser } { "obj" object }
181 { "sequence" sequence }
183 { $description "" } ;
185 HELP: take-until-sequence
187 { "sequence-parser" sequence-parser } { "sequence" sequence }
188 { "sequence'/f" { $maybe sequence } }
190 { $description "" } ;
192 HELP: take-until-sequence*
194 { "sequence-parser" sequence-parser } { "sequence" sequence }
195 { "sequence'/f" { $maybe sequence } }
197 { $description "" } ;
201 { "sequence-parser" sequence-parser } { "quot" quotation }
202 { "sequence/f" { $maybe sequence } }
204 { $description "" } ;
206 HELP: with-sequence-parser
208 { "sequence-parser" sequence-parser } { "quot" { $quotation ( ..a parser -- ..b obj/f ) } }
209 { "obj/f" { $maybe object } }
211 { $description "Saves the position of the parser and calls the quotation on it. If the quotation returns " { $link POSTPONE: f } " the parser is rewound to the saved position." } ;
215 { "sequence-parser" sequence-parser }
217 { $description "" } ;
221 { "sequence-parser" sequence-parser }
223 { $description "" } ;
225 ARTICLE: "sequences.parser" "sequences.parser"
226 { $vocab-link "sequences.parser" }
229 ABOUT: "sequences.parser"