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 interpreter
- import (
- "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)
- }
|