initial commit
This commit is contained in:
commit
ca6c672c9f
181
index.html
Normal file
181
index.html
Normal file
@ -0,0 +1,181 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- implement highlight.js soon -->
|
||||
<meta charset="UTF-8">
|
||||
<title>Fiddle Programming Language</title>
|
||||
<!-- Google Fonts -->
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto:400,700|Source+Code+Pro" rel="stylesheet">
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
background-color: #1e1e1e;
|
||||
color: #c0c0c0;
|
||||
line-height: 1.6;
|
||||
}
|
||||
header {
|
||||
background-color: #282828;
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
header h1 {
|
||||
color: #ffffff;
|
||||
margin: 0;
|
||||
font-size: 2.5em;
|
||||
}
|
||||
main {
|
||||
max-width: 800px;
|
||||
margin: 20px auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
h2 {
|
||||
color: #ffffff;
|
||||
border-bottom: 1px solid #444;
|
||||
padding-bottom: 5px;
|
||||
margin-top: 40px;
|
||||
}
|
||||
p {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
pre {
|
||||
background-color: #2e2e2e;
|
||||
padding: 15px;
|
||||
overflow-x: auto;
|
||||
font-family: 'Source Code Pro', monospace;
|
||||
color: #dcdcdc;
|
||||
border-radius: 5px;
|
||||
}
|
||||
code {
|
||||
color: #dcdcdc;
|
||||
font-family: 'Source Code Pro', monospace;
|
||||
background-color: #2e2e2e;
|
||||
padding: 2px 4px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
a {
|
||||
color: #569cd6;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.images {
|
||||
text-align: center;
|
||||
margin: 30px 0;
|
||||
}
|
||||
.images img {
|
||||
max-width: 100%;
|
||||
border: 1px solid #444;
|
||||
border-radius: 5px;
|
||||
margin: 10px 0;
|
||||
}
|
||||
footer {
|
||||
background-color: #282828;
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: #808080;
|
||||
margin-top: 40px;
|
||||
}
|
||||
.contact {
|
||||
margin-top: 40px;
|
||||
text-align: center;
|
||||
}
|
||||
.notes {
|
||||
background-color: #2e2e2e;
|
||||
padding: 20px;
|
||||
margin: 20px 0;
|
||||
border-radius: 5px;
|
||||
}
|
||||
ul {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
}
|
||||
li::before {
|
||||
content: "• ";
|
||||
color: #569cd6;
|
||||
}
|
||||
.task-list-item {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.task-list-item input {
|
||||
margin-right: 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Fiddle Programming Language</h1>
|
||||
</header>
|
||||
<main>
|
||||
<section class="images">
|
||||
<img src="01.png" alt="Lexer Screenshot">
|
||||
<img src="02.png" alt="Lexer Tests Screenshot">
|
||||
</section>
|
||||
|
||||
<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>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>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>
|
||||
|
||||
<h2>Features</h2>
|
||||
<ul>
|
||||
<li>Custom syntax with unique operators and keywords</li>
|
||||
<li>Documentation comments using <code>#</code>, similar to Rust's style</li>
|
||||
<li>Lexer and parser built from scratch in Rust</li>
|
||||
</ul>
|
||||
|
||||
<h2>Getting Started</h2>
|
||||
<p>To run the REPL:</p>
|
||||
<pre><code>cargo run</code></pre>
|
||||
<p>To run a fiddle script:</p>
|
||||
<pre><code>cargo run path/to/script.fddl</code></pre>
|
||||
|
||||
<h2>Examples</h2>
|
||||
<pre><code>##! 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)}`);
|
||||
</code></pre>
|
||||
<p>(At least for right now.)</p>
|
||||
|
||||
<h2>License</h2>
|
||||
<p>This project is licensed under the MIT License.</p>
|
||||
|
||||
<div class="notes">
|
||||
<h2>Notes and Next Steps</h2>
|
||||
<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" 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> 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> Continue to expand tests to cover all new syntax and features.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<h2>Running the Project</h2>
|
||||
<p>Make sure your project compiles and the tests pass:</p>
|
||||
<pre><code>cargo build
|
||||
cargo test
|
||||
</code></pre>
|
||||
|
||||
<div class="contact">
|
||||
<p><a href="mailto:tristan@fddl.dev">Contact</a></p>
|
||||
</div>
|
||||
</main>
|
||||
<footer>
|
||||
© 2024 Fiddle Programming Language
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user