func rhsCase(l lexer.Lexer, tok string) (syms.SymbolID, error) { if tok == "" { return syms.ERROR, errors.New("empty rhs identifier") } symbols := l.GetSymbolSet() sid, err := symbols.GetByName(tok) if err == nil { return sid, nil } lt := len(tok) if isIdentName(tok) { return l.Ident(tok[1 : lt-1]), nil } else if isOperatorName(tok) { return l.Operator(tok[1 : lt-1]), nil } if tok == "" || !tokenRe.MatchString(tok) { return syms.ERROR, fmt.Errorf("%s is not a valid rhs identifier", tok) } sid, err = symbols.Add(tok, false) return sid, err }