nodes.h

来自「将konqueror浏览器移植到ARM9 2410中」· C头文件 代码 · 共 790 行 · 第 1/2 页

H
790
字号
      : term1(t1), term2(t2), oper(o) {}    KJSO evaluate();  private:    Node *term1, *term2;    Operator oper;  };  class RelationalNode : public Node {  public:    RelationalNode(Node *e1, Operator o, Node *e2) :      expr1(e1), expr2(e2), oper(o) {}    KJSO evaluate();  private:    Node *expr1, *expr2;    Operator oper;  };  class EqualNode : public Node {  public:    EqualNode(Node *e1, Operator o, Node *e2)      : expr1(e1), expr2(e2), oper(o) {}    KJSO evaluate();  private:    Node *expr1, *expr2;    Operator oper;  };  class BitOperNode : public Node {  public:    BitOperNode(Node *e1, Operator o, Node *e2) :      expr1(e1), expr2(e2), oper(o) {}    KJSO evaluate();  private:    Node *expr1, *expr2;    Operator oper;  };  class BinaryLogicalNode : public Node {  public:    BinaryLogicalNode(Node *e1, Operator o, Node *e2) :      expr1(e1), expr2(e2), oper(o) {}    KJSO evaluate();  private:    Node *expr1, *expr2;    Operator oper;  };  class ConditionalNode : public Node {  public:    ConditionalNode(Node *l, Node *e1, Node *e2) :      logical(l), expr1(e1), expr2(e2) {}    KJSO evaluate();  private:    Node *logical, *expr1, *expr2;  };  class AssignNode : public Node {  public:    AssignNode(Node *l, Operator o, Node *e) : left(l), oper(o), expr(e) {}    KJSO evaluate();  private:    Node *left;    Operator oper;    Node *expr;  };  class CommaNode : public Node {  public:    CommaNode(Node *e1, Node *e2) : expr1(e1), expr2(e2) {}    KJSO evaluate();  private:    Node *expr1, *expr2;  };  class StatListNode : public StatementNode {  public:    StatListNode(StatementNode *s) : statement(s), list(0L) { }    StatListNode(StatListNode *l, StatementNode *s) : statement(s), list(l) { }    Completion execute();  private:    StatementNode *statement;    StatListNode *list;  };  class AssignExprNode : public Node {  public:    AssignExprNode(Node *e) : expr(e) {}    KJSO evaluate();  private:    Node *expr;  };  class VarDeclNode : public Node {  public:    VarDeclNode(const UString *id, AssignExprNode *in);    KJSO evaluate();  private:    UString ident;    AssignExprNode *init;  };  class VarDeclListNode : public Node {  public:    VarDeclListNode(VarDeclNode *v) : list(0L), var(v) {}    VarDeclListNode(Node *l, VarDeclNode *v) : list(l), var(v) {}    KJSO evaluate();  private:    Node *list;    VarDeclNode *var;  };  class VarStatementNode : public StatementNode {  public:    VarStatementNode(VarDeclListNode *l) : list(l) {}    Completion execute();  private:    VarDeclListNode *list;  };  class BlockNode : public StatementNode {  public:    BlockNode(StatListNode *s) : statlist(s) {}    Completion execute();  private:    StatListNode *statlist;  };  class EmptyStatementNode : public StatementNode {  public:    EmptyStatementNode() { } // debug    Completion execute();  };  class ExprStatementNode : public StatementNode {  public:    ExprStatementNode(Node *e) : expr(e) { }    Completion execute();  private:    Node *expr;  };  class IfNode : public StatementNode {  public:    IfNode(Node *e, StatementNode *s1, StatementNode *s2)      : expr(e), statement1(s1), statement2(s2) {}    Completion execute();  private:    Node *expr;    StatementNode *statement1, *statement2;  };  class DoWhileNode : public StatementNode {  public:    DoWhileNode(StatementNode *s, Node *e) : statement(s), expr(e) {}    Completion execute();  private:    StatementNode *statement;    Node *expr;  };  class WhileNode : public StatementNode {  public:    WhileNode(Node *e, StatementNode *s) : expr(e), statement(s) {}    Completion execute();  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), stat(s) {}    Completion execute();  private:    Node *expr1, *expr2, *expr3;    StatementNode *stat;  };  class ForInNode : public StatementNode {  public:    ForInNode(Node *l, Node *e, StatementNode *s) :      init(0L), lexpr(l), expr(e), stat(s) {}    ForInNode(const UString *i, AssignExprNode *in, Node *e, StatementNode *s)      : ident(*i), init(in), lexpr(0L), expr(e), stat(s) {}    Completion execute();  private:    UString ident;    AssignExprNode *init;    Node *lexpr, *expr;    StatementNode *stat;  };  class ContinueNode : public StatementNode {  public:    ContinueNode() { }    ContinueNode(const UString *i) : ident(*i) { }    Completion execute();  private:    UString ident;  };  class BreakNode : public StatementNode {  public:    BreakNode() { }    BreakNode(const UString *i) : ident(*i) { }    Completion execute();  private:    UString ident;  };  class ReturnNode : public StatementNode {  public:    ReturnNode(Node *v) : value(v) {}    Completion execute();  private:    Node *value;  };  class WithNode : public StatementNode {  public:    WithNode(Node *e, StatementNode *s) : expr(e), stat(s) {}    Completion execute();  private:    Node *expr;    StatementNode *stat;  };  class CaseClauseNode: public Node {  public:    CaseClauseNode(Node *e, StatListNode *l) : expr(e), list(l) { }    KJSO evaluate();    Completion evalStatements();  private:    Node *expr;    StatListNode *list;  };  class ClauseListNode : public Node {  public:    ClauseListNode(CaseClauseNode *c) : cl(c), nx(0L) { }    ClauseListNode* append(CaseClauseNode *c);    KJSO evaluate() { /* should never be called */ return KJSO(); }    CaseClauseNode *clause() const { return cl; }    ClauseListNode *next() const { return nx; }  private:    CaseClauseNode *cl;    ClauseListNode *nx;  };  class CaseBlockNode: public Node {  public:    CaseBlockNode(ClauseListNode *l1, CaseClauseNode *d, ClauseListNode *l2)      : list1(l1), def(d), list2(l2) { }    KJSO evaluate() { /* should never be called */ return KJSO(); }    Completion evalBlock(const KJSO& input);  private:    ClauseListNode *list1;    CaseClauseNode *def;    ClauseListNode *list2;  };  class SwitchNode : public StatementNode {  public:    SwitchNode(Node *e, CaseBlockNode *b) : expr(e), block(b) { }    Completion execute();  private:    Node *expr;    CaseBlockNode *block;  };  class LabelNode : public StatementNode {  public:    LabelNode(const UString *l, StatementNode *s) : label(*l), stat(s) { }    Completion execute();  private:    UString label;    StatementNode *stat;  };  class ThrowNode : public StatementNode {  public:    ThrowNode(Node *e) : expr(e) {}    Completion execute();  private:    Node *expr;  };  class CatchNode : public StatementNode {  public:    CatchNode(UString *i, StatementNode *b) : ident(*i), block(b) {}    Completion execute();    Completion execute(const KJSO &arg);  private:    UString ident;    StatementNode *block;  };  class FinallyNode : public StatementNode {  public:    FinallyNode(StatementNode *b) : block(b) {}    Completion execute();  private:    StatementNode *block;  };  class TryNode : public StatementNode {  public:    TryNode(StatementNode *b, Node *c = 0L, Node *f = 0L)      : block(b), _catch((CatchNode*)c), _final((FinallyNode*)f) {}    Completion execute();  private:    StatementNode *block;    CatchNode *_catch;    FinallyNode *_final;  };  class ParameterNode : public Node {  public:    ParameterNode(const UString *i) : id(*i), next(0L) { }    ParameterNode *append(const UString *i);    KJSO evaluate();    UString ident() { return id; }    ParameterNode *nextParam() { return next; }  private:    UString id;    ParameterNode *next;  };  // inherited by ProgramNode  class FunctionBodyNode : public StatementNode {  public:      FunctionBodyNode(SourceElementsNode *s);      Completion execute();  protected:      SourceElementsNode *source;  };  class FuncDeclNode : public StatementNode {  public:    FuncDeclNode(const UString *i, ParameterNode *p, FunctionBodyNode *b)      : ident(*i), param(p), body(b) { }    Completion execute() { /* empty */ return Completion(); }    void processFuncDecl();  private:    UString ident;    ParameterNode *param;    FunctionBodyNode *body;  };  class FuncExprNode : public Node {  public:    FuncExprNode(ParameterNode *p, FunctionBodyNode *b)	: param(p), body(b) { }    KJSO evaluate();  private:    ParameterNode *param;    FunctionBodyNode *body;  };  class SourceElementNode : public StatementNode {  public:    SourceElementNode(StatementNode *s) { statement = s; function = 0L; }    SourceElementNode(FuncDeclNode *f) { function = f; statement = 0L;}    Completion execute();    virtual void processFuncDecl();    void deleteStatements();  private:    StatementNode *statement;    FuncDeclNode *function;  };  class SourceElementsNode : public StatementNode {  public:    SourceElementsNode(SourceElementNode *s1) { element = s1; elements = 0L; }    SourceElementsNode(SourceElementsNode *s1, SourceElementNode *s2)      { elements = s1; element = s2; }    Completion execute();    virtual void processFuncDecl();    void deleteStatements();  private:    SourceElementNode *element;    SourceElementsNode *elements;  };  class ProgramNode : public FunctionBodyNode {  public:    ProgramNode(SourceElementsNode *s) : FunctionBodyNode(s) { }    void deleteGlobalStatements();  };}; // namespace#endif

⌨️ 快捷键说明

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