mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-11 04:02:52 -06:00
Improve syntax error messages
Now you will get error messages like these:
example.gf:1:21:
Syntax error:
Unexpected token '}'.
Expected one of:
- '{'
- 'open'
- an identifier
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
module GF.Grammar.Lexer
|
||||
( Token(..), Posn(..)
|
||||
, P, runP, runPartial, token, lexer, getPosn, failLoc
|
||||
, isReservedWord
|
||||
, isReservedWord, invMap
|
||||
) where
|
||||
|
||||
import Control.Applicative
|
||||
@@ -134,7 +134,7 @@ data Token
|
||||
| T_Double Double -- double precision float literals
|
||||
| T_Ident Ident
|
||||
| T_EOF
|
||||
-- deriving Show -- debug
|
||||
deriving (Eq, Ord, Show) -- debug
|
||||
|
||||
res = eitherResIdent
|
||||
eitherResIdent :: (Ident -> Token) -> Ident -> Token
|
||||
@@ -224,6 +224,13 @@ resWords = Map.fromList
|
||||
]
|
||||
where b s t = (identS s, t)
|
||||
|
||||
invMap :: Map.Map Token String
|
||||
invMap = res
|
||||
where
|
||||
lst = Map.toList resWords
|
||||
flp = map (\(k,v) -> (v,showIdent k)) lst
|
||||
res = Map.fromList flp
|
||||
|
||||
unescapeInitTail :: String -> String
|
||||
unescapeInitTail = unesc . tail where
|
||||
unesc s = case s of
|
||||
|
||||
Reference in New Issue
Block a user