mirror of https://github.com/zachjs/sv2v.git
support for single-expr implicit dimensions
This commit is contained in:
parent
d7b36a033b
commit
e8ed885f2c
|
|
@ -355,8 +355,11 @@ Dimensions :: { [Range] }
|
|||
: {- empty -} { [] }
|
||||
| DimensionsNonEmpty { $1 }
|
||||
DimensionsNonEmpty :: { [Range] }
|
||||
: Range { [$1] }
|
||||
| DimensionsNonEmpty Range { $1 ++ [$2] }
|
||||
: Dimension { [$1] }
|
||||
| DimensionsNonEmpty Dimension { $1 ++ [$2] }
|
||||
Dimension :: { Range }
|
||||
: Range { $1 }
|
||||
| "[" Expr "]" { (simplify $ BinOp Sub $2 (Number "1"), Number "0") }
|
||||
|
||||
DeclAsgns :: { [(Identifier, Expr)] }
|
||||
: DeclAsgn { [$1] }
|
||||
|
|
|
|||
|
|
@ -239,9 +239,15 @@ takeType (DTIdent tn : rest) = (Alias tn, rest)
|
|||
takeType rest = (Implicit, rest)
|
||||
|
||||
takeRanges :: [DeclToken] -> ([Range], [DeclToken])
|
||||
takeRanges (DTRange r : rest) = (r : rs, rest')
|
||||
where (rs, rest') = takeRanges rest
|
||||
takeRanges rest = ([], rest)
|
||||
takeRanges [] = ([], [])
|
||||
takeRanges (token : tokens) =
|
||||
case token of
|
||||
DTRange r -> (r : rs, rest )
|
||||
DTBit s -> (asRange s : rs, rest )
|
||||
_ -> ([] , token : tokens)
|
||||
where
|
||||
(rs, rest) = takeRanges tokens
|
||||
asRange s = (simplify $ BinOp Sub s (Number "1"), Number "0")
|
||||
|
||||
-- TODO: entrypoints besides `parseDTsAsDeclOrAsgn` should disallow `DTAsgnNBlk`
|
||||
-- Note: matching DTAsgnNBlk too is a bit of a hack to allow for tripLookahead
|
||||
|
|
|
|||
Loading…
Reference in New Issue