internal Binary(NodeTag t, Node l, Node r) : base(t)
 {
     this.lhs = l; this.rhs = r;
 }
 internal Unary(NodeTag t, Node c)
     : base(t)
 {
     this.child = c;
 }
 public static Node MakeUnary(NodeTag tag, Node child)
 {
     return(new Unary(tag, child));
 }
        private void AssignExpression(Node dst, Node expr)
        {
            Leaf destination = dst as Leaf;

            regs[destination.Index] = expr;
        }
        // ==================================================================================
        //  End of Lexer class definition.
        // ==================================================================================

        //
        // Now the node factory methods
        //
        public static Node MakeBinary(NodeTag tag, Node lhs, Node rhs)
        {
            return(new Binary(tag, lhs, rhs));
        }