]> git.saurik.com Git - cycript.git/blobdiff - Parser.hpp
C++ Bison conversion.
[cycript.git] / Parser.hpp
index 65806af7e197e858175be391d3a0e4f17b81d3c1..e0ed1f18d525222320ae194f2e3e058d7484fc1b 100644 (file)
@@ -1,2 +1,94 @@
+#ifndef CYPARSER_HPP
+#define CYPARSER_HPP
+
 class CYParser {
 };
+
+struct CYExpression {
+};
+
+struct CYToken {
+    virtual const char *Text() const = 0;
+};
+
+struct CYTokenLiteral :
+    CYExpression,
+    virtual CYToken
+{
+};
+
+struct CYTokenString :
+    CYTokenLiteral
+{
+};
+
+struct CYTokenNumber :
+    CYTokenLiteral
+{
+};
+
+struct CYTokenWord :
+    virtual CYToken
+{
+};
+
+struct CYTokenIdentifier :
+    CYExpression,
+    CYTokenWord
+{
+    const char *word_;
+
+    virtual const char *Text() const {
+        return word_;
+    }
+};
+
+struct CYExpressionPrefix :
+    CYExpression
+{
+    CYExpression *rhs_;
+
+    CYExpressionPrefix(CYExpression *rhs) :
+        rhs_(rhs)
+    {
+    }
+};
+
+struct CYExpressionInfix :
+    CYExpression
+{
+    CYExpression *lhs_;
+    CYExpression *rhs_;
+
+    CYExpressionInfix(CYExpression *lhs, CYExpression *rhs) :
+        lhs_(lhs),
+        rhs_(rhs)
+    {
+    }
+};
+
+struct CYExpressionPostfix :
+    CYExpression
+{
+    CYExpression *lhs_;
+
+    CYExpressionPostfix(CYExpression *lhs) :
+        lhs_(lhs)
+    {
+    }
+};
+
+struct CYExpressionAssignment :
+    CYExpression
+{
+    CYExpression *lhs_;
+    CYExpression *rhs_;
+
+    CYExpressionAssignment(CYExpression *lhs, CYExpression *rhs) :
+        lhs_(lhs),
+        rhs_(rhs)
+    {
+    }
+};
+
+#endif/*CYPARSER_HPP*/