grpc-ecosystem/grpc-gateway · error
expected %q but got %q
Error message
expected %q but got %q
What it means
Token-mismatch error from parser.accept: the next token in the path template did not equal the expected literal terminal (one of '/', '*', '**', '.', '=', '{', '}'). Note accept also tolerates '/' as a stand-in for any expected literal separator; anything else triggers this error naming the expected and actual tokens.
Source
Thrown at internal/httprule/parse.go:252
// You can also use "/", "*", "**", "." or "=" as valid values.
const (
typeIdent = termType("ident")
typeLiteral = termType("literal")
typeEOF = termType("$")
)
// eof is the terminal symbol which always appears at the end of token sequence.
const eof = "\u0000"
// accept tries to accept a token in "p".
// This function consumes a token and returns it if it matches to the specified "term".
// If it doesn't match, the function does not consume any tokens and return an error.
func (p *parser) accept(term termType) (string, error) {
t := p.tokens[0]
switch term {
case "/", "*", "**", ".", "=", "{", "}":
if t != string(term) && t != "/" {
return "", fmt.Errorf("expected %q but got %q", term, t)
}
case typeEOF:
if t != eof {
return "", fmt.Errorf("expected EOF but got %q", t)
}
case typeIdent:
if err := expectIdent(t); err != nil {
return "", err
}
case typeLiteral:
if err := expectPChars(t); err != nil {
return "", err
}
default:
return "", fmt.Errorf("unknown termType %q", term)
}
p.tokens = p.tokens[1:]
p.accepted = append(p.accepted, t)View on GitHub (pinned to a58a4436a3)
Solutions
- Fix the HttpRule path template so the expected separator character appears where the parser needs it.
- Check for missing '/', '=', or braces and for typos in the template.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at internal/httprule/parse.go:252 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of grpc-ecosystem/grpc-gateway@a58a4436a3 (2026-09-02).
Data as JSON: /api/errors/52f4e7dd3ccca864.
Report an issue: GitHub.