mirror of https://github.com/zachjs/sv2v.git
pass through downstream compiler directives
This commit is contained in:
parent
6d79e0b491
commit
167c65db11
|
|
@ -68,7 +68,6 @@ convertDescription ports orig =
|
|||
Part _ _ Module _ _ _ _ -> True
|
||||
PackageItem _ -> True
|
||||
Package _ _ _ -> False
|
||||
Directive _ -> False
|
||||
|
||||
origIdents = execWriter (collectModuleItemsM regIdents orig)
|
||||
fixed = traverseModuleItems fixModuleItem orig
|
||||
|
|
|
|||
|
|
@ -98,5 +98,6 @@ piName (Decl (Variable _ _ ident _ _)) = Just ident
|
|||
piName (Decl (Param _ _ ident _)) = Just ident
|
||||
piName (Decl (ParamType _ ident _)) = Just ident
|
||||
piName (Import x y) = Just $ show $ Import x y
|
||||
piName (Export _) = Nothing
|
||||
piName (Comment _) = Nothing
|
||||
piName (Export _) = Nothing
|
||||
piName (Comment _) = Nothing
|
||||
piName (Directive _) = Nothing
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@ piName (Typedef _ ident ) = Just ident
|
|||
piName (Decl (Variable _ _ ident _ _)) = Just ident
|
||||
piName (Decl (Param _ _ ident _)) = Just ident
|
||||
piName (Decl (ParamType _ ident _)) = Just ident
|
||||
piName (Import _ _) = Nothing
|
||||
piName (Export _) = Nothing
|
||||
piName (Comment _) = Nothing
|
||||
piName (Import _ _) = Nothing
|
||||
piName (Export _) = Nothing
|
||||
piName (Comment _) = Nothing
|
||||
piName (Directive _) = Nothing
|
||||
|
|
|
|||
|
|
@ -174,7 +174,6 @@ traverseModuleItemsM mapper (Package lifetime name packageItems) = do
|
|||
_ -> error $ "redirected Package traverse failed: "
|
||||
++ show converted
|
||||
return $ Package lifetime name $ map (\(MIPackageItem item) -> item) items'
|
||||
traverseModuleItemsM _ (Directive str) = return $ Directive str
|
||||
|
||||
traverseModuleItems :: Mapper ModuleItem -> Mapper Description
|
||||
traverseModuleItems = unmonad traverseModuleItemsM
|
||||
|
|
@ -623,6 +622,8 @@ traverseExprsM' strat exprMapper = moduleItemMapper
|
|||
moduleItemMapper (Generate items) = do
|
||||
items' <- mapM (traverseNestedGenItemsM genItemMapper) items
|
||||
return $ Generate items'
|
||||
moduleItemMapper (MIPackageItem (Directive c)) =
|
||||
return $ MIPackageItem $ Directive c
|
||||
moduleItemMapper (MIPackageItem (Comment c)) =
|
||||
return $ MIPackageItem $ Comment c
|
||||
moduleItemMapper (MIPackageItem (Import x y)) =
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ data Description
|
|||
= Part [Attr] Bool PartKW (Maybe Lifetime) Identifier [Identifier] [ModuleItem]
|
||||
| PackageItem PackageItem
|
||||
| Package (Maybe Lifetime) Identifier [PackageItem]
|
||||
| Directive String -- currently unused
|
||||
deriving Eq
|
||||
|
||||
instance Show Description where
|
||||
|
|
@ -53,7 +52,6 @@ instance Show Description where
|
|||
where
|
||||
bodyStr = indent $ unlines' $ map show items
|
||||
show (PackageItem i) = show i
|
||||
show (Directive str) = str
|
||||
|
||||
data PackageItem
|
||||
= Typedef Type Identifier
|
||||
|
|
@ -62,6 +60,7 @@ data PackageItem
|
|||
| Import Identifier (Maybe Identifier)
|
||||
| Export (Maybe (Identifier, Maybe Identifier))
|
||||
| Decl Decl
|
||||
| Directive String
|
||||
| Comment String
|
||||
deriving Eq
|
||||
|
||||
|
|
@ -79,6 +78,7 @@ instance Show PackageItem where
|
|||
show (Export Nothing) = "export *::*";
|
||||
show (Export (Just (x, y))) = printf "export %s::%s;" x (fromMaybe "*" y)
|
||||
show (Decl decl) = show decl
|
||||
show (Directive str) = str
|
||||
show (Comment c) =
|
||||
if elem '\n' c
|
||||
then "// " ++ show c
|
||||
|
|
|
|||
|
|
@ -884,6 +884,10 @@ handleDirective (posOrig, _, _, strOrig) len = do
|
|||
env <- gets lsEnv
|
||||
tempInput <- alexGetInput
|
||||
let dropUntilNewline = removeUntil "\n" tempInput 0
|
||||
let passThrough = do
|
||||
rest <- takeUntilNewline
|
||||
let str = '`' : directive ++ rest
|
||||
tok Spe_Directive (posOrig, ' ', [], strOrig) (length str)
|
||||
|
||||
condStack <- gets lsCondStack
|
||||
if any (/= CurrentlyTrue) condStack
|
||||
|
|
@ -891,9 +895,18 @@ handleDirective (posOrig, _, _, strOrig) len = do
|
|||
then alexMonadScan
|
||||
else case directive of
|
||||
|
||||
"default_nettype" -> dropUntilNewline
|
||||
"timescale" -> dropUntilNewline
|
||||
|
||||
"celldefine" -> passThrough
|
||||
"endcelldefine" -> passThrough
|
||||
|
||||
"unconnected_drive" -> passThrough
|
||||
"nounconnected_drive" -> passThrough
|
||||
|
||||
"default_nettype" -> passThrough
|
||||
"pragma" -> passThrough
|
||||
"resetall" -> passThrough
|
||||
|
||||
"__FILE__" -> do
|
||||
tokPos <- toTokPos posOrig
|
||||
currFile <- gets lsCurrFile
|
||||
|
|
|
|||
|
|
@ -293,6 +293,7 @@ systemIdentifier { Token Id_system _ _ }
|
|||
number { Token Lit_number _ _ }
|
||||
string { Token Lit_string _ _ }
|
||||
time { Token Lit_time _ _ }
|
||||
directive { Token Spe_Directive _ _ }
|
||||
|
||||
"(" { Token Sym_paren_l _ _ }
|
||||
")" { Token Sym_paren_r _ _ }
|
||||
|
|
@ -775,6 +776,7 @@ NonDeclPackageItem :: { [PackageItem] }
|
|||
| "export" "*" "::" "*" ";" { [Export Nothing] } -- "Nothing" being no restrictions
|
||||
| ForwardTypedef ";" { $1 }
|
||||
| TimeunitsDeclaration { $1 }
|
||||
| Directive { [Directive $1] }
|
||||
ForwardTypedef :: { [PackageItem] }
|
||||
: "typedef" Identifier { [] }
|
||||
| "typedef" "enum" Identifier { [] }
|
||||
|
|
@ -785,6 +787,9 @@ TimeunitsDeclaration :: { [PackageItem] }
|
|||
| "timeunit" Time "/" Time ";" { [] }
|
||||
| "timeprecision" Time ";" { [] }
|
||||
|
||||
Directive :: { String }
|
||||
: directive { tokenString $1 }
|
||||
|
||||
PackageImportItems :: { [(Identifier, Maybe Identifier)] }
|
||||
: PackageImportItem { [$1] }
|
||||
| PackageImportItems "," PackageImportItem { $1 ++ [$3] }
|
||||
|
|
|
|||
|
|
@ -378,6 +378,7 @@ data TokenName
|
|||
| Sym_amp_amp_amp
|
||||
| Sym_lt_lt_lt_eq
|
||||
| Sym_gt_gt_gt_eq
|
||||
| Spe_Directive
|
||||
| Unknown
|
||||
| MacroBoundary
|
||||
deriving (Show, Eq)
|
||||
|
|
|
|||
Loading…
Reference in New Issue