Skip to content

theSalted/slox

Repository files navigation

slox

Swift

Swift Implementation of a Lox Interpreter.

Lox is a dynamically typed and turin complete programmimng language.

Note

This implementation have achieved 100% of Lox's main specification. And couple challenge specification. I have plan to work on a Swift based DSL that builds on top of this project; and a compiled version of Lox with a lower level lanaguge. I consider Slox as done.

This project follows the book Crafting Interpreters written by Bob Nystrom.

Note

This project sometimes deviate from offical implementation in the book (the interpreter not the language). For better conformance with Swift feature and standard paractice. I also made an effort to make this project more extensible, since I intend to use this as foundation for future project.

Screenshot 2024-06-20 at 5 10 14 AM

Progress

  • Scanner
    • \**\ style comments
    • Comprehensive Tests
  • Abstract Syntax Tree
    • Code generator
    • Cli tool
    • Generation from JSON
    • AST Printer
    • Pretty Printer
    • Essential types
    • Basic Tests
    • Comprehensive Tests
  • Parser
    • Basic expression
    • Extended expressions (comma operator, ternary operator ?:)
    • Error productions to handle each binary operator appearing without a left-hand operand
    • Statement
    • Error recovery
    • Basic Tests
    • Comprehensive Tests
  • Interpreter
    • Basic expression
    • Statements
    • States
    • Scoping
    • Control Flows
    • Break and Continue
    • Functions
    • Foreign/Native Function
    • Classes
    • Runtime Entities (Callable, LoxClass, LoxFunction, & LoxInstance)
    • Inheritance
    • Expression support for REPL mode
    • Integration Tests / Lox Scripts
  • Resolver
    • Static Analysis
    • Top-level return
    • Undefined Variable
    • Local Scope variable declaration

Reference

About

Swift Implementation of Lox Interpreter

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages