| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | /* * EliasDB * * Copyright 2016 Matthias Ladkau. All rights reserved. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */package parserimport (	"errors"	"fmt")/*newParserError creates a new ParserError object.*/func (p *parser) newParserError(t error, d string, token LexToken) error {	return &Error{p.name, t, d, token.Lline, token.Lpos}}/*Error models a parser related error*/type Error struct {	Source string // Name of the source which was given to the parser	Type   error  // Error type (to be used for equal checks)	Detail string // Details of this error	Line   int    // Line of the error	Pos    int    // Position of the error}/*Error returns a human-readable string representation of this error.*/func (pe *Error) Error() string {	var ret string	if pe.Detail != "" {		ret = fmt.Sprintf("Parse error in %s: %v (%v)", pe.Source, pe.Type, pe.Detail)	} else {		ret = fmt.Sprintf("Parse error in %s: %v", pe.Source, pe.Type)	}	if pe.Line != 0 {		return fmt.Sprintf("%s (Line:%d Pos:%d)", ret, pe.Line, pe.Pos)	}	return ret}/*Parser related error types*/var (	ErrUnexpectedEnd            = errors.New("Unexpected end")	ErrLexicalError             = errors.New("Lexical error")	ErrUnknownToken             = errors.New("Unknown term")	ErrImpossibleNullDenotation = errors.New("Term cannot start an expression")	ErrImpossibleLeftDenotation = errors.New("Term can only start an expression")	ErrUnexpectedToken          = errors.New("Unexpected term"))
 |