-
nimly - Lexer Generator and Parser Generator as a Library in Nim.
With nimly, you can make lexer/parser by writing definition in formats like lex/yacc. nimly generates lexer and parser by using macro in compile-time, so you can use nimly not as external tool of your program but as a library.
-
npeg - parsing expression grammars in nim
NPeg is a pure Nim pattern matching library. It provides macros to compile patterns and grammars (PEGs) to Nim procedures which will parse a string and collect selected parts of the input.K
-
lilt parser generator
Lilt is a content-free parser generator. It accepts a specification and returns a parser based on that specification. Lilt specifications look very similar to Backus-Naur form, but have extra syntax in order to be a parser generator rather than just a grammar specification.
-
std/lexbase - This module implements a base object of a lexer with efficient buffer handling.
-
hparse - Collection of parser utilities for nim - compile/runtime parser generator.
Collection of various utilities related to parsing, ranging from statically typed wrapper on top of scanf to full parser generator (with support for EBNF notation, tree actions, template rules, compile/runtime parsing and automatic parse tree generation)
-
honeycomb Honeycomb is a parser combinator library written in pure Nim. It's designed to be simple, straightforward, and easy to expand, while relying on zero dependencies from outside of Nim's standard library.
-
lrparser An SLR library parser for Nim
-
Tree-sitter wrappers
-
htsparse has all grammar sources precompiled and comes with higher-level wrappers (enum,
kind
proc, indexing for subnodes via[]
etc.)Grammars are available for the following languages:
-
treesitter downloads and compiles grammars on-demand, API is based on wrapping generated parser code.
Grammars are available for the following languages:
- Agda
- Bash
- C / C++ / C# / CSS
- Go
- Haskell, HTML
- Java, Javascript
- OCaml
- PHP, Python
- Ruby, Rust
- Scala
- Typescript
-
-
std/parsesql - sql
-
hcparse - Higher-level bindings for libclang in nim.
-
protobuf-nim - Protobuf implementation in pure Nim that leverages the power of the macro system to not depend on any external tools
-
yaml - NimYAML is a pure YAML implementation for Nim. It is able to read from and write to YAML character streams, and to serialize from and construct to native Nim types. It exclusively supports YAML 1.2.
-
std/xmlparser, std/parsexml - xml # What is the difference?
-
std/json - json
-
std/parsecsv - csv
-
std/sexp S-expressions parser
- photon jit - A JIT Assembler for Nim
- catnip - A library for runtime code generation (runtime assembler e.g. for JIT recompilers.)
- nimoric Oric emulator written in Nim
- nimes NimES: NES Emulator in Nim
- gbemulator GameBoy emulator written in Nim
- vcpu A virtual machine for code obfuscation
- nim-lang implements register-based VM for nimscript.
Examples of language implementation in nim.
- nim-lang itself - compiler is written entirely in nim
- japl - JAPL is an interpreted, dynamically-typed, garbage-collected and minimalistic programming language with C- and Java-like syntax.
- arturo - Simple, modern and portable interpreted programming language for efficient scripting
- spry - A Smalltalk and Rebol inspired language implemented as an AST interpreter in Nim
- project site
- more articles
- make a lisp implementation in nim
- two implementations of lox language from https://craftinginterpreters.com/
- hayago - hayago is a small, fast, embeddable, statically typed scripting language, written in Nim. Its syntax is inspired by Nim itself.
- project site
- Development paused in favor of tsuki
- min is a functional, concatenative programming language with a minimalist syntax, a small but practical standard library, and an advanced REPL. All packed in about 1MB*.
- tsuki (jap. 月, moon) is a lightweight, dynamically typed, modular, embeddable scripting language for Nim, inspired by Lua, Ruby, and Nim itself.
- vitamin Vitamin is a general-purpose programming language with a rich type system, clear semantics, and great flexibility. Vitamin will give you ultimate power when you need it, and won't get in your way when you don't.
- wolf-lang A simple, lightweight modern Lisp-like language made in Nim
- candyscript A minimal single-line programming language for writing web servers and restAPIs
- nael An experimental language, based on the stack-oriented programming language by the name of Factor.
- ajl A simple whitespace-sensitive transpile to the C++ programming language
- vaja Väja is a dynamic interpreted language inspired by Elixir, Lua, Python, Nim and Monkey.
- fes Compile a Forth like programming language (+ some small additions) to 6502 Assembly (specifically for the NES (Nintendo Entertainment System).
- pipelines An experimental programming language for data flow
- Flori a low fat programming language for system/application with region.
- Nim0 Nim0 is a toy one-pass compiler for a limited subset of the Nim language, targetting a 32-bit RISC CPU. Compiled Nim0 programs can be executed in the RISC emulator. All this in 5 heavily-documented sources, totalling less than 4k LOC. It is a port of Niklaus Wirth's Oberon-0 compiler as described in his book Compiler construction (included in the package), cross-referenced in the sources, that you can follow while reading the book.
- Let's Build a Compiler, by Jack Crenshaw Nim version of the https://compilers.iecc.com/crenshaw/ -- fifteen-part series, written from 1988 to 1995, is a non-technical introduction to compiler construction.
- gene-new Gene - a general purpose language
- nondescript Nondescript is a nim implementation of lox (see craftinginterpreters.com) with large deviations.
- panther The panther language is a language made for exploitations. It's main focus is minimal code size through code size optimizations and compiling directly to a shellcode (position independent code).
- Peon Peon is a simple, functional, async-first programming language with a focus on correctness and speed
Typo report:
Section "Examples", "implementatin" -> "implementation"