| 1646 | return nil |
| 1647 | } |
| 1648 | func (m *TriNode) Equal(n Node) bool { |
| 1649 | if m == nil && n == nil { |
| 1650 | return true |
| 1651 | } |
| 1652 | if m == nil && n != nil { |
| 1653 | return false |
| 1654 | } |
| 1655 | if m != nil && n == nil { |
| 1656 | return false |
| 1657 | } |
| 1658 | if nt, ok := n.(*TriNode); ok { |
| 1659 | if nt.Operator.T != m.Operator.T { |
| 1660 | return false |
| 1661 | } |
| 1662 | if len(m.Args) != len(nt.Args) { |
| 1663 | return false |
| 1664 | } |
| 1665 | for i, arg := range nt.Args { |
| 1666 | if !arg.Equal(m.Args[i]) { |
| 1667 | return false |
| 1668 | } |
| 1669 | } |
| 1670 | return true |
| 1671 | } |
| 1672 | return false |
| 1673 | } |
| 1674 | |
| 1675 | // Unary nodes |
| 1676 | // |