presumable finished implementing types for process...

This commit is contained in:
Yehowshua Immanuel 2024-12-09 00:03:46 -05:00
parent 405d6ecc55
commit 43ae657a5b
2 changed files with 21 additions and 7 deletions

13
TODO.md
View file

@ -18,20 +18,23 @@
readable and correctable validation errors
- [ ] when writing simulator, must specify directions on cell ports
- [ ] in the <process>, why are we allowed to have <assign-stmt> before
and after the optional <switch> stmt?
and after the optional <switch> stmt? If the ordering here is
semantically significant, then modify AST to only have single
`[AssignStmt]` field and update parser behavior accordingly.
- [ ] inspect Chris's mini-RTLIL
- [ ] add RST grammar file to repo
- [ ] name parsers so that that we know where failures occured
- [ ] may want to also derive equality statements
- [x] replace both `pEol *> pMaybeWs` and `pEol <* pMaybeWs`
with `pEolAndAdvanceToNextNonWs`
- [ ] Check inline sequencing of whitespace parsers in do blocks.
- [x] Check inline sequencing of whitespace parsers in do blocks.
Terminating instances of `pWs` should be preceeded by `<*`
# Parser Development
- [x] Sync
- [ ] Process
- [ ] Module
- [x] Sync
- [ ] Process
- [ ] Rewrite `pWireStmt` and `pMemoryStmt` using do-notation...
- [ ] Module
# Parser Verification
- [ ] I think only EOL terminated parsers should be responsible

View file

@ -31,7 +31,8 @@ module RTLILParser.AST (
CellBodyStmt(..),
-- Processes
DestSigSpec(..), SrcSigSpec(..), AssignStmt(..),
Process(..), ProcStmt(..), ProcessBody(..), AssignStmt(..),
DestSigSpec(..), SrcSigSpec(..),
-- Switches
Switch(..), SwitchStmt(..), Case(..), CaseStmt(..), Compare(..),
@ -39,6 +40,8 @@ module RTLILParser.AST (
-- Syncs
Sync(..), SyncStmt(..), SyncType(..), UpdateStmt(..)
) where
import Text.Read (Lexeme(Ident))
@ -131,7 +134,15 @@ data CellBodyStmt = CellBodyParameter
deriving (Show)
-- Processes
-- data ProcessBody = ProcessBody [AssignStmt]
data Process = Process ProcStmt [AttrStmt] ProcessBody
deriving (Show)
data ProcStmt = ProcStmt Id deriving (Show)
data ProcessBody = ProcessBody
[AssignStmt]
Switch
[AssignStmt]
[Sync]
deriving (Show)
data AssignStmt = AssignStmt DestSigSpec SrcSigSpec
deriving (Show)
data DestSigSpec = DestSigSpec SigSpec deriving (Show)