⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nodes.h

📁 khtml在gtk上的移植版本
💻 H
📖 第 1 页 / 共 2 页
字号:
  class EqualNode : public Node {  public:    EqualNode(Node *e1, Operator o, Node *e2)      : expr1(e1), expr2(e2), oper(o) {}    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr1, *expr2;    Operator oper;  };  class BitOperNode : public Node {  public:    BitOperNode(Node *e1, Operator o, Node *e2) :      expr1(e1), expr2(e2), oper(o) {}    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr1, *expr2;    Operator oper;  };  /**   * expr1 && expr2, expr1 || expr2   */  class BinaryLogicalNode : public Node {  public:    BinaryLogicalNode(Node *e1, Operator o, Node *e2) :      expr1(e1), expr2(e2), oper(o) {}    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr1, *expr2;    Operator oper;  };  /**   * The ternary operator, "logical ? expr1 : expr2"   */  class ConditionalNode : public Node {  public:    ConditionalNode(Node *l, Node *e1, Node *e2) :      logical(l), expr1(e1), expr2(e2) {}    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *logical, *expr1, *expr2;  };  class AssignNode : public Node {  public:    AssignNode(Node *l, Operator o, Node *e) : left(l), oper(o), expr(e) {}    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *left;    Operator oper;    Node *expr;  };  class CommaNode : public Node {  public:    CommaNode(Node *e1, Node *e2) : expr1(e1), expr2(e2) {}    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr1, *expr2;  };  class StatListNode : public StatementNode {  public:    // list pointer is tail of a circular list, cracked in the CaseClauseNode ctor    StatListNode(StatementNode *s);    StatListNode(StatListNode *l, StatementNode *s);    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    friend class CaseClauseNode;    StatementNode *statement;    StatListNode *list;  };  class AssignExprNode : public Node {  public:    AssignExprNode(Node *e) : expr(e) {}    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr;  };  class VarDeclNode : public Node {  public:    VarDeclNode(const Identifier &id, AssignExprNode *in);    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Identifier ident;    AssignExprNode *init;  };  class VarDeclListNode : public Node {  public:    // list pointer is tail of a circular list, cracked in the ForNode/VarStatementNode ctor    VarDeclListNode(VarDeclNode *v) : list(this), var(v) {}    VarDeclListNode(VarDeclListNode *l, VarDeclNode *v)      : list(l->list), var(v) { l->list = this; }    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    friend class ForNode;    friend class VarStatementNode;    VarDeclListNode *list;    VarDeclNode *var;  };  class VarStatementNode : public StatementNode {  public:    VarStatementNode(VarDeclListNode *l)      : list(l->list) { l->list = 0; }    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    VarDeclListNode *list;  };  class BlockNode : public StatementNode {  public:    BlockNode(SourceElementsNode *s);    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  protected:    SourceElementsNode *source;  };  class EmptyStatementNode : public StatementNode {  public:    EmptyStatementNode() { } // debug    virtual Completion execute(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  };  class ExprStatementNode : public StatementNode {  public:    ExprStatementNode(Node *e) : expr(e) { }    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr;  };  class IfNode : public StatementNode {  public:    IfNode(Node *e, StatementNode *s1, StatementNode *s2)      : expr(e), statement1(s1), statement2(s2) {}    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr;    StatementNode *statement1, *statement2;  };  class DoWhileNode : public StatementNode {  public:    DoWhileNode(StatementNode *s, Node *e) : statement(s), expr(e) {}    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    StatementNode *statement;    Node *expr;  };  class WhileNode : public StatementNode {  public:    WhileNode(Node *e, StatementNode *s) : expr(e), statement(s) {}    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr;    StatementNode *statement;  };  class ForNode : public StatementNode {  public:    ForNode(Node *e1, Node *e2, Node *e3, StatementNode *s) :      expr1(e1), expr2(e2), expr3(e3), statement(s) {}    ForNode(VarDeclListNode *e1, Node *e2, Node *e3, StatementNode *s) :      expr1(e1->list), expr2(e2), expr3(e3), statement(s) { e1->list = 0; }    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr1, *expr2, *expr3;    StatementNode *statement;  };  class ForInNode : public StatementNode {  public:    ForInNode(Node *l, Node *e, StatementNode *s);    ForInNode(const Identifier &i, AssignExprNode *in, Node *e, StatementNode *s);    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Identifier ident;    AssignExprNode *init;    Node *lexpr, *expr;    VarDeclNode *varDecl;    StatementNode *statement;  };  class ContinueNode : public StatementNode {  public:    ContinueNode() { }    ContinueNode(const Identifier &i) : ident(i) { }    virtual Completion execute(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Identifier ident;  };  class BreakNode : public StatementNode {  public:    BreakNode() { }    BreakNode(const Identifier &i) : ident(i) { }    virtual Completion execute(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Identifier ident;  };  class ReturnNode : public StatementNode {  public:    ReturnNode(Node *v) : value(v) {}    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *value;  };  class WithNode : public StatementNode {  public:    WithNode(Node *e, StatementNode *s) : expr(e), statement(s) {}    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr;    StatementNode *statement;  };  class CaseClauseNode : public Node {  public:    CaseClauseNode(Node *e) : expr(e), list(0) { }    CaseClauseNode(Node *e, StatListNode *l)      : expr(e), list(l->list) { l->list = 0; }    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    Completion evalStatements(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr;    StatListNode *list;  };  class ClauseListNode : public Node {  public:    // list pointer is tail of a circular list, cracked in the CaseBlockNode ctor    ClauseListNode(CaseClauseNode *c) : cl(c), nx(this) { }    ClauseListNode(ClauseListNode *n, CaseClauseNode *c)      : cl(c), nx(n->nx) { n->nx = this; }    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    CaseClauseNode *clause() const { return cl; }    ClauseListNode *next() const { return nx; }    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    friend class CaseBlockNode;    CaseClauseNode *cl;    ClauseListNode *nx;  };  class CaseBlockNode : public Node {  public:    CaseBlockNode(ClauseListNode *l1, CaseClauseNode *d, ClauseListNode *l2);    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    Completion evalBlock(ExecState *exec, const Value& input);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    ClauseListNode *list1;    CaseClauseNode *def;    ClauseListNode *list2;  };  class SwitchNode : public StatementNode {  public:    SwitchNode(Node *e, CaseBlockNode *b) : expr(e), block(b) { }    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr;    CaseBlockNode *block;  };  class LabelNode : public StatementNode {  public:    LabelNode(const Identifier &l, StatementNode *s) : label(l), statement(s) { }    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Identifier label;    StatementNode *statement;  };  class ThrowNode : public StatementNode {  public:    ThrowNode(Node *e) : expr(e) {}    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Node *expr;  };  class CatchNode : public StatementNode {  public:    CatchNode(const Identifier &i, StatementNode *b) : ident(i), block(b) {}    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    Completion execute(ExecState *exec, const Value &arg);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Identifier ident;    StatementNode *block;  };  class FinallyNode : public StatementNode {  public:    FinallyNode(StatementNode *b) : block(b) {}    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    StatementNode *block;  };  class TryNode : public StatementNode {  public:    TryNode(StatementNode *b, CatchNode *c)      : block(b), _catch(c), _final(0) {}    TryNode(StatementNode *b, FinallyNode *f)      : block(b), _catch(0), _final(f) {}    TryNode(StatementNode *b, CatchNode *c, FinallyNode *f)      : block(b), _catch(c), _final(f) {}    virtual void ref();    virtual bool deref();    virtual Completion execute(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    StatementNode *block;    CatchNode *_catch;    FinallyNode *_final;  };  class ParameterNode : public Node {  public:    // list pointer is tail of a circular list, cracked in the FuncDeclNode/FuncExprNode ctor    ParameterNode(const Identifier &i) : id(i), next(this) { }    ParameterNode(ParameterNode *list, const Identifier &i)      : id(i), next(list->next) { list->next = this; }    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    Identifier ident() { return id; }    ParameterNode *nextParam() { return next; }    virtual void streamTo(SourceStream &s) const;  private:    friend class FuncDeclNode;    friend class FuncExprNode;    Identifier id;    ParameterNode *next;  };  // inherited by ProgramNode  class FunctionBodyNode : public BlockNode {  public:    FunctionBodyNode(SourceElementsNode *s);    void processFuncDecl(ExecState *exec);  };  class FuncDeclNode : public StatementNode {  public:    FuncDeclNode(const Identifier &i, FunctionBodyNode *b)      : ident(i), param(0), body(b) { }    FuncDeclNode(const Identifier &i, ParameterNode *p, FunctionBodyNode *b)      : ident(i), param(p->next), body(b) { p->next = 0; }    virtual void ref();    virtual bool deref();    Completion execute(ExecState */*exec*/)      { /* empty */ return Completion(); }    void processFuncDecl(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    Identifier ident;    ParameterNode *param;    FunctionBodyNode *body;  };  class FuncExprNode : public Node {  public:    FuncExprNode(FunctionBodyNode *b) : param(0), body(b) { }    FuncExprNode(ParameterNode *p, FunctionBodyNode *b)      : param(p->next), body(b) { p->next = 0; }    virtual void ref();    virtual bool deref();    Value evaluate(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    ParameterNode *param;    FunctionBodyNode *body;  };  // A linked list of source element nodes  class SourceElementsNode : public StatementNode {  public:    // list pointer is tail of a circular list, cracked in the BlockNode (or subclass) ctor    SourceElementsNode(StatementNode *s1);    SourceElementsNode(SourceElementsNode *s1, StatementNode *s2);    virtual void ref();    virtual bool deref();    Completion execute(ExecState *exec);    void processFuncDecl(ExecState *exec);    virtual void processVarDecls(ExecState *exec);    virtual void streamTo(SourceStream &s) const;  private:    friend class BlockNode;    StatementNode *element; // 'this' element    SourceElementsNode *elements; // pointer to next  };  class ProgramNode : public FunctionBodyNode {  public:    ProgramNode(SourceElementsNode *s);  };}; // namespace#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -