IParse VS cant

Compare IParse vs cant and see what are their differences.

IParse

IParse: an interpreting parser written in C++ (by FransFaase)
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
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
IParse cant
5 11
11 58
- -
3.3 9.1
6 months ago about 1 month ago
C++ Scheme
GNU General Public License v3.0 only GNU Affero General Public License v3.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.

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.

cant

Posts with mentions or reviews of cant. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-07.
  • Advent of Code 2023 in your language
    10 projects | /r/ProgrammingLanguages | 7 Dec 2023
  • Calculate the difference and intersection of any two regexes
    4 projects | news.ycombinator.com | 11 Sep 2023
    That was one of the short examples in Norvig's Python program-design course for Udacity. https://github.com/darius/cant/blob/master/library/regex-gen... (I don't have the Python handy.)
  • Squeezing a sokoban game into 10 lines of Haskell
    4 projects | news.ycombinator.com | 24 Feb 2023
    > figure out a way to do upward movement that doesn’t require annoying special casing. If you figure it out, don’t tell me since it means I’ll have to make more levels.

    Don't read this, then: https://github.com/darius/cant/blob/master/examples/games/20...

    As long as I'm commenting, here are some links to other console Sokobans I thought were fun (listed in the source code to mine). The sed one is nuts -- I had no idea it could do that: https://github.com/darius/cant/blob/master/examples/games/20...

  • Noulith: A new programming language currently used by the Advent of Code leader
    11 projects | news.ycombinator.com | 13 Dec 2022
    I've done AoC using my own language before. As a task it's at a sweet spot for finding weaknesses in the language/library/implementation: real and varied enough to exercise your system, small chunks of work, lots of code to compare yours to, with fun and competitive juices.

    The first time I did it it forced me to fix some major problems. My language would still be a handicap for me in the state it's in (though I did get on the leaderboard a couple times using it).

    fwiw: https://github.com/darius/cant (haven't done this year's so far)

  • What language and why? ;)
    7 projects | /r/adventofcode | 27 Nov 2022
    I've used my own hobby language Cant before, for a couple reasons: it's meant to be enjoyable to code in (at least for me), and tackling random problems like this is a good way to drive some improvements to it.
  • Gleam v0.25 released with a new approach to fixing callback hell
    1 project | /r/ProgrammingLanguages | 25 Nov 2022
    Also similar: the 'for' expression in Cant (search for "syntax: for").
  • UnixBench is the original BYTE Unix benchmark suite
    2 projects | news.ycombinator.com | 1 Oct 2022
    Darius Bacon wrote a version of this in https://github.com/darius/cant/blob/master/library/factoring... where the "frontier" of active riders is stored in a hash table rather than a bin heap, which is almost certainly a more efficient approach. But he's not doing the bitmaps.
  • Multiple assignment and tuple unpacking improve Python code readability
    4 projects | news.ycombinator.com | 8 May 2022
    Thank you!

    I dislike style nazis too, e.g. carping when Peter Norvig's code won't pass PEP 8.

    I'm just leery of the expected cost in this kind of case. It can go on working for years until some new complication or some change in the ecosystem makes it suddenly create a really weird problem. Or when you want to try moving to a fancy new Python implementation, you find you have this friction. Matter of judgement where some chance of such messes is paid for by what it can do for you. (Of course when it's less "load bearing" the balance shifts.) With https://coverage.readthedocs.io/en/stable/ for example, it used bytecode hacks to do something you couldn't do otherwise, and that's unlikely to mess you up.

    I have had old C programs go crazy years later in a really hard to debug way because newer compilers may interpret your code like your ex-wife's divorce lawyer (as Kragen put it, iirc). Back in the day a lot of us thought we had a different kind of relationship with C compilers, and it'd be fine to code to that informal social contract. (Just a loose analogy.)

    I'm piddling away at https://github.com/darius/cant these days. (Some of the motivation was feeling too confined by Python, actually.) No Wasm, but I'm happy it exists! I tried to make a system like it 20 years ago (Idel) and gave up too soon.

  • Any comprehensive list of programming use case for evaluating a language ?
    2 projects | /r/ProgrammingLanguages | 16 Jan 2022
    Agreed. I used a few Rosetta Code problems in https://github.com/darius/cant/tree/master/examples and https://github.com/darius/cant/tree/master/library, but Rosetta is mostly things I don't care about.
  • Denigma is an AI that explains code in understandable English . Test any code language on Denigma and give us your feedback!
    2 projects | /r/altprog | 12 Dec 2021
    Just for fun I tried it on my own toy language that nobody but me uses -- going to the limit in nicheness. E.g. Project Oiler problem #1 -- it's very wrong, but no shame in that.

What are some alternatives?

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

aoc - My Advent of Code solutions.

async-wormhole

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.

byte-unixbench - Automatically exported from code.google.com/p/byte-unixbench

ruby - The Ruby Programming Language

lambdanative - LambdaNative is a cross-platform development environment written in Scheme, supporting Android, iOS, BlackBerry 10, OS X, Linux, Windows, OpenBSD, NetBSD, FreeBSD and OpenWrt.

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.

UnPack.jl - `@pack!` and `@unpack` macros

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

schism - A self-hosting Scheme to WebAssembly compiler

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

lunatic - Lunatic is an Erlang-inspired runtime for WebAssembly