1 //
2 // Copyright 2024 CloudWeGo Authors
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 17 package expr
18 19 import (
20 "fmt"
21 )
22 23 // SyntaxError represents a syntax error in the expression.
24 type SyntaxError struct {
25 Pos int
26 Reason string
27 }
28 29 func newSyntaxError(pos int, reason string) *SyntaxError {
30 return &SyntaxError{
31 Pos: pos,
32 Reason: reason,
33 }
34 }
35 36 func (self *SyntaxError) Error() string {
37 return fmt.Sprintf("Syntax error at position %d: %s", self.Pos, self.Reason)
38 }
39 40 // RuntimeError is an error which would occure at run time.
41 type RuntimeError struct {
42 Reason string
43 }
44 45 func newRuntimeError(reason string) *RuntimeError {
46 return &RuntimeError{
47 Reason: reason,
48 }
49 }
50 51 func (self *RuntimeError) Error() string {
52 return "Runtime error: " + self.Reason
53 }
54