Only "Token" and "Node" implement "SymbolLike", so "symbol.go" is needless, which must contain "Symbol" struct.
Create "SymbolLike" interface and "SymbolBase" struct.

They are compounded or implemented by "Token".
"Node" struct includes "Symbolbase" struct and implements "NodeLike" interface.
"Node.String()" and "Token.String()" return their string representation containing their IDs.
"TreeLike" has "Symbol" method which returns a symbol on the root of th tree.
Add "Tree" struct which implements "TreeLike" interface.