Skip to content
← Back

src/syntax/parsers/lazy_parser.ghul

1
namespace Syntax.Parsers is
2
use IO.Std;
3
4
class LAZY_PARSER[T: class]: Parser[T] is
5
_parser: System.Lazy[Parser[T]]?;
6
7
create: () -> Parser[T] public
8
= value is
9
_parser = System.Lazy[Parser[T]](value);
10
si
11
12
init() is
13
super.init();
14
si
15
16
parse(context: CONTEXT) -> T? is
17
assert _parser? else "Lazy parser is null: {self}";
18
19
let v = _parser.value;
20
21
assert v? else "Lazy parser value is null: {_parser}";
22
23
return v.parse(context);
24
si
25
si
26
27
si