From 2b7402f85dfa4e986125139af0f6d4fa7cd67abb Mon Sep 17 00:00:00 2001 From: Julien Moutinho <julm+symantic-parser@sourcephile.fr> Date: Wed, 3 Feb 2021 00:22:34 +0100 Subject: [PATCH] doc: polish --- ReadMe.md | 4 ++-- ToDo.md | 2 -- src/Symantic/Parser/Machine/Optimize.hs | 2 +- test/Golden.hs | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 2770cb3..b95279f 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,10 +1,10 @@ ### Main differences with respect to `ParsleyHaskell` -- Extensible primitive grammar combinators, including their underlying optimization passes, by leveraging reciprocal injections between a tagless-final encoding of syntaxes (aka. type-classes) and a corresponding tagful-initial encoding to pattern-match syntaxes (aka. data-instances). This enable a very principled, yet flexible source code. Moreover `DefaultSignatures` are supplied to succinctly derive new semantics (aka. type-class-instances) using automatic `trans`formations. +- Extensible primitive grammar combinators, including their underlying optimization passes, by leveraging reciprocal injections between a tagless-final encoding of syntaxes (aka. type-classes) and a corresponding tagged-initial encoding to pattern-match syntaxes (aka. data-instances). This enables a very principled, yet flexible source code. Moreover `DefaultSignatures` are supplied to succinctly derive new semantics (aka. type-class-instances) using automatic `trans`formations. - Error messages based upon the farthest input position reached (not yet implemented in `ParsleyHaskell`). -- Minimal input length checks ("horizon" checks) required for a successful parsing are factorized using a different static analysis than `ParsleyHaskell`'s "piggy bank" which I've not understood well. This analyis can see beyond calls to subroutines, but maybe `ParsleyHaskell`'s analysis can also be adjusted to do the same. Both analysis are not well documented and studied. +- Minimal input length checks ("horizon" checks) required for a successful parsing are factorized using a different static analysis than `ParsleyHaskell`'s "piggy bank" which I've not understood well. This analysis can see beyond calls to subroutines, but maybe `ParsleyHaskell`'s analysis can also be adjusted to do the same. Both analysis are not well documented and studied. - No dependency upon GHC plugins: `lift-plugin` and `idioms-plugin`, because those are plugins hence introduce a bit of complexity in the build processes using this parser, but most importantly they are experimental and mostly cosmetics, since they only enable a cleaner usage of the parsing combinators, by lifting Haskell code in `pure` to integrate the `TemplateHaskell` needed. I do not understand them that much and do not feel confortable to maintain them come the day that their authors abandon them. diff --git a/ToDo.md b/ToDo.md index 39d9822..8a4f40a 100644 --- a/ToDo.md +++ b/ToDo.md @@ -2,8 +2,6 @@ - [ ] Golden tests using more complex grammars. -- [ ] Error messages also based upon: [A Parsing Machine for Parsing Expression Grammars with Labeled Failures](https://dl.acm.org/doi/10.1145/2851613.2851750) - - [ ] Concerning the unusual `pure :: H.Term pure a -> repr a`, it may be acceptable to use `H.Term` only internally. diff --git a/src/Symantic/Parser/Machine/Optimize.hs b/src/Symantic/Parser/Machine/Optimize.hs index 65c0744..b497fe6 100644 --- a/src/Symantic/Parser/Machine/Optimize.hs +++ b/src/Symantic/Parser/Machine/Optimize.hs @@ -36,7 +36,7 @@ pattern Instr :: Typeable comb => pattern Instr x <- (unSomeInstr -> Just x) -- ** Type 'SomeInstr' --- | Some 'Instr'uction existantialized over the actual instruction symantic class. +-- | Some 'Instr'uction existentialized over the actual instruction symantic class. -- Useful to handle a list of 'Instr'uctions -- without requiring impredicative quantification. -- Must be used by pattern-matching diff --git a/test/Golden.hs b/test/Golden.hs index 4a819b3..3cda9f1 100644 --- a/test/Golden.hs +++ b/test/Golden.hs @@ -1,7 +1,7 @@ {-# LANGUAGE NoMonomorphismRestriction #-} {-# LANGUAGE Rank2Types #-} {-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE UnboxedTuples #-} +{-# LANGUAGE UnboxedTuples #-} -- For TH splices {-# OPTIONS_GHC -Wno-unused-local-binds #-} -- For TH splices {-# OPTIONS_GHC -Wno-unused-matches #-} -- For TH splices module Golden where -- 2.47.2