instaparse VS orgdown

Compare instaparse vs orgdown and see what are their differences.

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
instaparse orgdown
7 60
2,708 -
- -
6.0 -
30 days ago -
Clojure
Eclipse Public License 1.0 -
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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.

instaparse

Posts with mentions or reviews of instaparse. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-07-08.
  • Chumsky, a Rust parser-combinator library with error recovery
    8 projects | news.ycombinator.com | 8 Jul 2022
    Caveats: I've used nom in anger, chumsky hardly at all, and tree-sitter only for prototyping. I'm using it for parsing a DSL, essentially a small programming language.

    The essential difference between nom/chomsky and tree-sitter is that the former are libraries for constructing parsers out of smaller parsers, whereas tree-sitter takes a grammar specification and produces a parser. This may seem small at first, but is a massive difference in practice.

    As far as ergonomics go, that's a rather subjective question. On the surface, the parser combinator libraries seem easier to use. They integrate well with the the host language, so you can stay in the same environment. But this comes with a caveat: parser combinators are a functional programming pattern, and Rust is only kind of a functional language, if you treat it juuuuust right. This will make itself known when your program isn't quite right; I've seen type errors that take up an entire terminal window or more. It's also very difficult to decompose a parser into functions. In the best case, you need to write your functions to be generic over type constraints that are subtle and hard to write. (again, if you get this wrong, the errors are overwhelming) I often give up and just copy the code. I have at times believed that some of these types are impossible to write down in a program (and can only exist in the type inferencer), but I don't know if that's actually true.

    deep breath

    Tree-sitter's user interface is rather different. You write your grammar in a javascript internal dsl, which gets run and produces a json file, and then a code generator reads that and produces C source code (I think the codegen is now written in rust). This is a much more roundabout way of getting to a parser, but it's worth it because: (1) tree-sitter was designed for parsing programming languages while nom very clearly was not, and (2) the parsers it generates are REALLY GOOD. Tree-sitter knows operator precedence, where nom cannot do this natively (there's a PR open for the next version: https://github.com/Geal/nom/pull/1362) Tree-sitter's parsing algorithm (GLR) is tolerant to recursion patterns that will send a parser combinator library off into the weeds, unless it uses special transformations to accommodate them.

    It might sound like I'm shitting on nom here, but that's not the goal. It's a fantastic piece of work, and I've gotten a lot of value from it. But it's not for parsing programming languages. Reach for nom when you want to parse a binary file or protocol.

    As for chumsky: the fact that it's a parser combinator library in Rust means that it's going to be subject to a lot of the same issues as nom, fundamentally. That's why I'm targeting tree-sitter next.

    There's no reason tree-sitter grammars couldn't be written in an internal DSL, perhaps in parser-combinator style (https://github.com/engelberg/instaparse does this). That could smooth over a lot of the rough edges.

  • Langdev in Clojure
    2 projects | /r/Clojure | 28 Jun 2022
    Sure, you can use https://github.com/Engelberg/instaparse to create parser for any language you want, or simply create DSL in basic clojure types, like vectors.
  • Formal Specification and Programmatic Parser for Org-mode
    9 projects | /r/emacs | 10 Jan 2022
    Enter org-parser! It is indeed such a thing implemented already! Remember the magical parser I mentioned above? It is already implemented here Engelberg/instaparse too (in a Lisp)! org-parser is built on top of it by providing a formal specification for org-mode in the EBN form. Any proof that org-parser works? Indeed, there is the celebrated organice which is built on top of it. Kudos for 200ok-ch!
  • Casual Parsing in JavaScript
    5 projects | news.ycombinator.com | 19 Aug 2021
    You might enjoy checking out Instaparse, a Clojure library. Its project page reads, “What if context-free grammars were as easy to use as regular expressions?”

    It’s not over-promising, either. I went from never having heard of it before to getting complete and correct parse trees of some ancient JSP Expression Language in about 20 minutes. Most of that time was spent typing in the BNF description that I could find only in an image.

    https://github.com/Engelberg/instaparse

  • Parsing Tools
    5 projects | /r/ProgrammingLanguages | 22 Apr 2021
    Instaparse sounds pretty close to what you're looking for assuming you're ok being limited to context-free grammars.
  • I toyed with some ideas from various languages and concocted a Frankenstein which might not live for long. Come see and critique!
    1 project | /r/ProgrammingLanguages | 2 Apr 2021
    It is in EBNF, with some alternate conventions. It follows the syntax found in here, which I think is pretty easy to get behind.
  • Advent of Code 2020 Day 19 Monster Messages in Clojure (rest vs. next, empty sequence vs. nil)
    1 project | /r/Clojure | 23 Dec 2020
    Another way to solve it is to load the grammar directly into instaparse, specify the start rule :0 and count the successful applications of the parser to the messages:

orgdown

Posts with mentions or reviews of orgdown. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-01-20.
  • Orgdown – A lightweight markup language similar to Markdown
    1 project | news.ycombinator.com | 2 Mar 2024
  • Notes on Emacs Org Mode
    3 projects | news.ycombinator.com | 20 Jan 2024
    There are two reasons why I call Org mode standardized.

    > I imagine there aren't really various flavors of Org Mode, but that doesn't make it standardized.

    All the implementations that call themselves org-mode follow the conventions set by the canonical implementation - the Emacs org-mode. While this may not sound like a good reason to call it standardized, the practical implication is a vast difference from what you get with various markdown flavors. In the latter case, the only way to make sure that your markdown is correct, is to test it with the target implementation.

    The second reason is that there is an actual effort to standardize org-mode - called Orgdown [1]. Org-mode is already more or less uniform across implementations. This effort tries to write it down as a reference. Markdown has a similar effort called CommonMark. But if you want to know why it's different, you have to look at the history of why it isn't called 'Standard Markdown'.

    [1] https://gitlab.com/publicvoit/orgdown

  • How to combine daily journal with general database of people, places, things, etc.
    3 projects | /r/datacurator | 10 Dec 2023
    And yes, at least my setup fulfills all of your requirements and much more. For starters, I can add tags, date- and timestamps everywhere, generate "agenda" views for days/weeks/months/... which collects all those time-related items and visualizes them, I can link emails/urls/... and links to files which I tag as well, I can search through search strings or regex to find meta-data on files/notes/events/... and it's all in the most versatile file format possible: plain UTF-8 text files containing simple orgdown syntax, the most beautifully designed lightweight markup language (LML) there is IMHO.
  • orgmunge: A Python package to read, modify and write an Org tree
    2 projects | /r/orgmode | 2 Jul 2023
    Are you aware of orgdown?
  • Reading org files.
    7 projects | /r/orgmode | 2 Jun 2023
    If you want to parse Orgdown files yourself, expect to invest some time in setting up a testing environment.
  • Self hosted cross platform notes application
    5 projects | /r/selfhosted | 5 Apr 2023
    I think we've got a misunderstanding here. Text files (in this case in orgdown syntax format) are files that contain the information in its original form: characters, words, sentences. So you only need a software that lets you open a text file to view it. If you want to modify the information stored in the text files, you need an application that lets you modify text files. In case of orgdown, you can find options on https://gitlab.com/publicvoit/orgdown/-/blob/master/doc/Tool-Support.org or choose any non-syntax-specific editor of your choice.
  • Markdown to orgmode without breaking links?
    2 projects | /r/orgmode | 26 Mar 2023
    So the links are working in Markdown? So Markdown-export is working and your issue starts with the conversion from Markdown to Orgdown?
  • Whats the big thing with org mode?
    4 projects | /r/emacs | 13 Mar 2023
    Well, the difference is that Orgdown, the syntax of Org mode for GNU Emacs is a Lightweight markup language while HTML is a more complex markup language.
  • Note Taking on Emacs vs Other applications
    3 projects | /r/emacs | 24 Feb 2023
    Since your notes are in orgdown format, you may use any compatible app that understands to read and probably write orgdown. One of them is GNU Emacs with its org-mode.
  • Wanted: A nice looking recent file dialog
    6 projects | /r/emacs | 20 Feb 2023
    I'm thinking of a screen that pops up when booting Emacs that only shows the files I was working on recently in large font (maybe as buttons to click on). The file extension should be hidden, so that I may use it with Orgdown files that have long, descriptive file names (most probably within the same directory).

What are some alternatives?

When comparing instaparse and orgdown you can also consider the following projects:

rakudo - 🦋 Rakudo – Raku on MoarVM, JVM, and JS

github-orgmode-tests - This is a test project where you can explore how github interprets Org-mode files

parser - String parser combinators

zonote - Cross-platform desktop note-taking app. Sticky notes with Markdown and Tabs. All in one .txt file.

chumsky - Write expressive, high-performance parsers with ease.

logseq - A local-first, non-linear, outliner notebook for organizing and sharing your personal knowledge base. Use it to organize your todo list, to write your journals, or to record your unique life.

tree-sitter-org - Org grammar for tree-sitter

SingleFileZ - Web Extension to save a faithful copy of an entire web page in a self-extracting ZIP file

parser-combinators - Parser combinators.

zettelkasten-mode - Zettelkasten note-taking for org-mode

rosie

tft-interop - data interoperability across tools for thought