update grammar::root_node to return a root_node token
update grammar::root_node to return a root_node token
update grammar::edge_name to return an edge_name token
update grammar::ascending_edge_part to return an ascending_edge_part
update grammar::descending_edge_part to return an descending_edge_part token
update grammar::vertical_edge_part to return an vertical_edge_part token
update grammar::horizontal_edge to return a horizontal_edge token
create helper function to reduce duplication when parsing name-chars
refactor ascii_tree::tokenize to use the grammar object
consolidate redundant tests