]> git.saurik.com Git - cycript.git/blob - Parser.hpp
7878b0f12423193a2203cfeb8d8f65c7817c0632
[cycript.git] / Parser.hpp
1 #ifndef CYPARSER_HPP
2 #define CYPARSER_HPP
3
4 class CYParser {
5 public:
6 void *scanner_;
7
8 private:
9 void ScannerInit();
10 void ScannerDestroy();
11
12 public:
13 CYParser();
14 ~CYParser();
15 };
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*/