func (t Token) String(s *syms.SymbolSet) string { sp := s.Get(t.ID) if sp.IsTerm { return fmt.Sprintf("term:`%s`:`%s`", sp.Name, t.Str) } return fmt.Sprintf("var:`%s`:`%s`", sp.Name, t.Str) }
func (rule Rule) String(syms syms.SymbolSet, dotPos int) string { var b bytes.Buffer b.WriteString(fmt.Sprintf("%s → ", syms.Get(rule.LHS).Name)) for i, sid := range rule.RHS { if i == dotPos { b.WriteString(fmt.Sprintf("•")) } b.WriteString(fmt.Sprintf("%s ", syms.Get(sid).Name)) } if len(rule.RHS) == dotPos { b.WriteString(fmt.Sprintf("• ")) } return b.String() }