aboutsummaryrefslogtreecommitdiff
path: root/cmd/vartan/parse.go
diff options
context:
space:
mode:
authorRyo Nihei <nihei.dev@gmail.com>2021-07-17 13:41:44 +0900
committerRyo Nihei <nihei.dev@gmail.com>2021-07-17 13:41:44 +0900
commit2d3fed9f2992a11ab76601484a735d5500d84dba (patch)
tree643e1995e7b012af1fc0ff48e3bcb1b0ec95489b /cmd/vartan/parse.go
parentAdd a line number to token error messages (diff)
downloadurubu-2d3fed9f2992a11ab76601484a735d5500d84dba.tar.gz
urubu-2d3fed9f2992a11ab76601484a735d5500d84dba.tar.xz
Improve syntax error messages
- Add a source file name to error messages. - Add a line that an error occurred at to error messages.
Diffstat (limited to 'cmd/vartan/parse.go')
-rw-r--r--cmd/vartan/parse.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/cmd/vartan/parse.go b/cmd/vartan/parse.go
index 8089c5e..ef22ff3 100644
--- a/cmd/vartan/parse.go
+++ b/cmd/vartan/parse.go
@@ -28,6 +28,24 @@ func init() {
}
func runParse(cmd *cobra.Command, args []string) (retErr error) {
+ defer func() {
+ v := recover()
+ if v != nil {
+ err, ok := v.(error)
+ if !ok {
+ retErr = fmt.Errorf("an unexpected error occurred: %v\n", v)
+ fmt.Fprintln(os.Stderr, retErr)
+ return
+ }
+
+ retErr = err
+ }
+
+ if retErr != nil {
+ fmt.Fprintln(os.Stderr, retErr)
+ }
+ }()
+
cgram, err := readCompiledGrammar(args[0])
if err != nil {
return fmt.Errorf("Cannot read a compiled grammar: %w", err)