3.2 KiB
3.2 KiB
Fig Language - A Modern Scripting Language
Fig is a statically-typed, expression-oriented programming language designed for clarity, safety, and modern development practices. With features inspired by Go, Rust, and JavaScript, Fig aims to provide a productive development experience while maintaining strong type safety.
Features
🚀 Core Language Features
- Static typing with type inference - Strong typing with minimal annotations
- Modern control flow - Full
forloop support with proper scoping - First-class functions - Lambda expressions and closures
- Rich data structures - Structs, lists, maps, and tuples
- Memory safety - No null pointer exceptions, automatic memory management
🔧 Technical Highlights
- Three-level scoping for loops - Proper variable isolation in iterations
- Smart semicolon handling - Flexible statement termination with RAII guards
- Comprehensive error handling - Detailed error messages with source locations
- Clean C++ implementation - Modern C++23 with RAII and smart pointers
📁 Project Structure
Fig/
├── src/
│ ├── lexer.cpp # Lexical analysis
│ ├── parser.cpp # Syntax analysis
│ ├── evaluator.cpp # Interpreter/execution engine
│ └── value.cpp # Type system implementation
├── include/
│ ├── argparse
│ ├── magic_enum
│ ├── Ast # Abstract syntax tree definitions
│ ├── value.hpp # Type system header
│ ├── Value/ # Type system definitions
│ ├── ...
│ ├── AstPrinter.hpp # Ast printer
│ ├── context(_forward).hpp # Environment/Context system
│ ├── core.hpp # Core informations
│ ├── error.hpp # Exception system
│ ├── errorLog.hpp # Colored-Print error log
│ ├── fig_string.hpp # Fig UTF-8 string
│ ├── module.hpp # Package/Module system
│ ├── utils.hpp
│ ├── token.hpp # Token definitions
│ ├── lexer.hpp # Lexical analysis
│ ├── parser.hpp # Syntax analysis and AST
│ ├── evaluator.hpp # Interpreter and Control flows
│ ├── warning.hpp # STD-Warnings
├── ExampleCodes/ # Sample programs
├── .clang-format # Clang format styles
├── test.fig # Test file (dev)
├── LICENSE # Fig project license
├── xmake.lua # XMake configurations
└── Logo/ # Fig's Logo
Language Philosophy
Fig is designed around several core principles:
Clarity over cleverness - Code should be readable first
Safety by default - Prevent common errors at compile time
Modern ergonomics - Developer experience matters
Gradual learning - Simple to start, powerful when needed