coalesce tokens across nested macros

This commit is contained in:
Zachary Snow
2019-10-11 22:53:08 -04:00
parent 37355920e0
commit fea5ff44eb
2 changed files with 11 additions and 1 deletions
+9 -1
View File
@@ -540,7 +540,9 @@ lexFile includePaths env path = do
(show $ length $ lsSpecStack finalState)
else
Right (finalToks, lsEnv finalState)
where finalToks = coalesce $ reverse $ lsToks finalState
where
finalToks = coalesce $ combineBoundaries $
reverse $ lsToks finalState
where
setEnv = do
modify $ \s -> s
@@ -569,6 +571,12 @@ coalesce (Token t1 str1 pn1 : Token MacroBoundary _ _ : Token t2 str2 pn2 : rest
immediatelyFollows = apn2 == foldl alexMove apn1 str1
coalesce (x : xs) = x : coalesce xs
combineBoundaries :: [Token] -> [Token]
combineBoundaries [] = []
combineBoundaries (Token MacroBoundary s p : Token MacroBoundary _ _ : rest) =
combineBoundaries $ Token MacroBoundary s p : rest
combineBoundaries (x : xs) = x : combineBoundaries xs
-- invoked by alexMonadScan
alexEOF :: Alex ()
alexEOF = return ()