artichoke Language Wiki
artichoke is a modern, statically-typed programming language designed to
satisfy my personal preferences and requirements for programming, combining the
low-level control and powerful modern features like a robust type system,
generics, integrated error handling, and a clean, ergonomic syntax.
The goal of artichoke is to provide a language that is simple, safe, and
productive for programming, eliminating common pitfalls without sacrificing
performance or control.
Using This Wiki
Start with Getting Started to build and run the parser. Continue with the language guide and control-flow chapters for deeper dives into syntax and semantics. The reference section contains the formal grammar and token catalog, while the sample programs illustrate how features fit together. Report any gaps or inconsistencies via issues or patches.
Quick Links
- Getting Started: Getting Started
- Language Guide: Language Overview
- Control Flow: Control Flow
- Expressions & Operators: Expressions & Operators
- Pattern Unwrapping: Patterns
- Grammar Reference: Grammar Reference
- Token Reference: Token Reference
- Architecture Overview: Architecture
- Sample Programs: Sample Programs
Core Philosophy & Features
artichoke is built around a few core principles to create a safer, more
productive programming experience:
- Explicitness: Type conversions and error handling are explicit.
- Safety: Non-nullable pointers, a robust type system, and deterministic resource management are prioritized.
- Unambiguous Design: A grammar designed for fast, single-pass parsing and clear error reporting.
- Modern Ergonomics: Features like generics, defer, and a clean module system reduce boilerplate and improve readability.
The language includes a powerful generic type system, first-class error handling, a full suite of control flow statements (including match), a true module system, and compile-time reflection.
Project Status
artichoke is currently in the early implementation phase. The front-end
infrastructure is not yet defined but contains a simple program for printing and
visualizing the generated AST, development has shifted now toward semantic
validation.
- Lexical Analysis: Full tokenizer implementation.
- Syntactic Analysis: Handwritten Recursive Descent + Pratt Expression Parser.
- AST Infrastructure: Complete Abstract Syntax Tree with Graphviz and String-Graph based visualization support.
- Semantic Analysis (In Progress): Multi-pass symbol table generation and type checking.
- Backend: Code generation and optimization.
Contributing
The artichoke project is hosted on a personal, self-hosted Gitea instance. If
you are interested in contributing, you have two options:
- Request an Account: Please contact support@artichoke.dev to request an account on the Gitea instance.
- Submit Patches: Alternatively, you can send patches or diffs directly to the same email address.
In all cases, proper attribution will be given for your contributions in the source files and/or the project wiki.
License
This project is licensed under the GNU Affero General Public License v3.0. The full license text can be found in the LICENSE file in this repository.