node.d
来自「Object-Oriented Programming With ANSI-C这」· D 代码 · 共 98 行
D
98 行
// abstract base classes for expression tree% NodeClass: Class Node: Object { void * next;% void sunder (_self);%- double exec (const _self);%+ void reclaim (const _self, Method how);%}% NodeClass Monad: Node { void * down;%}%prot#define down(x) (((struct Monad *)(x)) -> down)% NodeClass Dyad: Node { void * left; void * right;%}%prot#define left(x) (((struct Dyad *)(x)) -> left)#define right(x) (((struct Dyad *)(x)) -> right)// literals// new(Number(), value)% NodeClass Number: Node { double value;%}// symbol value references// new(Global(), constant-or-variable)// new(Parm(), function)% NodeClass Val: Monad {%}% NodeClass Global: Val {%}% NodeClass Parm: Val {%}// unary operations// new(Minus(), subtree)% NodeClass Unary: Monad {%}% NodeClass Minus: Unary {%}// symbol access// new(Assign(), var, right-subtree)// new(Builtin(), math, arg-subtree)// new(User(), fun, arg-subtree)% NodeClass Ref: Dyad {%}% NodeClass Assign: Ref {%}% NodeClass Builtin: Ref {%}% NodeClass User: Ref {%}// binary operations// new(Add(), left-subtree, right-subtree)// new(Sub(), left-subtree, right-subtree)// new(Mult(), left-subtree, right-subtree)// new(Div(), left-subtree, right-subtree)% NodeClass Binary: Dyad {%}% NodeClass Add: Binary {%}% NodeClass Sub: Binary {%}% NodeClass Mult: Binary {%}% NodeClass Div: Binary {%}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?