57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
|
// Code generated by gocc; DO NOT EDIT.
|
||
|
|
||
|
package errors
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/awalterschulze/gographviz/internal/token"
|
||
|
)
|
||
|
|
||
|
type ErrorSymbol interface {
|
||
|
}
|
||
|
|
||
|
type Error struct {
|
||
|
Err error
|
||
|
ErrorToken *token.Token
|
||
|
ErrorSymbols []ErrorSymbol
|
||
|
ExpectedTokens []string
|
||
|
StackTop int
|
||
|
}
|
||
|
|
||
|
func (e *Error) String() string {
|
||
|
w := new(bytes.Buffer)
|
||
|
fmt.Fprintf(w, "Error")
|
||
|
if e.Err != nil {
|
||
|
fmt.Fprintf(w, " %s\n", e.Err)
|
||
|
} else {
|
||
|
fmt.Fprintf(w, "\n")
|
||
|
}
|
||
|
fmt.Fprintf(w, "Token: type=%d, lit=%s\n", e.ErrorToken.Type, e.ErrorToken.Lit)
|
||
|
fmt.Fprintf(w, "Pos: offset=%d, line=%d, column=%d\n", e.ErrorToken.Pos.Offset, e.ErrorToken.Pos.Line, e.ErrorToken.Pos.Column)
|
||
|
fmt.Fprintf(w, "Expected one of: ")
|
||
|
for _, sym := range e.ExpectedTokens {
|
||
|
fmt.Fprintf(w, "%s ", sym)
|
||
|
}
|
||
|
fmt.Fprintf(w, "ErrorSymbol:\n")
|
||
|
for _, sym := range e.ErrorSymbols {
|
||
|
fmt.Fprintf(w, "%v\n", sym)
|
||
|
}
|
||
|
return w.String()
|
||
|
}
|
||
|
|
||
|
func (e *Error) Error() string {
|
||
|
w := new(bytes.Buffer)
|
||
|
fmt.Fprintf(w, "Error in S%d: %s, %s", e.StackTop, token.TokMap.TokenString(e.ErrorToken), e.ErrorToken.Pos.String())
|
||
|
if e.Err != nil {
|
||
|
fmt.Fprintf(w, ": %+v", e.Err)
|
||
|
} else {
|
||
|
fmt.Fprintf(w, ", expected one of: ")
|
||
|
for _, expected := range e.ExpectedTokens {
|
||
|
fmt.Fprintf(w, "%s ", expected)
|
||
|
}
|
||
|
}
|
||
|
return w.String()
|
||
|
}
|