lwb_parser/parser/peg/
parse_result.rs1use crate::sources::source_file::SourceFileIterator;
2
3#[derive(Clone)]
7pub struct ParseResult<'src, O: Clone> {
8 pub result: O,
9 pub pos: SourceFileIterator<'src>,
10 pub pos_err: SourceFileIterator<'src>,
11 pub ok: bool,
12 pub recovered: bool,
13}
14
15impl<'src, O: Clone> ParseResult<'src, O> {
16 pub fn map<F, ON: Clone>(self, mapfn: F) -> ParseResult<'src, ON>
18 where
19 F: Fn(O) -> ON,
20 {
21 ParseResult {
22 result: mapfn(self.result),
23 pos: self.pos,
24 pos_err: self.pos_err,
25 ok: self.ok,
26 recovered: self.recovered,
27 }
28 }
29
30 pub fn new(
31 result: O,
32 pos: SourceFileIterator<'src>,
33 pos_err: SourceFileIterator<'src>,
34 ok: bool,
35 recovered: bool,
36 ) -> Self {
37 ParseResult {
38 result,
39 pos,
40 pos_err,
41 ok,
42 recovered,
43 }
44 }
45
46 pub fn new_ok(
47 result: O,
48 pos: SourceFileIterator<'src>,
49 pos_err: SourceFileIterator<'src>,
50 recovered: bool,
51 ) -> Self {
52 ParseResult {
53 result,
54 pos,
55 pos_err,
56 ok: true,
57 recovered,
58 }
59 }
60
61 pub fn new_err(
62 result: O,
63 pos: SourceFileIterator<'src>,
64 pos_err: SourceFileIterator<'src>,
65 ) -> Self {
66 ParseResult {
67 result,
68 pos,
69 pos_err,
70 ok: false,
71 recovered: false,
72 }
73 }
74}