leafTokenScan.hpp
Go to the documentation of this file.
1
2#pragma once
3
5
6typedef union ZZSTYPE ZZSTYPE;
7typedef struct lloc ZZLTYPE;
8typedef void* zzscan_t;
9
10namespace by {
11
12 class leafParser;
13 class leafTokenDispatcher;
14
19 class _nout leafTokenScan: public leafTokenScanable {
20 BY(ME(leafTokenScan))
21
22 public:
23 using leafTokenScanable::onScan;
24 virtual nint onScan(leafParser& ps, ZZSTYPE* yylval, ZZLTYPE* loc, zzscan_t yyscanner,
25 nbool& isBypass) override;
26 };
27
32 class _nout leafNormalScan: public leafTokenScan {
34 friend class leafParser;
35
36 public:
37 using super::onScan;
38 nint onScan(leafParser& ps, ZZSTYPE* yylval, ZZLTYPE* loc, zzscan_t yyscanner,
39 nbool& isBypass) override;
40
41 private:
42 static leafNormalScan* _instance;
43 };
44
49 class _nout leafIndentScan: public leafTokenScan {
51 friend class leafParser;
52
53 public:
54 using super::onScan;
55 nint onScan(leafParser& ps, ZZSTYPE* yylval, ZZLTYPE* loc, zzscan_t yyscanner,
56 nbool& isBypass) override;
57
58 private:
59 nint _onIndent(leafParser& ev, ncnt col, nint tok);
60 nint _onDedent(leafParser& ev, ncnt col, nint tok);
61
62 private:
63 static leafIndentScan* _instance;
64 };
65} // namespace by
Indentation-aware token scanning mode.
Definition: leafTokenScan.hpp:49
Normal token scanning mode.
Definition: leafTokenScan.hpp:32
Parser for leaf configuration language.
Definition: leafParser.hpp:17
Base class for token scanning strategies.
Definition: leafTokenScan.hpp:19
Interface for token scanning during leaf parsing.
Definition: leafTokenScanable.hpp:18