parsley
Fast Parse
parsley | Fast Parse | |
---|---|---|
2 | 4 | |
161 | 1,079 | |
- | 0.3% | |
7.8 | 4.6 | |
3 days ago | 6 days ago | |
Scala | Scala | |
BSD 3-clause "New" or "Revised" License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
parsley
-
How do I remove the forward reference error in my parser? (20 lines)
Or alternatively my own https://github.com/j-mie6/parsley for a more Haskell-style library - it has a wiki that discusses a lot of the main ideas, including how to deal with Def/Val/lazy val
-
What do I need to start writing an Extension or Template Haskell?
Depends on your existing knowledge of Haskell and stuff like monads, applicatives, etc. I haven't gotten around to writing a tutorial for Parser Combinators yet (I'd actually like to write a book about them at some point) in Haskell, but I do have this wiki here ( https://github.com/j-mie6/Parsley/wiki/Guide-to-Parser-Combinators ) for my parser combinator library in Scala, that might be of some help. A Haskell version of a lot of the later material there can be found in this paper https://dl.acm.org/doi/10.1145/3471874.3472984. The paper assumes some familiarity with Parser Combinators, the wiki does not (but is written in Scala): it's the resource I use to teach my 2nd year undergrads about Parser Combinators for their compilers project. It doesn't talk about monads/applicatives at all. I'm more than happy to answer any questions you have about either of those two.
Fast Parse
-
How do I remove the forward reference error in my parser? (20 lines)
Perhaps use Li Haoyi's fastparse instead? https://github.com/com-lihaoyi/fastparse
-
Parse slightly dirty, poorly escaped XML
You might want to adapt Li Haoyi’s XML parser for fastparse.
-
-🎄- 2021 Day 18 Solutions -🎄-
Mostly a mess of pattern matching. I really need to make some generic tree utilities. Haven't been able to find a decent parser combinator that works in Scala 3 (I usually use fastparse which depends heavily on Scala 2 macros, and scala-parser-combinators works in Scala 3, but I've had a lot of trouble getting it to not be too greedy), so I used the state monad from cats to parse at the bottom of the file, which I think turned out fairly nice.
-
Parser generators vs. handwritten parsers: surveying major languages in 2021
Agreed! I would say that parser combinators are the sweet spot and the right choice in most cases.
Scala has them as well, e.g.: https://com-lihaoyi.github.io/fastparse/
And the good thing is, you don't have to learn a completely new language/syntax, you can use the host language's syntax and you have full IDE support as well.
What are some alternatives?
Apache Spark - Apache Spark - A unified analytics engine for large-scale data processing
Parboiled2 - A macro-based PEG parser generator for Scala 2.10+
scala.meta - Library to read, analyze, transform and generate Scala programs
Scala Parser Combinators - simple combinator-based parsing for Scala. formerly part of the Scala standard library, now a separate community-maintained module
feel-scala - FEEL parser and interpreter written in Scala
atto - friendly little parsers
scallion - LL(1) parser combinators in Scala
Scopt - command line options parsing for Scala
Kaitai Struct - Kaitai Struct: declarative language to generate binary data parsers in C++ / C# / Go / Java / JavaScript / Lua / Nim / Perl / PHP / Python / Ruby
decline - A composable command-line parser for Scala.
Scallop - a simple Scala CLI parsing library
CLIST - Command Line Interface Scala Toolkit