This commit is contained in:
Tristan Smith 2024-09-14 23:17:31 -04:00
parent ca6c672c9f
commit 8b4009fba1
2 changed files with 15 additions and 9 deletions

BIN
03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- implement highlight.js soon --> <!-- implement highlight.js soon -->
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Fiddle Programming Language</title> <title>fddl programming language</title>
<!-- Google Fonts --> <!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css?family=Roboto:400,700|Source+Code+Pro" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Roboto:400,700|Source+Code+Pro" rel="stylesheet">
<!-- Styles --> <!-- Styles -->
@ -107,24 +107,27 @@
</head> </head>
<body> <body>
<header> <header>
<h1>Fiddle Programming Language</h1> <h1>fddl</h1>
</header> </header>
<main> <main>
<section class="images"> <section class="images">
<img src="01.png" alt="Lexer Screenshot"> <img src="01.png" alt="Lexer Screenshot">
<img src="02.png" alt="Lexer Tests Screenshot"> <img src="02.png" alt="Lexer Tests Screenshot">
<img src="03.png" alt="REPL Screenshot">
</section> </section>
<h2>Overview</h2> <h2>Overview</h2>
<p>Fiddle is a small programming language inspired by various languages, designed to help learn language implementation concepts in Rust.</p> <p>fddl is a small programming language inspired by various languages, designed to help learn language implementation concepts in <a href="https://rust-lang.org">Rust</a>.</p>
<p>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.</p> <p>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.</p>
<p>So I started learning Rust and really like it. I've been following some tutorials and the <a href="http://craftinginterpreters.com/">Crafting Interpreters</a> site as guides for this very problematic programming language.</p> <p>So I started learning Rust and really like it. I've been following some tutorials and the <a href="http://craftinginterpreters.com/">Crafting Interpreters</a> site as guides for this very problematic programming language.</p>
<p>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.</p> <p>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.</p>
<p>So I, like many of you, decided to make a hobby programming language to see what may be able to be done with it.</p> <p>So I, like many of you, decided to make a hobby programming language to see what may be able to be done with it.</p>
<br />
<p>The fact that I have a REPL working in this language is nothing short of amazing to me. It's fucking magic.</p>
<h2>Features</h2> <h2>Features</h2>
<ul> <ul>
<li>Custom syntax with unique operators and keywords</li> <li>Custom syntax with unique (and possibly deranged) operators and keywords</li>
<li>Documentation comments using <code>#</code>, similar to Rust's style</li> <li>Documentation comments using <code>#</code>, similar to Rust's style</li>
<li>Lexer and parser built from scratch in Rust</li> <li>Lexer and parser built from scratch in Rust</li>
</ul> </ul>
@ -132,7 +135,7 @@
<h2>Getting Started</h2> <h2>Getting Started</h2>
<p>To run the REPL:</p> <p>To run the REPL:</p>
<pre><code>cargo run</code></pre> <pre><code>cargo run</code></pre>
<p>To run a fiddle script:</p> <p>To run a fddl script:</p>
<pre><code>cargo run path/to/script.fddl</code></pre> <pre><code>cargo run path/to/script.fddl</code></pre>
<h2>Examples</h2> <h2>Examples</h2>
@ -155,27 +158,30 @@ print(`The square of $number is ${math.square($number)}`);
<div class="notes"> <div class="notes">
<h2>Notes and Next Steps</h2> <h2>Notes and Next Steps</h2>
<ul> <ul>
<li class="task-list-item"><input type="checkbox" checked disabled> Added first new set of tokens and features, added the first lexer tests.</li> <li class="task-list-item"><input type="checkbox" checked disabled> Added first new set of tokens and features, added the first <code>lexer</code> tests.</li>
<li class="task-list-item"><input type="checkbox" disabled> <code>parser</code> module is a placeholder.</li> <li class="task-list-item"><input type="checkbox" disabled> <code>parser</code> module is a placeholder.</li>
<li class="task-list-item"><input type="checkbox" disabled> <code>interpreter</code> module is a placeholder.</li> <li class="task-list-item"><input type="checkbox" disabled> <code>interpreter</code> module is a placeholder.</li>
<li class="task-list-item"><input type="checkbox" disabled> Implement a more robust error handling mechanism instead of using <code>stderr</code>.</li> <li class="task-list-item"><input type="checkbox" disabled> Implement a more robust error handling mechanism instead of using <code>stderr</code>.</li>
<li class="task-list-item"><input type="checkbox" disabled> Implement string interpolation (backticks with <code>$variable</code>)</li> <li class="task-list-item"><input type="checkbox" disabled> Implement string interpolation (backticks with <code>$variable</code>)</li>
<li class="task-list-item"><input type="checkbox" disabled> Continue to expand tests to cover all new syntax and features.</li> <li class="task-list-item"><input type="checkbox" disabled> Continue to expand tests to cover all new syntax and features.</li>
<li class="task-list-item"><input type="checkbox" checked disabled> Made a crappy website.</li>
</ul> </ul>
</div> </div>
<h2>Running the Project</h2> <h2>Running the Project</h2>
<p>Make sure your project compiles and the tests pass:</p> <p>Make sure your project compiles and the tests pass:</p>
<pre><code>cargo build <pre><code>
cargo build
cargo test cargo test
</code></pre> </code></pre>
<p>Although there's not much there right now. But the REPL works!</p>
<div class="contact"> <div class="contact">
<p><a href="mailto:tristan@fddl.dev">Contact</a></p> <p><a href="mailto:tristan@fddl.dev">Contact</a></p>
</div> </div>
</main> </main>
<footer> <footer>
&copy; 2024 Fiddle Programming Language &copy; 2024 fddl.dev
</footer> </footer>
</body> </body>
</html> </html>