Commit fea5ff44 by Zachary Snow

coalesce tokens across nested macros

parent 37355920
......@@ -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 ()
......
`define SIZE 4
`define NESTED_SIZE `SIZE
`define NAME op
module t`NAME;
initial $display(`SIZE'ha);
initial $display(`NESTED_SIZE'ha);
endmodule
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment