]> git.saurik.com Git - cycript.git/blobdiff - Parser.hpp
The glue code required for Bison/Flex parsers is insane.
[cycript.git] / Parser.hpp
index 65806af7e197e858175be391d3a0e4f17b81d3c1..7878b0f12423193a2203cfeb8d8f65c7817c0632 100644 (file)
@@ -1,2 +1,104 @@
+#ifndef CYPARSER_HPP
+#define CYPARSER_HPP
+
 class CYParser {
+  public:
+    void *scanner_;
+
+  private:
+    void ScannerInit();
+    void ScannerDestroy();
+
+  public:
+    CYParser();
+    ~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*/