nearley VS IParse

Compare nearley vs IParse and see what are their differences.

nearley

📜🔜🌲 Simple, fast, powerful parser toolkit for JavaScript. (by kach)

IParse

IParse: an interpreting parser written in C++ (by FransFaase)
SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
surveyjs.io
featured
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
nearley IParse
3 5
3,552 11
- -
0.0 3.3
8 months ago 5 months ago
JavaScript C++
MIT License GNU General Public License v3.0 only
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.

nearley

Posts with mentions or reviews of nearley. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-09-04.
  • Writing a C compiler in 500 lines of Python
    4 projects | news.ycombinator.com | 4 Sep 2023
    While I suspect I would learn more writing a tokenizer and parsing logic myself I find grammars much easier to read and maintain.

    ANTLR is pretty good and is supported across several languages and something I had previously used for some quick Elasticsearch query syntax munging in Python. It also means you can often start from an already existing grammar.

    The JS version of ANTLR didn't seem to work for me so for the SQL/JSONPath stuff ended up using the Moo lever and Nearly parser which was rather pleasant. https://nearley.js.org

  • Parser generators vs. handwritten parsers: surveying major languages in 2021
    11 projects | news.ycombinator.com | 21 Aug 2021
  • Applicative Parsing
    1 project | news.ycombinator.com | 1 Mar 2021
    Parsers in nearley.js [1] are written in a very readable EBNF-like DSL; then they get desugared down to a JS file that's a lot like your snippet.

    [1] https://github.com/kach/nearley

IParse

Posts with mentions or reviews of IParse. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-12-13.
  • I Wrote a String Type
    1 project | news.ycombinator.com | 9 Sep 2023
    Nice library with many features. But I do not always understand the focus on memory usage. I guess that the reason behind this is that less memory allocations, have a positive effect on execution times. In a parser, where you often have to compare identifiers, it is a good idea to put all strings for identifiers into a unique pointer with the help of a hash table.

    In my interpreting parser [1] I use a hexa hash tree [2] for storing identifiers. It is not very memory efficient, but very fast. It turns every string (from the input buffer) into a unique pointer for that string pointing to a copy of the string. In this way comparing string (identifiers) is equivalent to comparing pointers.

    The idea of the hexa hash tree is that is a tree where each node has sixteen child nodes. Which node is selected is based on a step wise evaluated hash function that first takes the lower four bytes of the string, and after reaching the end of the string, the higher four bytes of the string. The nodes often taken up more memory space than the strings themselves.

    [1] https://github.com/FransFaase/IParse/

    [2] https://github.com/FransFaase/IParse/blob/master/software/Id...

  • Noulith: A new programming language currently used by the Advent of Code leader
    11 projects | news.ycombinator.com | 13 Dec 2022
  • The Tools I Use to Write Books (2018)
    3 projects | news.ycombinator.com | 16 May 2022
    I wrote a tool that can process a number of MarkDown files with fragments of C code and put all those fragments in the right order to produce a file that can be compiled. It is grammar based and works with manipulating Abstract Syntax Trees, so I guess, it could be adapted for different programming languages. See: https://github.com/FransFaase/IParse#markdownc
  • C++ Compile Time Parser Generator
    2 projects | news.ycombinator.com | 5 Dec 2021
    Interesting. I have not looked into the code, but I wonder whether it is a compiler, or just an interpreter, e.g. it converts the grammar into some internal representation that is executed by an interpreter or virtual machine. I started worked on an interpreting parser in C many years ago. And later also made Java, C++ and JavaScript version of it. For the JavaScript implementation, see: https://fransfaase.github.io/ParserWorkshop/Online_inter_par... For the C++ version, see: https://github.com/FransFaase/IParse
  • Parser generators vs. handwritten parsers: surveying major languages in 2021
    11 projects | news.ycombinator.com | 21 Aug 2021
    I implemented an unparse function in IParse, which is not a parser generator, but a parser that interprets a grammar. See for example https://github.com/FransFaase/IParse/blob/master/software/c_... where symbols starting with a back slash are a kind of white space terminals during the unparse. For example, \inc stands for incrementing the indentation where \dec decrements it. The \s is used to indicate that at given location a space should be included.

What are some alternatives?

When comparing nearley and IParse you can also consider the following projects:

PEG.js - PEG.js: Parser generator for JavaScript

aoc - My Advent of Code solutions.

Jison - Bison in JavaScript.

Crate - CrateDB is a distributed and scalable SQL database for storing and analyzing massive amounts of data in near real-time, even with complex queries. It is PostgreSQL-compatible, and based on Lucene.

Chevrotain - Parser Building Toolkit for JavaScript

ruby - The Ruby Programming Language

markdown-it - Markdown parser, done right. 100% CommonMark support, extensions, syntax plugins & high speed

ctpg - Compile Time Parser Generator is a C++ single header library which takes a language description as a C++ code and turns it into a LR1 table parser with a deterministic finite automaton lexical analyzer, all in compile time.

xml2js - XML to JavaScript object converter.

wefx - Basic WASM graphics package to draw to an HTML Canvas using C. In the style of the gfx library

parse5 - HTML parsing/serialization toolset for Node.js. WHATWG HTML Living Standard (aka HTML5)-compliant.

pp - PP - Generic preprocessor (with pandoc in mind) - macros, literate programming, diagrams, scripts...