@@ -86,6 +86,11 @@ getLexerWarnings = do
8686 LexState' (LexState {warnings = ws}) _ <- getInput
8787 return ws
8888
89+ addLexerWarning :: LexWarning -> Parser ()
90+ addLexerWarning w = do
91+ LexState' ls@ LexState {warnings = ws} _ <- getInput
92+ setInput $! mkLexState' ls{warnings = w : ws}
93+
8994-- | Set Alex code i.e. the mode "state" lexer is in.
9095setLexerMode :: Int -> Parser ()
9196setLexerMode code = do
@@ -118,15 +123,16 @@ describeToken t = case t of
118123tokSym :: Parser (Name Position )
119124tokSym' , tokStr , tokOther :: Parser (SectionArg Position )
120125tokIndent :: Parser Int
121- tokColon , tokOpenBrace , tokCloseBrace :: Parser ()
126+ tokColon , tokCloseBrace :: Parser ()
127+ tokOpenBrace :: Parser Position
122128tokFieldLine :: Parser (FieldLine Position )
123129tokSym = getTokenWithPos $ \ t -> case t of L pos (TokSym x) -> Just (mkName pos x); _ -> Nothing
124130tokSym' = getTokenWithPos $ \ t -> case t of L pos (TokSym x) -> Just (SecArgName pos x); _ -> Nothing
125131tokStr = getTokenWithPos $ \ t -> case t of L pos (TokStr x) -> Just (SecArgStr pos x); _ -> Nothing
126132tokOther = getTokenWithPos $ \ t -> case t of L pos (TokOther x) -> Just (SecArgOther pos x); _ -> Nothing
127133tokIndent = getToken $ \ t -> case t of Indent x -> Just x; _ -> Nothing
128134tokColon = getToken $ \ t -> case t of Colon -> Just () ; _ -> Nothing
129- tokOpenBrace = getToken $ \ t -> case t of OpenBrace -> Just () ; _ -> Nothing
135+ tokOpenBrace = getTokenWithPos $ \ t -> case t of L pos OpenBrace -> Just pos ; _ -> Nothing
130136tokCloseBrace = getToken $ \ t -> case t of CloseBrace -> Just () ; _ -> Nothing
131137tokFieldLine = getTokenWithPos $ \ t -> case t of L pos (TokFieldLine s) -> Just (FieldLine pos s); _ -> Nothing
132138
@@ -138,7 +144,9 @@ fieldSecName :: Parser (Name Position)
138144fieldSecName = tokSym <?> " field or section name"
139145
140146colon = tokColon <?> " \" :\" "
141- openBrace = tokOpenBrace <?> " \" {\" "
147+ openBrace = do
148+ pos <- tokOpenBrace <?> " \" {\" "
149+ addLexerWarning (LexWarning LexBraces pos)
142150closeBrace = tokCloseBrace <?> " \" }\" "
143151
144152fieldContent :: Parser (FieldLine Position )
0 commit comments