mirror of
https://github.com/zachjs/sv2v.git
synced 2026-09-07 11:51:28 +02:00
support for single-expr implicit dimensions
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user