#parser #ast #compiler

fnotation

A simple lower-house syntax for programming language experimentation

12 releases (5 breaking)

0.11.2 Oct 11, 2025
0.11.1 Oct 11, 2025
0.10.2 Sep 17, 2025
0.9.0 Sep 15, 2025
0.6.1 Aug 19, 2025

#745 in Programming languages

Download history 116/week @ 2025-12-10 70/week @ 2025-12-17 79/week @ 2025-12-31 90/week @ 2026-01-07 29/week @ 2026-01-14 99/week @ 2026-01-21 156/week @ 2026-01-28 288/week @ 2026-02-04 101/week @ 2026-02-11 111/week @ 2026-02-18 150/week @ 2026-02-25 208/week @ 2026-03-04 327/week @ 2026-03-11 255/week @ 2026-03-18 256/week @ 2026-03-25

1,080 downloads per month

MIT license

40KB
1.5K SLoC

F-notation

documentation

example of use

F-notation is a lower house syntax for programming language experimentation. The idea is that it's a slightly richer version of s-expressions that can be used as the base for many different programming languages. The "f" stands for either flexible or functional, or any other flattering word that starts with "f". This is a library for parsing f-notation.

This package used to be called fexplib, but "f-expression" has a pre-existing meaning. It seems like fnotation is a thing in Prolog (meaning "function notation"), but I think this isn't too well-established.

Another reason for the change is that "notation" is a better word for "a collection of conventions for representing a formal language in textual form", while "expression" really refers to the syntactic class of bits of an abstract syntax tree that can be evaluated to a value (vis. the expression vs. statement distinction).

This is the Rust implementation of f-notation. At some point I might make some implementations in other languages and add them to this repository as well.

Inspirations

Dependencies

~2.5MB
~30K SLoC