Skip to content

Commit e1e435f

Browse files
committed
Remove unused AST values
1 parent b48161b commit e1e435f

File tree

4 files changed

+60
-5
lines changed

4 files changed

+60
-5
lines changed

asl/arm-mras-asl.cabal

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ test-suite test
3232
main-is: Test.hs
3333

3434
-- for now
35-
other-modules: ARM.MRAS.ASL.Parser
35+
other-modules: Recon
36+
, ARM.MRAS.ASL.Parser
3637
, ARM.MRAS.ASL.Parser.Lexer
3738
, ARM.MRAS.ASL.Parser.Parser
3839
, ARM.MRAS.ASL.Parser.ParserMonad

asl/src/ARM/MRAS/ASL/Parser/Parser.y

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,12 +270,10 @@ lexpr :: { LExpr }
270270
: '-' { LExprEmpty }
271271
| qualident { LExprId $1 }
272272
| lexpr '.' ident { LExprDot $1 $3 }
273-
| lexpr '.' '[' ident cpl_ident ']' { LExprDots $1 ($4 :| $5) }
274273
| lexpr '.' '<' ident cpl_ident '>' { LExprDots $1 ($4 :| $5) }
275274
| lexpr '[' csl_slice ']' { LExprSlice $1 $3 }
276275
| lexpr '<' csl_slice '>' { LExprSlice $1 $3 }
277276
| '<' csl_slice '>' { LExprConcat $2 }
278-
| '[' lexpr cpl_lexpr ']' { LExprBrack ($2 :| $3) }
279277
| '(' lexpr cpl_lexpr ')' { LExprParen ($2 :| $3) }
280278

281279
indented_block :: { NonEmpty Statement }

asl/src/ARM/MRAS/ASL/Parser/Syntax.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ data LExpr =
7474
| LExprDot LExpr Ident
7575
| LExprDots LExpr (NonEmpty Ident)
7676
| LExprSlice LExpr [Slice]
77-
| LExprConcat [Slice] -- there is only one instance of this in all of the public A64 ASL
78-
| LExprBrack (NonEmpty LExpr)
77+
| LExprConcat [Slice]
7978
| LExprParen (NonEmpty LExpr)
8079
deriving (Eq, Show, Generic, NFData)
8180

asl/test/Recon.hs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
{-# LANGUAGE ParallelListComp #-}
2+
{-# LANGUAGE TupleSections #-}
3+
4+
module Recon where
5+
6+
import ARM.MRAS
7+
import ARM.MRAS.ASL.Parser
8+
import ARM.MRAS.ASL.Parser.Lexer
9+
import ARM.MRAS.ASL.Parser.Parser
10+
import ARM.MRAS.ASL.Parser.ParserMonad
11+
import ARM.MRAS.ASL.Parser.Syntax
12+
import ARM.MRAS.ASL.Parser.Tokens
13+
14+
import Control.DeepSeq
15+
import Control.Lens
16+
import Control.Monad
17+
import Control.Monad.Except
18+
import Control.Monad.State
19+
import Data.List
20+
import Data.Monoid
21+
import System.IO
22+
import System.Exit
23+
import System.FilePath
24+
import System.Directory
25+
26+
27+
defChunks :: [String]
28+
defChunks = map _shared_ps_code (topoSort sharedps)
29+
30+
stmtChunks :: [String]
31+
stmtChunks = (base ++ fpsimd) ^.. traverse.(insn_classes.traverse._2 <> insn_ps).traverse.ps_code
32+
33+
parseDefsM :: Monad m => String -> StateT [String] (ExceptT PError m) [Definition]
34+
parseDefsM asl = StateT $ ExceptT . return . parseDefs asl
35+
36+
parseStmtsM :: Monad m => String -> StateT [String] (ExceptT PError m) [Statement]
37+
parseStmtsM asl = StateT $ \s -> ExceptT (return (fmap (, s) (parseStmts s asl)))
38+
39+
needle = "LExprDots"
40+
41+
recon :: IO ()
42+
recon = do
43+
r <- runExceptT . flip runStateT [] $ do
44+
liftIO (readFile "test/prelude.asl") >>= parseDefsM
45+
forM_ (topoSort sharedps) $ \ps -> do
46+
ast <- parseDefsM (_shared_ps_code ps)
47+
when (needle `isInfixOf` (show ast)) $ do
48+
liftIO . putStrLn $ "sharedps: " ++ _shared_ps_name ps
49+
forM_ (base ++ fpsimd) $ \insn -> do
50+
let pss = insn ^.. (insn_classes.traverse._2 <> insn_ps).traverse
51+
forM_ pss $ \ps -> do
52+
ast <- parseStmtsM (_ps_code ps)
53+
when (needle `isInfixOf` (show ast)) $ do
54+
liftIO . putStrLn $ "insn: " ++ _insn_file insn
55+
case r of
56+
Left err -> die (show err)
57+
Right _ -> return ()

0 commit comments

Comments
 (0)