]> git.saurik.com Git - cycript.git/blame - Parser.hpp
Maybe finished lexer.
[cycript.git] / Parser.hpp
CommitLineData
63b4c5a8
JF
1#ifndef CYPARSER_HPP
2#define CYPARSER_HPP
3
e5332278 4class 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
17struct CYExpression {
18};
19
20struct CYToken {
21 virtual const char *Text() const = 0;
22};
23
24struct CYTokenLiteral :
25 CYExpression,
26 virtual CYToken
27{
28};
29
30struct CYTokenString :
31 CYTokenLiteral
32{
33};
34
35struct CYTokenNumber :
36 CYTokenLiteral
37{
38};
39
40struct CYTokenWord :
41 virtual CYToken
42{
43};
44
45struct CYTokenIdentifier :
46 CYExpression,
47 CYTokenWord
48{
49 const char *word_;
50
51 virtual const char *Text() const {
52 return word_;
53 }
54};
55
56struct CYExpressionPrefix :
57 CYExpression
58{
59 CYExpression *rhs_;
60
61 CYExpressionPrefix(CYExpression *rhs) :
62 rhs_(rhs)
63 {
64 }
65};
66
67struct 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
80struct CYExpressionPostfix :
81 CYExpression
82{
83 CYExpression *lhs_;
84
85 CYExpressionPostfix(CYExpression *lhs) :
86 lhs_(lhs)
87 {
88 }
89};
90
91struct 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*/