slow but steady progress on parser

This commit is contained in:
Yehowshua Immanuel 2024-11-17 20:18:37 -05:00
parent d4a047e528
commit 4dda3ec33d
2 changed files with 30 additions and 1 deletions

View file

@ -20,7 +20,7 @@ haskellPackages.mkDerivation {
isExecutable = true;
enableSeparateDataOutput = true;
libraryHaskellDepends = haskellDeps;
executableHaskellDepends = haskellDeps;
executableHaskellDepends = haskellPackages.base;
homepage = "https://github.com/JoyOfHardware/haskellator#readme";
license = pkgs.lib.licenses.gpl3Only;
mainProgram = "rtlil-parse";

View file

@ -1,4 +1,33 @@
-- this parser largely references:
-- https://github.com/YosysHQ/yosys/blob/111b747d2797238eadf541879848492a9d34909a/docs/source/yosys_internals/formats/rtlil_text.rst
module Haskellator(a) where
import Text.Parsec
import Text.Parsec.String (Parser)
-- https://github.com/YosysHQ/yosys/blob/111b747d2797238eadf541879848492a9d34909a/frontends/rtlil/rtlil_lexer.l#L88C1-L88C17
nonws :: Parser Char
nonws = noneOf " \t\r\n"
pPublicId :: Parser String
pPublicId = char '\\' *> many1 nonws
pAutogenId :: Parser String
pAutogenId = char '$' *> many1 nonws
decimalDigit :: Parser Char
decimalDigit = oneOf "0123456789"
binaryDigit :: Parser Char
binaryDigit = oneOf "01xzm-"
-- an integer can be positive or negative
pInteger :: Parser Int
pInteger = read <$> (pNegInt <|> pPosInt)
where
pIntAtom = many1 decimalDigit
pNegInt = char '-' *> pIntAtom
pPosInt = pIntAtom
a :: Int
a = 3