| package parser |
| |
| import ( |
| "fmt" |
| |
| "github.com/hashicorp/hil/ast" |
| "github.com/hashicorp/hil/scanner" |
| ) |
| |
| type ParseError struct { |
| Message string |
| Pos ast.Pos |
| } |
| |
| func Errorf(pos ast.Pos, format string, args ...interface{}) error { |
| return &ParseError{ |
| Message: fmt.Sprintf(format, args...), |
| Pos: pos, |
| } |
| } |
| |
| // TokenErrorf is a convenient wrapper around Errorf that uses the |
| // position of the given token. |
| func TokenErrorf(token *scanner.Token, format string, args ...interface{}) error { |
| return Errorf(token.Pos, format, args...) |
| } |
| |
| func ExpectationError(wanted string, got *scanner.Token) error { |
| return TokenErrorf(got, "expected %s but found %s", wanted, got) |
| } |
| |
| func (e *ParseError) Error() string { |
| return fmt.Sprintf("parse error at %s: %s", e.Pos, e.Message) |
| } |
| |
| func (e *ParseError) String() string { |
| return e.Error() |
| } |