]>
Commit | Line | Data |
---|---|---|
63b4c5a8 JF |
1 | #ifndef CYPARSER_HPP |
2 | #define CYPARSER_HPP | |
3 | ||
e5332278 | 4 | class CYParser { |
924f67b2 JF |
5 | public: |
6 | void *scanner_; | |
7 | ||
8 | private: | |
9 | void ScannerInit(); | |
10 | void ScannerDestroy(); | |
11 | ||
12 | public: | |
13 | CYParser(); | |
14 | ~CYParser(); | |
e5332278 | 15 | }; |
63b4c5a8 JF |
16 | |
17 | struct CYExpression { | |
18 | }; | |
19 | ||
20 | struct CYToken { | |
21 | virtual const char *Text() const = 0; | |
22 | }; | |
23 | ||
24 | struct CYTokenLiteral : | |
25 | CYExpression, | |
26 | virtual CYToken | |
27 | { | |
28 | }; | |
29 | ||
30 | struct CYTokenString : | |
31 | CYTokenLiteral | |
32 | { | |
33 | }; | |
34 | ||
35 | struct CYTokenNumber : | |
36 | CYTokenLiteral | |
37 | { | |
38 | }; | |
39 | ||
40 | struct CYTokenWord : | |
41 | virtual CYToken | |
42 | { | |
43 | }; | |
44 | ||
45 | struct CYTokenIdentifier : | |
46 | CYExpression, | |
47 | CYTokenWord | |
48 | { | |
49 | const char *word_; | |
50 | ||
51 | virtual const char *Text() const { | |
52 | return word_; | |
53 | } | |
54 | }; | |
55 | ||
56 | struct CYExpressionPrefix : | |
57 | CYExpression | |
58 | { | |
59 | CYExpression *rhs_; | |
60 | ||
61 | CYExpressionPrefix(CYExpression *rhs) : | |
62 | rhs_(rhs) | |
63 | { | |
64 | } | |
65 | }; | |
66 | ||
67 | struct CYExpressionInfix : | |
68 | CYExpression | |
69 | { | |
70 | CYExpression *lhs_; | |
71 | CYExpression *rhs_; | |
72 | ||
73 | CYExpressionInfix(CYExpression *lhs, CYExpression *rhs) : | |
74 | lhs_(lhs), | |
75 | rhs_(rhs) | |
76 | { | |
77 | } | |
78 | }; | |
79 | ||
80 | struct CYExpressionPostfix : | |
81 | CYExpression | |
82 | { | |
83 | CYExpression *lhs_; | |
84 | ||
85 | CYExpressionPostfix(CYExpression *lhs) : | |
86 | lhs_(lhs) | |
87 | { | |
88 | } | |
89 | }; | |
90 | ||
91 | struct CYExpressionAssignment : | |
92 | CYExpression | |
93 | { | |
94 | CYExpression *lhs_; | |
95 | CYExpression *rhs_; | |
96 | ||
97 | CYExpressionAssignment(CYExpression *lhs, CYExpression *rhs) : | |
98 | lhs_(lhs), | |
99 | rhs_(rhs) | |
100 | { | |
101 | } | |
102 | }; | |
103 | ||
104 | #endif/*CYPARSER_HPP*/ |