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 + -
显示快捷键?