mirror of https://github.com/zachjs/sv2v.git
coalesce tokens across nested macros
This commit is contained in:
parent
37355920e0
commit
fea5ff44eb
|
|
@ -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 ()
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
`define SIZE 4
|
||||
`define NESTED_SIZE `SIZE
|
||||
`define NAME op
|
||||
module t`NAME;
|
||||
initial $display(`SIZE'ha);
|
||||
initial $display(`NESTED_SIZE'ha);
|
||||
endmodule
|
||||
|
|
|
|||
Loading…
Reference in New Issue