| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | /* * 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 interpreterimport (	"errors"	"fmt"	"devt.de/krotik/eliasdb/eql/parser")/*newRuntimeError creates a new RuntimeError object.*/func (rt *eqlRuntimeProvider) newRuntimeError(t error, d string, node *parser.ASTNode) error {	return &RuntimeError{rt.name, t, d, node, node.Token.Lline, node.Token.Lpos}}/*RuntimeError is a runtime related error*/type RuntimeError 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	Node   *parser.ASTNode // AST Node where the error occurred	Line   int             // Line of the error	Pos    int             // Position of the error}/*Error returns a human-readable string representation of this error.*/func (re *RuntimeError) Error() string {	ret := fmt.Sprintf("EQL error in %s: %v (%v)", re.Source, re.Type, re.Detail)	if re.Line != 0 {		return fmt.Sprintf("%s (Line:%d Pos:%d)", ret, re.Line, re.Pos)	}	return ret}/*Runtime related error types*/var (	ErrNotARegex        = errors.New("Value of operand is not a valid regex")	ErrNotANumber       = errors.New("Value of operand is not a number")	ErrNotAList         = errors.New("Value of operand is not a list")	ErrInvalidConstruct = errors.New("Invalid construct")	ErrUnknownNodeKind  = errors.New("Unknown node kind")	ErrInvalidSpec      = errors.New("Invalid traversal spec")	ErrInvalidWhere     = errors.New("Invalid where clause")	ErrInvalidColData   = errors.New("Invalid column data spec")	ErrEmptyTraversal   = errors.New("Empty traversal"))/*ResultError is a result related error (e.g. wrong defined show clause)*/type ResultError 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}/*Error returns a human-readable string representation of this error.*/func (re *ResultError) Error() string {	return fmt.Sprintf("EQL result error in %s: %v (%v)", re.Source, re.Type, re.Detail)}
 |