commit ca6c672c9fae1ffff7ca3b8189386c7c4add280e Author: Tristan Smith Date: Sat Sep 14 22:58:54 2024 -0400 initial commit diff --git a/01.png b/01.png new file mode 100644 index 0000000..87b5e6c Binary files /dev/null and b/01.png differ diff --git a/02.png b/02.png new file mode 100644 index 0000000..591b1cd Binary files /dev/null and b/02.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..a56944b --- /dev/null +++ b/index.html @@ -0,0 +1,181 @@ + + + + + + Fiddle Programming Language + + + + + + +
+

Fiddle Programming Language

+
+
+
+ Lexer Screenshot + Lexer Tests Screenshot +
+ +

Overview

+

Fiddle is a small programming language inspired by various languages, designed to help learn language implementation concepts in Rust.

+

I have, off and on throughout the last 15 or so years attempted to learn a programming language of some sort. I could always get through the basics, but would get stuck with any real-world projects. And I wouldn't know who to turn to even if I knew where to start.

+

So I started learning Rust and really like it. I've been following some tutorials and the Crafting Interpreters site as guides for this very problematic programming language.

+

I like aspects of so many programming languages, but I don't really like any of them, so I always found it hard to pick one and stick with it. But I had the same problem playing World of Warcraft, too.

+

So I, like many of you, decided to make a hobby programming language to see what may be able to be done with it.

+ +

Features

+ + +

Getting Started

+

To run the REPL:

+
cargo run
+

To run a fiddle script:

+
cargo run path/to/script.fddl
+ +

Examples

+
##! This is a sample module
+
+module math {
+
+    ### Computes the square of a number
+    func square(x) => x ^ 2;
+}
+
+define $number := 5;
+print(`The square of $number is ${math.square($number)}`);
+
+

(At least for right now.)

+ +

License

+

This project is licensed under the MIT License.

+ +
+

Notes and Next Steps

+
    +
  • Added first new set of tokens and features, added the first lexer tests.
  • +
  • parser module is a placeholder.
  • +
  • interpreter module is a placeholder.
  • +
  • Implement a more robust error handling mechanism instead of using stderr.
  • +
  • Implement string interpolation (backticks with $variable)
  • +
  • Continue to expand tests to cover all new syntax and features.
  • +
+
+ +

Running the Project

+

Make sure your project compiles and the tests pass:

+
cargo build
+cargo test
+
+ +
+

Contact

+
+
+ + + \ No newline at end of file