]> git.saurik.com Git - cycript.git/blob - Parser.hpp
C++ Bison conversion.
[cycript.git] / Parser.hpp
1 #ifndef CYPARSER_HPP
2 #define CYPARSER_HPP
3
4 class CYParser {
5 };
6
7 struct CYExpression {
8 };
9
10 struct CYToken {
11 virtual const char *Text() const = 0;
12 };
13
14 struct CYTokenLiteral :
15 CYExpression,
16 virtual CYToken
17 {
18 };
19
20 struct CYTokenString :
21 CYTokenLiteral
22 {
23 };
24
25 struct CYTokenNumber :
26 CYTokenLiteral
27 {
28 };
29
30 struct CYTokenWord :
31 virtual CYToken
32 {
33 };
34
35 struct CYTokenIdentifier :
36 CYExpression,
37 CYTokenWord
38 {
39 const char *word_;
40
41 virtual const char *Text() const {
42 return word_;
43 }
44 };
45
46 struct CYExpressionPrefix :
47 CYExpression
48 {
49 CYExpression *rhs_;
50
51 CYExpressionPrefix(CYExpression *rhs) :
52 rhs_(rhs)
53 {
54 }
55 };
56
57 struct CYExpressionInfix :
58 CYExpression
59 {
60 CYExpression *lhs_;
61 CYExpression *rhs_;
62
63 CYExpressionInfix(CYExpression *lhs, CYExpression *rhs) :
64 lhs_(lhs),
65 rhs_(rhs)
66 {
67 }
68 };
69
70 struct CYExpressionPostfix :
71 CYExpression
72 {
73 CYExpression *lhs_;
74
75 CYExpressionPostfix(CYExpression *lhs) :
76 lhs_(lhs)
77 {
78 }
79 };
80
81 struct CYExpressionAssignment :
82 CYExpression
83 {
84 CYExpression *lhs_;
85 CYExpression *rhs_;
86
87 CYExpressionAssignment(CYExpression *lhs, CYExpression *rhs) :
88 lhs_(lhs),
89 rhs_(rhs)
90 {
91 }
92 };
93
94 #endif/*CYPARSER_HPP*/