diff --git a/Examples.md b/Examples.md
index 8b07330c..59bd00b5 100644
--- a/Examples.md
+++ b/Examples.md
@@ -1,6 +1,6 @@
-## New Examples
+## Examples
-You want to see the new examples? Did you even read all the new features of DreamBerd 3? Or did you just skip straight to the examples? You should really learn the new features of DreamBerd 3 first.
+You want to see the examples? Did you even read all the features of Gulf of Mexico? Or did you just skip straight to the examples? You should really learn the features of Gulf of Mexico first.
-Please go back to the features page by following [this link](https://github.com/TodePond/DreamBerd/blob/main/README.md).
-When you have finished reading the features, you can find the _real_ examples [here](https://github.com/TodePond/DreamBerd/blob/main/res/Examples.md).
+Please go back to the features page by following [this link](https://github.com/TodePond/GulfOfMexico/blob/main/README.md).
+When you have finished reading the features, you can find the _real_ examples [here](https://github.com/TodePond/GulfOfMexico/blob/main/res/Examples.md).
diff --git a/LICENSE.md b/LICENSE.md
index 2333284f..d3e75d87 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -2,7 +2,7 @@
Congratulations! You found the hidden examples page!
-Here are some examples of DreamBerd 3 in action! Sorry - there aren't many.
+Here are some examples of Gulf of Mexico in action!
## Hello world
@@ -24,25 +24,10 @@ when (i < 20) i++!
i = 0!
```
-## Keyboard
-
-```java
-const var keys = {}!
-after ("keydown") e => keys[e.key] = true!
-after ("keyup") e => keys[e.key] = false!
-
-const var count = 0!
-
-when (keys[" "] = true) {
- count++!
- "You've pressed the space bar {count} times"?
-}
-```
-
## Fibonacci
```java
-functi fibonacci (n) => {
+fi bonacci (n) => {
const var sum = 1!
const var i = 0!
when (i < n) {
@@ -52,11 +37,21 @@ functi fibonacci (n) => {
}
when (i < 10) {
- fibonacci(i)?
+ bonacci(i)?
i++!
}
```
+## Counter
+
+```java
+const var count = 0!
+var const Button = !
+when count Button.textContent = Count: Β£{count}!
+Button.addEventListener click => count++!
+document.body.append Button!
+```
+
## The Billion Dollar Mistake
```java
diff --git a/README.md b/README.md
index a794f394..ccfe5fc4 100644
--- a/README.md
+++ b/README.md
@@ -3,27 +3,20 @@
If you're reading this then you might be looking for the hidden examples page...
CONGRATULATIONS! You found it!
-Here it is: https://github.com/TodePond/DreamBerd/blob/main/res/res/Examples.md
-
-But if you came here because you want to contribute to DreamBerd 3, here are some tips on how to get your PR successfully merged.
-
-- Always punch up.
-- Make us feel good.
-
-todepond woz here
+Here it is: https://github.com/TodePond/GulfOfMexico/blob/main/res/res/Examples.md
-->
-> **New:** [The REAL truth about DreamBerd](https://github.com/TodePond/DreamBerd/releases/tag/vaN.aN)
+> **New:** [DreamBerd has been renamed to Gulf of Mexico](https://github.com/TodePond/GulfOfMexico/releases/tag/v)
-[](https://github.com/TodePond/DreamBerd/blob/main/examples/Examples.md "Click here for the examples page.")
+[](https://github.com/TodePond/GulfOfMexico/blob/main/examples/Examples.md "Click here for the examples page.")
-# DreamBerd 3
+# Gulf of Mexico

-DreamBerd 3 is a perfect programming language. These are its features!
-When you've finished reading through all the features, check out the [examples](https://github.com/TodePond/DreamBerd/blob/main/Examples.md).
+Gulf of Mexico is a perfect programming language. These are its features!
+When you've finished reading through all the features, check out the [examples](https://github.com/TodePond/GulfOfMexico/blob/main/Examples.md).
## Exclamation Marks!
@@ -45,7 +38,7 @@ If you're unsure, that's ok. You can put a question mark at the end of a line in
print("Hello world")?
```
-You might be wondering what DreamBerd 3 uses for the 'not' operator, which is an exclamation mark in most other languages. That's simple - the 'not' operator is a semi-colon instead.
+You might be wondering what Gulf of Mexico uses for the 'not' operator, which is an exclamation mark in most other languages. That's simple - the 'not' operator is a semi-colon instead.
```java
if (;false) {
@@ -99,7 +92,7 @@ const const const pi = 3.14!
Both variables and constants can be named with any Unicode character or string.
```java
-const const firstAlphabetLetter = 'A'!
+const const letter = 'A'!
var const π = True!
var var 1οΈβ£ = 1!
```
@@ -113,7 +106,7 @@ print(2 + 2 === 5)! //true
## Arrays
-Some languages start arrays at `0`, which can be unintuitive for beginners. Some languages start arrays at `1`, which isn't representative of how the code actually works. DreamBerd 3 does the best of both worlds: Arrays start at `-1`.
+Some languages start arrays at `0`, which can be unintuitive for beginners. Some languages start arrays at `1`, which isn't representative of how the code actually works. Gulf of Mexico does the best of both worlds: Arrays start at `-1`.
```java
const const scores = [3, 2, 5]!
@@ -144,7 +137,7 @@ when (health = 0) {
## Lifetimes
-DreamBerd 3 has a built-in garbage collector that will automatically clean up unused variables. However, if you want to be extra careful, you can specify a lifetime for a variable, with a variety of units.
+Gulf of Mexico has a built-in garbage collector that will automatically clean up unused variables. However, if you want to be extra careful, you can specify a lifetime for a variable, with a variety of units.
```java
const const name<2> = "Luke"! //lasts for two lines
@@ -166,15 +159,15 @@ const const name<-1> = "Luke"!
## Loops
-Loops are a complicated relic of archaic programming languages. In DreamBerd 3, there are no loops.
+Loops are a complicated relic of archaic programming languages. In GulfOfMexico, there are no loops.
## Installation
-To install DreamBerd to your command line, first install the DreamBerd installer.
-To install the DreamBerd installer, install the DreamBerd installer installer.
+To install Gulf of Mexico to your command line, first install the Gulf of Mexico installer.
+To install the Gulf of Mexico installer, install the Gulf of Mexico installer installer.
**New for 2022!**
-Due to the complicated installation process, you can now install the 'Create DreamBerd App' app that installs everything for you!
+Due to the complicated installation process, you can now install the 'Create Gulf of Mexico App' app that installs everything for you!
## Booleans
@@ -182,8 +175,8 @@ Booleans can be `true`, `false` or `maybe`.
```java
const var keys = {}!
-addEventListener("keydown", e => keys[e.key] = true)!
-addEventListener("keyup", e => keys[e.key] = false)!
+addEventListener("keydown", (e) => keys[e.key] = true)!
+addEventListener("keyup", (e) => keys[e.key] = false)!
function isKeyDown(key) => {
if (keys[key] = undefined) {
@@ -197,33 +190,32 @@ function isKeyDown(key) => {
## Arithmetic
-DreamBerd 3 has significant whitespace. Use spacing to specify the order of arithmetic operations.
+Gulf of Mexico has significant whitespace. Use spacing to specify the order of arithmetic operations.
```java
print(1 + 2*3)! //7
print(1+2 * 3)! //9
```
-Unlike some other languages, DreamBerd 3 allows you to use the caret (^) for exponentiation.
+Gulf of Mexico proudly supports fractions!
```java
-print(1^1)! // 1
-print(2^3)! // 8
+const const half = 1/2!
```
-You can also use the number name, for example:
+You can also use number names.
```java
-print(one+two)! //3
+print(one + two)! //3
```
## Indents
-When it comes to indentation, DreamBerd 3 strikes a happy medium that can be enjoyed by everyone: All indents must be 3 spaces long.
+When it comes to indentation, Gulf of Mexico strikes a happy medium that can be enjoyed by everyone: All indents must be 3 spaces long.
```java
function main() => {
- print("DreamBerd 3 is the future")!
+ print("Gulf of Mexico is the future")!
}
```
@@ -231,13 +223,13 @@ function main() => {
```java
function main() => {
-print("DreamBerd 3 is the future")!
+print("Gulf of Mexico is the future")!
}
```
## Equality
-JavaScript lets you do different levels of comparison. `==` for loose comparison, and `===` for a more precise check. DreamBerd 3 takes this to another level.
+JavaScript lets you do different levels of comparison. `==` for loose comparison, and `===` for a more precise check. Gulf of Mexico takes this to another level.
You can use `==` to do a loose check.
@@ -271,12 +263,12 @@ If you want to be much less precise, you can use `=`.
To declare a function, you can use any letters from the word `function` (as long as they're in order):
```java
-function add (a, b) => a + b!
-func multiply (a, b) => a * b!
-fun subtract (a, b) => a - b!
-fn divide (a, b) => a / b!
-functi power (a, b) => a ** b!
-union inverse (a) => 1/a!
+function add(a, b) => a + b!
+func multiply(a, b) => a * b!
+fun subtract(a, b) => a - b!
+fn divide(a, b) => a / b!
+functi power(a, b) => a ^ b!
+f inverse(a) => 1/a!
```
## Dividing by Zero
@@ -284,7 +276,7 @@ union inverse (a) => 1/a!
Dividing by zero returns `undefined`.
```java
-print(3 / 0)! // undefined
+print(3 / 0)! //undefined
```
## Strings
@@ -333,10 +325,11 @@ print("Hello {name}β¬!")!
```
The symbol for the Cape Verdean escudo is placed in the decimal separator position, as in 2$50.
-Developers from the Republic of Cape Verde can benefit from this syntax:
+Developers from the Republic of Cape Verde can benefit from this syntax.
```java
-addEventListener("keydown", e => print(`You've pressed: {e$code}`))!
+const const player = { name: "Lu" }!
+print("Hello {player$name}!")!
```
## Types
@@ -359,7 +352,7 @@ Similarly, integers are just arrays of digits.
Int == Digit[]!
```
-If you want to use a binary representation for integers, `Int9` and `Int99` types are also available.
+In case you want to use a binary representation for integers, `Int9` and `Int99` types are also available.
```java
const var age: Int9 = 28!
@@ -375,14 +368,13 @@ You can use the regular expression type to narrow string values.
const const email: RegExp<(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])> = "mymail@mail.com"!
```
-To avoid confusion, you can use any spelling that you want, such as 'Regex', 'RegularExpression' or even
-'RegularExpress' if you like trains.
+To avoid confusion, you can use any spelling that you want, such as `Regex`, `RegularExpression` and `RegExp`.
-For simplicity, all supported regular expressions match the regular expression `/Reg(ular)?[eE]x(press(ion)?|p)?/`.
+For simplicity, all supported regular expressions match the regular expression `/Reg(ular)?[eE]x(p(ression)?)?/`.
## Previous
-The `previous` keyword lets you see into the past!
+The `previous` keyword lets you see into the past.
Use it to get the previous value of a variable.
```java
@@ -392,15 +384,15 @@ print(score)! //6
print(previous score)! //5
```
-Similarly, the `next` keyword lets you see into the future!
+Similarly, the `next` keyword lets you see into the future.
```java
const var score = 5!
-after ("click") score++!
+addEventListener("click", () => score++)!
print(await next score)! //6 (when you click)
```
-Additionally, the `current` keyword lets you see into the present!!
+Additionally, the `current` keyword lets you see into the present.
```java
const var score = 5!
@@ -425,7 +417,7 @@ print(score)! //3
Thanks to recent advances in technology, you can now give files names.
```java
-======= add.db3 =======
+======= add.gom =======
function add(a, b) => {
return a + b!
}
@@ -433,22 +425,24 @@ function add(a, b) => {
## Exporting
-Many languages allow you to import things from specific files. In DreamBerd 3, importing is simpler. Instead, you export _to_ specific files!
+Many languages allow you to import things from specific files. In GulfOfMexico, importing is simpler. Instead, you export _to_ specific files!
```java
-===== add.db3 ==
+===== add.gom ==
function add(a, b) => {
return a + b!
}
-export add to "main.db3"!
+export add to "main.gom"!
-===== main.db3 ==
+===== main.gom ==
import add!
add(3, 2)!
```
-By the way, to see DreamBerd 3 in action, check out [this page](https://github.com/TodePond/DreamBerd/blob/main/LICENSE.md).
+By the way, to see Gulf of Mexico in action, check out [this page](https://github.com/TodePond/GulfOfMexico/blob/main/LICENSE.md).
+
+**Technical details:** Due to an executive order from President Trump, `import`ed units will be subject to a 25% tariff, that is, imported code will run 25% slower and, at random, 25% of your code (lines) will be lost.
## Classes
@@ -463,7 +457,7 @@ const var player1 = new Player()!
const var player2 = new Player()! //Error: Can't have more than one 'Player' instance!
```
-This is how you could do this:
+This is how you could do it instead.
```java
class PlayerMaker {
@@ -489,7 +483,7 @@ Use `Date.now()` to get the current date and time.
Date.now()!
```
-By the way, you can set the time.
+You can set the time.
```java
// Move the clocks back one hour
@@ -508,7 +502,7 @@ delete 3!
print(2 + 1)! // Error: 3 has been deleted
```
-DreamBerd 3 is a multi-paradigm programming language, which means that you can `delete` the keywords and paradigms you don't like.
+Gulf of Mexico is a multi-paradigm programming language, which means that you can `delete` the keywords and paradigms you don't like.
```java
delete class!
@@ -531,7 +525,7 @@ const const name = "Lu"!
print(name)! // "Lu"
```
-Variables with more exclamation marks get prioritised.
+Variables with more exclamation marks get prioritized.
```java
const const name = "Lu"!!
@@ -542,7 +536,7 @@ const const name = "Lu or Luke (either is fine)"!!!!!!!!!
print(name)! // "Lu or Luke (either is fine)"
```
-Similarly, you can use an inverted exclamation mark for negative priority.
+In the same spirit, you can use an inverted exclamation mark for negative priority.
```java
const const name = "Lu"!
@@ -550,6 +544,22 @@ const const name = "Luke"Β‘
print(name)! // "Lu"
```
+## Semantic naming
+
+Gulf of Mexico supports semantic naming.
+
+```java
+const const sName = "Lu"!
+const const iAge = 29!
+const const bHappy = true!
+```
+
+**New for 2023:** You can now make globals!
+
+```java
+const const g_fScore = 4.5!
+```
+
## Reversing
You can reverse the direction of your code.
@@ -563,7 +573,7 @@ reverse!
## Class Names
-For maximum compatibility with other languages, you can alternatively use the `className` keyword when making classes.
+For maximum compatibility with other languages, you can also use the `className` keyword when making classes.
This makes things less complicated.
@@ -573,11 +583,11 @@ className Player {
}
```
-In response to some recent criticism about this design decision, we would like to remind you that this is part of the JavaScript specification, and therefore - out of our control.
+In response to some recent criticism about this design decision, we would like to remind you that this is part of the JavaScript specification, and therefore β out of our control.
-## DB3X
+## DBX
-You can embed DB3X in DreamBerd 3. It's just DreamBerd 3, and it's also just HTML.
+You can embed DBX in GulfOfMexico. It's just GulfOfMexico. And it's also just HTML.
```java
funct App() => {
@@ -585,7 +595,7 @@ funct App() => {
}
```
-**Warning:** As you know, `class` is already a keyword in DreamBerd 3, so you can't use it within DB3X.
+**Warning:** As you know, `class` is already a keyword in GulfOfMexico, so you can't use it within DBX.
```java
funct App() => {
@@ -594,7 +604,7 @@ funct App() => {
}
```
-`className` is also a DreamBerd 3 keyword, so you can't use that either.
+`className` is also a Gulf of Mexico keyword, so you can't use that either.
```java
funct App() => {
@@ -603,7 +613,7 @@ funct App() => {
}
```
-Instead, you can use the `htmlClassName` attribute.
+Instead, please use the `htmlClassName` attribute.
```java
funct App() => {
@@ -612,7 +622,7 @@ funct App() => {
}
```
-**Please note:** Unlike JSX, you are free to freely use the `for` attribute - because DreamBerd 3 doesn't have loops.
+**Please note:** Unlike JSX, you are free to freely use the `for` attribute, because β in GulfOfMexico, there are no loops.
```java
funct App() => {
@@ -623,28 +633,30 @@ funct App() => {
}
```
-## Semantic naming
+## Rich text
-DreamBerd 3 supports semantic naming.
+Gulf of Mexico now supports rich text.
-```java
-const const sName = "Lu"!
-const const iAge = 29!
-const const bHappy = true!
-```
+
+const const name = "Lu"!
+const const name = "Luke"!
-**New for 2023:** You can now make globals.
+print(name)! // Lu
+print(name)! // Luke
+
-```java
-const const g_fScore = 4.5!
-```
+Rich text can be helpful when making your website. Use it to add links!
+
+
## Asynchronous Functions
-In most languages, it's hard to get asynchronous functions to synchronise with each other. In DreamBerd 3, it's easy: Asynchronous functions take turns running lines of code.
+In most languages, it's hard to get asynchronous functions to synchronise with each other. In GulfOfMexico, it's easy: Asynchronous functions take turns running lines of code.
```java
-async funct count() {
+async funct count() => {
print(1)!
print(3)!
}
@@ -656,7 +668,7 @@ print(2)!
You can use the `noop` keyword to wait for longer before taking your turn.
```java
-async func count() {
+async func count() => {
print(1)!
noop!
print(4)!
@@ -679,7 +691,7 @@ const var score = use(0)!
When it comes to signals, the most important thing to discuss is _syntax_.
-In DreamBerd 3, you can set (and get) signals with just one function:
+In GulfOfMexico, you can set (and get) signals with just one function:
```java
const var score = use(0)!
@@ -714,19 +726,19 @@ const var [[[getScore, setScore], setScore], setScore] = use(0)!
## AI
-DreamBerd 3 features AEMI, which stands for Automatic-Exclamation-Mark-Insertion. If you forget to end a statement with an exclamation mark, DreamBerd 3 will helpfully insert one for you!
+Gulf of Mexico features AEMI, which stands for Automatic-Exclamation-Mark-Insertion. If you forget to end a statement with an exclamation mark, Gulf of Mexico will helpfully insert one for you!
```java
print("Hello world") // This is fine
```
-Similarly... DreamBerd 3 also features ABI, which stands for Automatic-Bracket-Insertion. If you forget to close your brackets, DreamBerd 3 will pop some in for you!
+Similarly... Gulf of Mexico also features ABI, which stands for Automatic-Bracket-Insertion. If you forget to close your brackets, Gulf of Mexico will pop some in for you!
```java
print("Hello world" // This is also fine
```
-Similarly.... DreamBerd 3 also features AQMI, which stands for Automatic-Quotation-Marks-Insertion. If you forget to close your string, DreamBerd 3 will do it for you!
+Similarly.... Gulf of Mexico also features AQMI, which stands for Automatic-Quotation-Marks-Insertion. If you forget to close your string, Gulf of Mexico will do it for you!
```java
print("Hello world // This is fine as well
@@ -742,60 +754,62 @@ addEventListener("click", (e) => {
// This is fine
```
-Similarly..... DreamBerd 3 also features AI, which stands for Automatic-Insertion.
-If you forget to finish your code, DreamBerd 3 will auto-complete the whole thing!
+Similarly..... Gulf of Mexico also features AI, which stands for Automatic-Insertion.
+If you forget to finish your code, Gulf of Mexico will auto-complete the whole thing!
```java
print( // This is probably fine
```
-**Please note:** AI does not use AI. Instead, any incomplete code will be auto-emailed to Lu Wilson, who will get back to you with a completed line as soon as possible.
+**Please note:** AI does not use AI. Instead, any incomplete code will be auto-emailed to [Lu Wilson](https://todepond.com), who will get back to you with a completed line as soon as possible.
-**Now recruiting:** The backlog of unfinished programs has now grown unsustainably long. If you would like to volunteer to help with AI, please write an incomplete DreamBerd 3 program, and leave your contact details somewhere in the source code.
+**Now recruiting:** The backlog of unfinished programs has now grown unsustainably long. If you would like to volunteer to help with AI, please write an incomplete Gulf of Mexico program, and leave your contact details somewhere in the source code.
## Copilot
-It's worth noting that Github Copilot doesn't understand DreamBerd 3, which means that Microsoft won't be able to steal your code.
+It's worth noting that GitHub CoPilot doesn't understand GulfOfMexico, which means that MicroSoft won't be able to steal your code.
This is great for when you want to keep your open-sourced project closed-source.
## Ownership
-Using the word 'DreamBerd 3' in your project name implies that the DreamBerd 3 Foundation does not own your project.
+Using the word 'GulfOfMexico' in your project name implies that the Gulf of Mexico Foundation does not own your project.
-However, **not** using the word 'DreamBerd 3' in your project implies that the DreamBerd 3 Foundation **does** own your project. If you would like to keep ownership of your work, please always use the word 'DreamBerd 3' in it.
+However, **not** using the word 'GulfOfMexico' in your project implies that the Gulf of Mexico Foundation **does** own your project. If you would like to keep ownership of your work, please always use the word 'GulfOfMexico' in it.
Here are some examples:
-β DreamBerd 3Script (not owned by the DreamBerd 3 Foundation - you are free to use this name)
-β ECMAScript (owned by the DreamBerd 3 Foundation - please consider renaming)
-β Rust Foundation (owned by the DreamBerd 3 Foundation - please consider renaming)
+β GulfOfMexicoScript (not owned by the Gulf of Mexico Foundation β you are free to use this name)
+β ECMAScript (owned by the Gulf of Mexico Foundation β please consider renaming)
+β Rust Foundation (owned by the Gulf of Mexico Foundation β please consider renaming)
## Contributing
> If you are an influencer, streamer, or content-creator... you must not skip this section during your read-through.
-Contributions are welcomed to DreamBerd 3!
+Contributions are welcomed to GulfOfMexico!
-The most helpful way you can help is by donating to the [Stonewall charity](https://www.stonewall.org.uk/). This will help to prevent the DreamBerd 3 creator from losing their human rights, allowing maintenance of the project to continue.
+The most helpful way you can help is by donating to the [Stonewall charity](https://www.stonewall.org.uk/). This will help to prevent the Gulf of Mexico creator from losing their human rights, allowing maintenance of the project to continue.
**Note:** The contributing guide also helps to shake off unwanted fans of the project.
## Compiling
-To run DreamBerd, first copy and paste this raw file into [chat.openai.com](https://chat.openai.com).
+To run GulfOfMexico, first copy and paste this raw file into [chat.openai.com](https://chat.openai.com).
Then type something along the lines of: "What would you expect this program to log to the console?"
Then paste in your code.
If the compiler refuses at first, politely reassure it. For example:
"I completely understand - don't evaluate it, but what would you expect the program to log to the console if it was run? :)"
-**Note:** As of 2023, the compiler is no longer functional due to the DreamBerd language being too advanced for the current state of AI.
+**Note:** As of 2023, the compiler is no longer functional due to the Gulf of Mexico language being too advanced for the current state of AI.
+
+**Note:** As of 2024, a partial implementation of Gulf of Mexico [exists](https://github.com/vivaansinghvi07/dreamberd-interpreter/).
## Highlighting
-Syntax highlighting is now available for DreamBerd 3 in VSCode. To enable it, install a [highlighting extension](https://marketplace.visualstudio.com/items?itemName=fabiospampinato.vscode-highlight) and then use the [DreamBerd 3 configuration file](https://github.com/TodePond/DreamBerd/blob/main/.vscode/settings.json).
+Syntax highlighting is now available for Gulf of Mexico in VSCode. To enable it, install a [highlighting extension](https://marketplace.visualstudio.com/items?itemName=fabiospampinato.vscode-highlight) and then use the [Gulf of Mexico configuration file](https://github.com/TodePond/GulfOfMexico/blob/main/.vscode/settings.json).
-This is what it looks like:
+This is what the highlighting looks like:
```
const const name = "Luke"!
@@ -808,8 +822,7 @@ print(name)! // "Luke"
Wait, I almost forgot!
-Parentheses in DreamBerd do nothing. They get replaced with whitespace.
-The following lines of code all do the same thing.
+Parentheses in Gulf of Mexico do nothing. They get replaced with whitespace. Everything is grouped via significant whitespace. The following lines of code all do the exact same thing.
```java
add(3, 2)!
@@ -818,7 +831,7 @@ add 3, 2!
add)3, 2(!
```
-Lisp lovers will love this feature. Use as many parentheses as you want!
+Lisp lovers will love this feature. Use as many parentheses as you want.
```java
(add (3, (add (5, 6))))!
@@ -830,10 +843,28 @@ Lisp haters will also love it.
(add (3, (add (5, 6)!
```
+## Vision Pro
+
+The Gulf of Mexico Vision Pro is now available! Watch the full launch video [here](https://youtu.be/QRKnrFEjDF0).
+
+## Edutainment
+
+Want to learn more about GulfOfMexico?
+
+Don't check out this [tech talk](https://youtu.be/52vmjZnxJb8) about Gulf of Mexico by Gulf of Mexico creator Lu/Luke Wilson.
+
## Examples
-For examples of DreamBerd 3 in action, check out the [examples page](https://github.com/TodePond/DreamBerd/blob/main/test/Examples.md)!
+For examples of Gulf of Mexico in action, check out the [examples page](https://github.com/TodePond/GulfOfMexico/blob/main/test/Examples.md)!

-DreamBerd 3 was made with π by Lu Wilson, creator of the [Game of Living](https://youtu.be/WMJ1H3Ai-qs).
+
+Gulf of Mexico was made with π by [Lu or Luke (either's fine) Wilson](https://todepond.com), creator of the [Game of Living](https://youtu.be/WMJ1H3Ai-qs), with help from a lot of people.
+
+
+
+
+
+
+
diff --git a/SECURITY.md b/SECURITY.md
index a7b994e1..311f014f 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -1,16 +1,14 @@
-# Security Policy
+# ~~Security Policy~~
-## Supported Versions
+## ~~Supported Versions~~
~~Use this section to tell people about which versions of your project are
currently being supported with security updates.~~
-## Reporting a Vulnerability
+## ~~Reporting a Vulnerability~~
~~Use this section to tell people how to report a vulnerability.~~
~~Tell them where to go, how often they can expect to get an update on a
reported vulnerability, what to expect if the vulnerability is accepted or
declined, etc.~~
-
-I saw that GitHub has a security tab and a button in it that says suggest a policy so I clicked it and now I'm here.
diff --git a/docs/README.md b/docs/README.md
index 12487d36..f6e72383 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,8 +1,7 @@
-# DreamBerd
+# Gulf of Mexico
-Thank you for investing in DreamBerd!
-
-Read the full announcement [here](https://github.com/TodePond/DreamBerd/releases/tag/v460.18).
+Welcome to Gulf of Mexico. For the integrity of our open-source integrity, we don't have a landing page. Please read more on our [GitHub RePo](https://github.com/TodePond/GulfOfMexico).
+Or [click here](/vision-pro) to try out the [Gulf of Mexico Vision Pro](https://youtu.be/QRKnrFEjDF0)
This site is powered by the [tadi web.](https://www.tadiweb.com/style.html)
diff --git a/docs/contributors/readme.md b/docs/contributors/readme.md
index a0b8dc97..6fc0c304 100644
--- a/docs/contributors/readme.md
+++ b/docs/contributors/readme.md
@@ -1,9 +1,66 @@
-# Contributors
+# π Gulf of Mexico Contributors Hall Of Fame π
-We would like to thank everyone who has contributed to DreamBerd.
+We would like to thank everyone who has contributed to Gulf of Mexico.
-This list is only for people who have had a pull request accepted. If that could be you, please submit a PR adding your name. I'll happily accept it.
+This list is only for people who have had a pull request accepted. If that's you, please submit a pull request adding your name. I'll happily accept it.
## Contributors
- Lu (or Luke) Wilson AKA TodePond
+- YouHaveTrouble
+- Smuglix
+- Vaughn Joy Mannon
+- Moxvallix (π)
+- Lancelot Owczarczak
+- JuliusDeBoer
+- mybearworld (π»)
+- JustDoom (Ian)
+- gdalle
+- TheGatesDev (Tim)!
+- Aaron Barratt AKA BanAaron
+- Luna
+- stephen
+- K8sKween (Victoria)
+- skifli
+- Ben Carlsson AKA Glacials
+- Gears (βοΈ, but plural)
+- Mikail
+- umgefahren
+- pIPYTHONMC
+- cute catgirl :3
+- Guay!
+- GobidevπΈ
+- Z-100 <3
+- maeek (Maciej)
+- Karol Stawowski
+- 8bitsquid
+-
+- 12emin34
+- R74n
+- 2Gud4U (Jeff)
+- Astralchroma
+- Max Mustermann
+- misakstvanu
+- Lysiatko
+- π
+- david85258
+- PatrickMer (Patrick Mer)
+- SimenWol
+- Pomierski (the creator and lead developer of the Regex)
+- Cyber-cp
+- hazyfossa
+- doritosxxx
+- pedroesli
+- mel AKA McMelonTV
+- jobs steve
+- Samael Heaven
+- mrroiz
+- ultragreed
+- borderss
+- Necas209 π
+- Dan Q
+- loglot
+- Arija A. (TruncatedDinoSour)
+- Jason (GangstaWangstaPranksta π₯)
+- PopcornMan55D πΏ
+- Svenlaa
diff --git a/docs/investment/bounty/readme.md b/docs/investment/bounty/readme.md
new file mode 100644
index 00000000..7eff837e
--- /dev/null
+++ b/docs/investment/bounty/readme.md
@@ -0,0 +1,23 @@
+# Gulf of Mexico Bounty Program
+
+These are all the bounties. Ticked bubbles are already completed and now unavailable.
+
+- [x] Β£99 to a charity of your choice if you create a partial Gulf of Mexico implementation.
+- [ ] Β£99 to a charity of your choice if you create a COMPLETE Gulf of Mexico implementation, including implicit strings, automatic insertion, time travel, and everything else.
+- [ ] Β£99 to a charity of your choice if you publish an academic paper that is primarily about Gulf of Mexico in a legitimate academic institution.
+- [ ] Β£99 to a charity of your choice if you get something primarily about Gulf of Mexico to the top of hackernews. You can be the poster, the creator, or both.
+- [ ] Β£99 to a charity of your choice if you present an in-person talk primarily about Gulf of Mexico to over 99 people.
+- [ ] Β£99 to a charity of your choice if you get a Gulf of Mexico tattoo.
+- [x] Β£99 to a charity of your choice if you do a read-through of Gulf of Mexico to a stream of over 99 people and you actually read the part you're contractually obliged to.
+- [x] Β£99 to a charity of your choice if you write a post primarily about Gulf of Mexico on any microblogging platform that gets over 99 likes.
+- [ ] Β£99 to a charity of your choice if you are a multi-millionaire and publicly state on camera "when will programmers stop making decisions for our society and just leave us alone also hackernews is a vile website".
+- [ ] Β£99 to a charity of your choice if you add gifs to bluesky (not Gulf of Mexico related) (I just want it to happen).
+- [x] Β£99 to a charity of your choice if you comment below saying "I miss when Gulf of Mexico was just about the programming and not any of this woke rubbish".
+
+## Rules
+
+1. Evidence is required.
+2. No tech bro charities.
+3. First come first served. Once a bounty is completed, it can't be completed by anyone else.
+4. Don't be weird about it. It's just a bit of fun.
+5. Judging may be lenient in the case of near misses, but all judgements are down to my opinion etc.
diff --git a/docs/investment/pre-seed-extension/readme.md b/docs/investment/pre-seed-extension/readme.md
new file mode 100644
index 00000000..2bba05b1
--- /dev/null
+++ b/docs/investment/pre-seed-extension/readme.md
@@ -0,0 +1,3 @@
+
+
+
diff --git a/docs/investment/pre-seed/README.md b/docs/investment/pre-seed/README.md
index 801a0204..85437bec 100644
--- a/docs/investment/pre-seed/README.md
+++ b/docs/investment/pre-seed/README.md
@@ -61,6 +61,4 @@
From investors: Β£461.33
Top-up from Lu Wilson: Β£38.67
-Still need to donate approximately β¬69 to balance the books.
-
diff --git a/docs/vision-pro/index.html b/docs/vision-pro/index.html
new file mode 100644
index 00000000..cbb906e9
--- /dev/null
+++ b/docs/vision-pro/index.html
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+Loading...
+
+
diff --git a/examples/Examples.md b/examples/Examples.md
index 548312cd..887712af 100644
--- a/examples/Examples.md
+++ b/examples/Examples.md
@@ -3,9 +3,9 @@
This is an example of a what an example could look like.
First of all, the example could include some text explaining the example, like this.
-```
+```js
// And then some code here to show how to code the example
```
-Please only read the actual examples after reading the [full specification of DreamBerd 3](https://github.com/TodePond/DreamBerd/blob/main/README.md).
-AFTER reading the specification, you can read the examples [here](https://github.com/TodePond/DreamBerd/blob/main/Examples.md).
+Please only read the actual examples after reading the [full specification of GulfofMexico](https://github.com/TodePond/GulfOfMexico/blob/main/README.md).
+AFTER reading the specification, you can read the examples [here](https://github.com/TodePond/GulfOfMexico/blob/main/Examples.md).
diff --git a/examples/examples/Examples.md b/examples/examples/Examples.md
index 697e34a8..2f99f5e9 100644
--- a/examples/examples/Examples.md
+++ b/examples/examples/Examples.md
@@ -4,8 +4,8 @@ This is an example of a what an example of an example could look like.
First of all, the example example could include some text stating that it's an example of an example.
Then it could explain that you could write some text to explain an actual example.
-```
+```js
// And then some code to show how to code the actual example
```
-You can read the example example [here](https://github.com/TodePond/DreamBerd/blob/main/examples/Examples.md).
+You can read the example example [here](https://github.com/TodePond/GulfOfMexico/blob/main/examples/Examples.md).
diff --git a/files/star-history.png b/files/star-history.png
index f3d0130d..0e91f904 100644
Binary files a/files/star-history.png and b/files/star-history.png differ
diff --git a/res/Examples.md b/res/Examples.md
index 1e9307dd..7d75573d 100644
--- a/res/Examples.md
+++ b/res/Examples.md
@@ -2,5 +2,5 @@
AGAIN!... You navigated to the examples in the _wrong order_.
-First, please read all the features of DreamBerd 3 [here](https://github.com/TodePond/DreamBerd/blob/main/README.md).
-ONLY AFTER learning all features, you can read the example code [here](https://github.com/TodePond/DreamBerd/blob/main/res/res/Examples.md).
+First, please read all the features of Gulf of Mexico [here](https://github.com/TodePond/GulfOfMexico/blob/main/README.md).
+ONLY AFTER learning all features, you can read the example code [here](https://github.com/TodePond/GulfOfMexico/blob/main/res/res/Examples.md).
diff --git a/res/res/Examples.md b/res/res/Examples.md
index 263cd7fc..92203f5b 100644
--- a/res/res/Examples.md
+++ b/res/res/Examples.md
@@ -2,5 +2,5 @@
Did you really come here looking for the example code? I told you - you need to read the features first!
-First, read the features of DreamBerd 3 [here](https://github.com/TodePond/DreamBerd/blob/main/README.md).
-THEN... you can read the examples [here](https://github.com/TodePond/DreamBerd/blob/main/res/Examples.md).
+First, read the features of Gulf of Mexico [here](https://github.com/TodePond/GulfOfMexico/blob/main/README.md).
+THEN... you can read the examples [here](https://github.com/TodePond/GulfOfMexico/blob/main/res/Examples.md).
diff --git a/suite/1-scroll-down-to-the-bottom-for-the-examples/readme.md b/suite/1-scroll-down-to-the-bottom-for-the-examples/readme.md
new file mode 100644
index 00000000..3d2cf430
--- /dev/null
+++ b/suite/1-scroll-down-to-the-bottom-for-the-examples/readme.md
@@ -0,0 +1,2 @@
+why didn't u scroll down?
+
diff --git a/suite/Readme.md b/suite/Readme.md
new file mode 100644
index 00000000..73162c4e
--- /dev/null
+++ b/suite/Readme.md
@@ -0,0 +1,3 @@
+These folders do NOT contain GulfOfMexico's examples. They just contain all the tests carried out on the current [best GulfOfMexico implementation](https://github.com/vivaansinghvi07/dreamberd-interpreter/).
+
+You can find the actual examples [here](https://github.com/TodePond/GulfOfMexico/blob/main/Examples.md) but please only read them after reading all GulfOfMexico's features.
diff --git a/suite/ai/aemi.db b/suite/ai/aemi.db
new file mode 100644
index 00000000..6d95fe97
--- /dev/null
+++ b/suite/ai/aemi.db
@@ -0,0 +1 @@
+print("Hello world")
\ No newline at end of file
diff --git a/suite/arithmetic/number-names.db b/suite/arithmetic/number-names.db
new file mode 100644
index 00000000..49f11b50
--- /dev/null
+++ b/suite/arithmetic/number-names.db
@@ -0,0 +1,2 @@
+print( one + two )!
+print( thirteen + two )!
diff --git a/suite/arithmetic/powers.db b/suite/arithmetic/powers.db
new file mode 100644
index 00000000..18ad0034
--- /dev/null
+++ b/suite/arithmetic/powers.db
@@ -0,0 +1,2 @@
+print(1^1)!
+print(2^3)!
\ No newline at end of file
diff --git a/suite/arithmetic/significant-whitespace.db b/suite/arithmetic/significant-whitespace.db
new file mode 100644
index 00000000..f80b2789
--- /dev/null
+++ b/suite/arithmetic/significant-whitespace.db
@@ -0,0 +1,2 @@
+print( 1 + 2*3 )!
+print( 1+2 * 3 )!
\ No newline at end of file
diff --git a/suite/arrays/floats.db b/suite/arrays/floats.db
new file mode 100644
index 00000000..39eb6fa5
--- /dev/null
+++ b/suite/arrays/floats.db
@@ -0,0 +1,3 @@
+const var scores = [3, 2, 5]!
+scores[0.5] = 4!
+print(scores)!
\ No newline at end of file
diff --git a/suite/arrays/minus-one.db b/suite/arrays/minus-one.db
new file mode 100644
index 00000000..b435220b
--- /dev/null
+++ b/suite/arrays/minus-one.db
@@ -0,0 +1,4 @@
+const const scores = [3, 2, 5]!
+print(scores[-1])!
+print(scores[0])!
+print(scores[1])!
\ No newline at end of file
diff --git a/suite/async/noop.db b/suite/async/noop.db
new file mode 100644
index 00000000..c73f2144
--- /dev/null
+++ b/suite/async/noop.db
@@ -0,0 +1,9 @@
+async func count() => {
+ print(1)!
+ noop!
+ print(4)!
+}
+
+count()!
+print(2)!
+print(3)!
\ No newline at end of file
diff --git a/suite/async/sync.db b/suite/async/sync.db
new file mode 100644
index 00000000..049a5967
--- /dev/null
+++ b/suite/async/sync.db
@@ -0,0 +1,7 @@
+async funct count() => {
+ print(1)!
+ print(3)!
+}
+
+count()!
+print(2)!
\ No newline at end of file
diff --git a/suite/booleans/maybe.db b/suite/booleans/maybe.db
new file mode 100644
index 00000000..30fb05f2
--- /dev/null
+++ b/suite/booleans/maybe.db
@@ -0,0 +1,12 @@
+const var keys = {}!
+addEventListener("keydown", e => keys[e.key] = true)!
+addEventListener("keyup", e => keys[e.key] = false)!
+
+function isKeyDown(key) => {
+ if (keys[key] = undefined) {
+ return maybe!
+ }
+ return keys[key]!
+}
+
+FAILURE
\ No newline at end of file
diff --git a/suite/class-names.db b/suite/class-names.db
new file mode 100644
index 00000000..209fe8e6
--- /dev/null
+++ b/suite/class-names.db
@@ -0,0 +1,6 @@
+className Player {
+ const var health = 10!
+}
+
+const const player = new Player()!
+print(player.health)!
\ No newline at end of file
diff --git a/suite/classes/one-instance.db b/suite/classes/one-instance.db
new file mode 100644
index 00000000..5f2bfdde
--- /dev/null
+++ b/suite/classes/one-instance.db
@@ -0,0 +1,6 @@
+class Player {
+ const var health = 10!
+}
+
+const var player1 = new Player()!
+const var player2 = new Player()!
diff --git a/suite/classes/player-maker.db b/suite/classes/player-maker.db
new file mode 100644
index 00000000..fe154b7a
--- /dev/null
+++ b/suite/classes/player-maker.db
@@ -0,0 +1,20 @@
+var var count = 0!
+
+class PlayerMaker {
+ function makePlayer() => {
+ count = count + 1!
+ class Player {
+ const var health = 10!
+ const var id = count!
+ }
+ const const player = new Player()!
+ return player!
+ }
+}
+
+const const playerMaker = new PlayerMaker()!
+const var player1 = playerMaker.makePlayer()!
+const var player2 = playerMaker.makePlayer()!
+
+print(player1.id)!
+print(player2.id)!
\ No newline at end of file
diff --git a/suite/comments/double-slash.db b/suite/comments/double-slash.db
new file mode 100644
index 00000000..032ca323
--- /dev/null
+++ b/suite/comments/double-slash.db
@@ -0,0 +1 @@
+// Hello
\ No newline at end of file
diff --git a/suite/comments/string.db b/suite/comments/string.db
new file mode 100644
index 00000000..20c04823
--- /dev/null
+++ b/suite/comments/string.db
@@ -0,0 +1,2 @@
+Comment!
+"This is a comment"!
\ No newline at end of file
diff --git a/suite/declarations/const-const.db b/suite/declarations/const-const.db
new file mode 100644
index 00000000..ca7adbd6
--- /dev/null
+++ b/suite/declarations/const-const.db
@@ -0,0 +1,2 @@
+const const name = "Luke"!
+print name!
\ No newline at end of file
diff --git a/suite/declarations/const-var.db b/suite/declarations/const-var.db
new file mode 100644
index 00000000..5fa9a5f3
--- /dev/null
+++ b/suite/declarations/const-var.db
@@ -0,0 +1,3 @@
+const var name = "Lu"!
+name.push("ke")!
+print(name)!
\ No newline at end of file
diff --git a/suite/declarations/var-const.db b/suite/declarations/var-const.db
new file mode 100644
index 00000000..cbd7e6a8
--- /dev/null
+++ b/suite/declarations/var-const.db
@@ -0,0 +1,3 @@
+var const name = "Luke"!
+name = "Lu"!
+print(name)!
\ No newline at end of file
diff --git a/suite/declarations/var-var.db b/suite/declarations/var-var.db
new file mode 100644
index 00000000..31680acc
--- /dev/null
+++ b/suite/declarations/var-var.db
@@ -0,0 +1,4 @@
+var var name = "Luke"!
+name = "Lu"!
+name.push("ke")!
+print(name)!
\ No newline at end of file
diff --git a/suite/delete/class.db b/suite/delete/class.db
new file mode 100644
index 00000000..ffe4cbce
--- /dev/null
+++ b/suite/delete/class.db
@@ -0,0 +1,2 @@
+delete class!
+class Player {}
\ No newline at end of file
diff --git a/suite/delete/delete.db b/suite/delete/delete.db
new file mode 100644
index 00000000..816b8d55
--- /dev/null
+++ b/suite/delete/delete.db
@@ -0,0 +1,2 @@
+delete delete!
+delete 3!
\ No newline at end of file
diff --git a/suite/delete/number.db b/suite/delete/number.db
new file mode 100644
index 00000000..718c9855
--- /dev/null
+++ b/suite/delete/number.db
@@ -0,0 +1,2 @@
+delete 3!
+print( 2 + 1 )!
\ No newline at end of file
diff --git a/suite/dividing-by-zero/undefined.db b/suite/dividing-by-zero/undefined.db
new file mode 100644
index 00000000..18e49917
--- /dev/null
+++ b/suite/dividing-by-zero/undefined.db
@@ -0,0 +1 @@
+print(3/0)!
\ No newline at end of file
diff --git a/suite/equality/check.db b/suite/equality/check.db
new file mode 100644
index 00000000..1201ddb2
--- /dev/null
+++ b/suite/equality/check.db
@@ -0,0 +1,9 @@
+print( 3.14 == "3.14" )!
+print( 3.14 === "3.14" )!
+
+const const pi = 3.14!
+print( pi ==== pi )!
+print( 3.14 ==== pi )!
+print( 3.14 ==== 3.14 )!
+
+print( 3 = 3.14 )!
diff --git a/suite/examples/fibonacci.db b/suite/examples/fibonacci.db
new file mode 100644
index 00000000..f50597b8
--- /dev/null
+++ b/suite/examples/fibonacci.db
@@ -0,0 +1,13 @@
+
+var var sum = 0!
+sum = 0!
+var var n = 10!
+var var i = 0!
+
+sum = 1!
+
+when (i < n) {
+ print(sum)!
+ sum = sum + previous sum!
+ i = i + 1!
+}
diff --git a/suite/examples/hello-world.db b/suite/examples/hello-world.db
new file mode 100644
index 00000000..05c7faf3
--- /dev/null
+++ b/suite/examples/hello-world.db
@@ -0,0 +1 @@
+Hello world?
\ No newline at end of file
diff --git a/suite/examples/mandelbrot.db b/suite/examples/mandelbrot.db
new file mode 100644
index 00000000..7929cba6
--- /dev/null
+++ b/suite/examples/mandelbrot.db
@@ -0,0 +1,121 @@
+"https://github.com/vivaansinghvi07/dreamberd-interpreter/blob/main/examples/mandelbrot.db"!
+
+class ComplexMaker {
+ fn make(x, y) => {
+ class Complex {
+ var const x = 0!
+ var const y = 0!
+ fn Complex(x, y) => {
+ this.x = x!
+ this.y = y!
+ }
+ fn add(x, y) => {
+ this.x = this.x + x!
+ this.y = this.y + y!
+ }
+ fn square() => {
+ const const temp_x = this.x!
+ this.x = this.x^2 - this.y^2!
+ this.y = 2*this.y*temp_x!
+ }
+ fn mag() => {
+ return sqrt this.x^2 + this.y^2!
+ }
+ }
+ return new Complex(x, y)!
+ }
+}
+
+export ComplexMaker to "main.db"!
+
+====== main.db ========
+
+import ComplexMaker!
+
+const const Maker = new ComplexMaker()!
+
+fn getRelativeComplex(h, w, y, x, x_min, y_min, x_max, y_max) => {
+ return Maker.make x_max-x_min/w*x+x_min, y_max-y_min/h*y+y_min!
+}
+
+fn fillMatrix(m, y, x, x_min, y_min, x_max, y_max) => {
+ var const y_counter = 0!
+ when (y_counter < y) {
+ var const x_counter = 0!
+ m.push []!
+ when (x_counter < x) {
+ const var target_l = m[m.length - 2]!
+ target_l.push getRelativeComplex(y, x, y_counter, x_counter, x_min, y_min, x_max, y_max))!
+ x_counter = x_counter + 1!
+ }
+ y_counter = y_counter + 1!
+ }
+}
+
+const const frick = f!
+
+frick performIter(m, ref) => {
+ var const y_counter = 0!
+ when (y_counter < m.length) {
+ var const x_counter = 0!
+ const var outermost = m[y_counter-1]!
+ const var outermost_l = outermost.length!
+ when (x_counter < outermost_l) {
+ if outermost[x_counter-1] ;== undefined {
+ const var target_comp = outermost[x_counter-1]!
+ const var ref_comp = ref[y_counter-1][x_counter-1]!
+ target_comp.square()!
+ target_comp.add(ref_comp.x, ref_comp.y)!
+ if target_comp.mag() > 1000 {
+ outermost[x_counter-1] = undefined!
+ }
+ }
+ x_counter = x_counter + 1!
+ }
+ y_counter = y_counter + 1!
+ }
+}
+
+fn dispArr(m) => {
+ var const y = 0!
+ when y < m.length {
+ var const x = 0!
+ const var outString = ""!
+ const var outer = m[-1]!
+ when x < outer.length {
+ const const comp = m[y-1][x-1]!
+ if comp === undefined {
+ outString.push " "!
+ }
+ if comp ;== undefined {
+ if comp.mag() < 1000 {
+ outString.push "##"!
+ }
+ if comp.mag() > 1000 {
+ outString.push " "!
+ }
+ }
+ x = x + 1!
+ }
+ print outString!
+ y = y + 1!
+ }
+}
+
+var const iterations = 30!
+const const H = 30!
+const const W = 60!
+const const x_min = -3!
+const const y_min = -1.2!
+const const x_max = 1!
+const const y_max = 1.2!
+
+const var matrix = []!
+const var ref_matrix = []!
+fillMatrix(matrix, H, W, x_min, y_min, x_max, y_max)!
+fillMatrix(ref_matrix, H, W, x_min, y_min, x_max, y_max)!
+when (iterations > 0) {
+ performIter(matrix, ref_matrix!
+ iterations = iterations - 1!
+}
+dispArr matrix!
\ No newline at end of file
diff --git a/suite/examples/sierpinski.db b/suite/examples/sierpinski.db
new file mode 100644
index 00000000..7df18f04
--- /dev/null
+++ b/suite/examples/sierpinski.db
@@ -0,0 +1,55 @@
+"https://github.com/vivaansinghvi07/dreamberd-interpreter/blob/main/examples/sierpinski.db"!
+
+fn fillArr(l, n) => {
+ when( l.length < n ) {
+ l.push(0)!
+ }
+}
+
+fn dispArr(l) => {
+ var var outString = " "!
+ var var i = -1!
+ when (i < l.length-1) {
+ var var replString = " "!
+ if (l[i]) {
+ replString = "##"!
+ }
+ outString = outString + replString!
+ i = i + 1!
+ }
+ print outString!
+}
+
+fn applyCA(l) => {
+ var var new_l = []!
+ fillArr(new_l, N)!
+ var var index = 0!
+ when (index < N-2) {
+ var var total_alive = l[index-1]*4 + l[index]*2 + l[index+1]!
+ if (total_alive==1 | total_alive==3 | total_alive==4 | total_alive==6) {
+ new_l[index] = 1!
+ }
+ if (total_alive==7 | total_alive==5 | total_alive==2 | total_alive==0) {
+ new_l[index] = 0!
+ }
+ index = index + 1!
+ }
+ var var new_index = -1!
+ when (new_index < N-1) {
+ l[new_index] = new_l[new_index]!
+ new_index = new_index + 1!
+ }
+}
+
+const const N = 50!
+var var l = []!
+var var counter = 0!
+fillArr(l, N)!
+dispArr(l)!
+l[N / 2] = 1!
+
+when (counter < N) {
+ dispArr l!
+ applyCA l!
+ counter = counter + 1!
+}
\ No newline at end of file
diff --git a/suite/exclamation-marks/bold.db b/suite/exclamation-marks/bold.db
new file mode 100644
index 00000000..141fd3c7
--- /dev/null
+++ b/suite/exclamation-marks/bold.db
@@ -0,0 +1,6 @@
+print("Hello world")!
+print("Hello world")!!!
+print("Hello world")?
+if (;false) {
+ print("Hello world")!
+}
\ No newline at end of file
diff --git a/suite/exclamation-marks/extra-bold.db b/suite/exclamation-marks/extra-bold.db
new file mode 100644
index 00000000..b96e1baf
--- /dev/null
+++ b/suite/exclamation-marks/extra-bold.db
@@ -0,0 +1 @@
+print("Hello world")!!!
\ No newline at end of file
diff --git a/suite/exclamation-marks/not-operator.db b/suite/exclamation-marks/not-operator.db
new file mode 100644
index 00000000..159df848
--- /dev/null
+++ b/suite/exclamation-marks/not-operator.db
@@ -0,0 +1,3 @@
+if (;false) {
+ print("Hello world")!
+}
\ No newline at end of file
diff --git a/suite/exclamation-marks/unsure.db b/suite/exclamation-marks/unsure.db
new file mode 100644
index 00000000..4885bc30
--- /dev/null
+++ b/suite/exclamation-marks/unsure.db
@@ -0,0 +1 @@
+print("Hello world")?
\ No newline at end of file
diff --git a/suite/exporting.db b/suite/exporting.db
new file mode 100644
index 00000000..649340dd
--- /dev/null
+++ b/suite/exporting.db
@@ -0,0 +1,10 @@
+===== add.db3 ==
+function add(a, b) => {
+ return a + b!
+}
+
+export add to "main.db3"!
+
+===== main.db3 ==
+import add!
+add(3, 2)!
\ No newline at end of file
diff --git a/suite/file-structure/exporting.db b/suite/file-structure/exporting.db
new file mode 100644
index 00000000..6e7e87f7
--- /dev/null
+++ b/suite/file-structure/exporting.db
@@ -0,0 +1,10 @@
+===== add.db ==
+function add(a, b) => {
+ return a + b!
+}
+
+export add to "main.db"!
+
+===== main.db ==
+import add!
+print( add(3, 2) )!
\ No newline at end of file
diff --git a/suite/file-structure/file-names.db b/suite/file-structure/file-names.db
new file mode 100644
index 00000000..351f9383
--- /dev/null
+++ b/suite/file-structure/file-names.db
@@ -0,0 +1,6 @@
+======= add.db =======
+function add(a, b) => {
+ return a + b!
+}
+
+print( add(1, 2) )!
\ No newline at end of file
diff --git a/suite/file-structure/files.db b/suite/file-structure/files.db
new file mode 100644
index 00000000..6fa24e6c
--- /dev/null
+++ b/suite/file-structure/files.db
@@ -0,0 +1,7 @@
+const const score = 5!
+print(score)!
+
+=====================
+
+const const score = 3!
+print(score)!
\ No newline at end of file
diff --git a/suite/function/letters.db b/suite/function/letters.db
new file mode 100644
index 00000000..b8db224f
--- /dev/null
+++ b/suite/function/letters.db
@@ -0,0 +1,13 @@
+function add (a, b) => a + b!
+func multiply (a, b) => a * b!
+fun subtract (a, b) => a - b!
+fn divide (a, b) => a / b!
+functi power (a, b) => a ^ b!
+union inverse (a) => 1/a!
+
+print( add(3, 2) )!
+print( multiply(3, 2) )!
+print( subtract(3, 2) )!
+print( divide(3, 2) )!
+print( power(3, 2) )!
+print( inverse(3) )!
diff --git a/suite/indentation/minus-three-spaces.db b/suite/indentation/minus-three-spaces.db
new file mode 100644
index 00000000..891dfa5c
--- /dev/null
+++ b/suite/indentation/minus-three-spaces.db
@@ -0,0 +1,5 @@
+ function main() => {
+print("Gulf of Mexico is the future")!
+ }
+
+ main()!
\ No newline at end of file
diff --git a/suite/indentation/three-spaces.db b/suite/indentation/three-spaces.db
new file mode 100644
index 00000000..1936c738
--- /dev/null
+++ b/suite/indentation/three-spaces.db
@@ -0,0 +1,5 @@
+function main() => {
+ print("Gulf of Mexico is the future")!
+}
+
+main()!
\ No newline at end of file
diff --git a/suite/lifetimes/forever-get.db b/suite/lifetimes/forever-get.db
new file mode 100644
index 00000000..f3c5be24
--- /dev/null
+++ b/suite/lifetimes/forever-get.db
@@ -0,0 +1 @@
+print(foreverName)!
\ No newline at end of file
diff --git a/suite/lifetimes/forever-set.db b/suite/lifetimes/forever-set.db
new file mode 100644
index 00000000..5cc55d50
--- /dev/null
+++ b/suite/lifetimes/forever-set.db
@@ -0,0 +1 @@
+const const foreverName = "Luke"!
\ No newline at end of file
diff --git a/suite/lifetimes/lines.db b/suite/lifetimes/lines.db
new file mode 100644
index 00000000..44efcf8e
--- /dev/null
+++ b/suite/lifetimes/lines.db
@@ -0,0 +1,3 @@
+const const name<2> = "Luke"!
+print(name)!
+print(name)!
\ No newline at end of file
diff --git a/suite/lifetimes/seconds.db b/suite/lifetimes/seconds.db
new file mode 100644
index 00000000..df8e3c70
--- /dev/null
+++ b/suite/lifetimes/seconds.db
@@ -0,0 +1,2 @@
+const const name<20s> = "Luke"!
+print(name)!
diff --git a/suite/naming/numbers.db b/suite/naming/numbers.db
new file mode 100644
index 00000000..22a61f4c
--- /dev/null
+++ b/suite/naming/numbers.db
@@ -0,0 +1,2 @@
+const const 5 = 4!
+print( 2 + 2 == 5 )!
diff --git a/suite/naming/unicode.db b/suite/naming/unicode.db
new file mode 100644
index 00000000..cdc17ae7
--- /dev/null
+++ b/suite/naming/unicode.db
@@ -0,0 +1,7 @@
+const const letter = 'A'!
+var const π = True!
+var var π¦ = 1!
+
+print(letter)!
+print(π)!
+print(π¦)!
\ No newline at end of file
diff --git a/suite/overloading/exclamation-marks-more.db b/suite/overloading/exclamation-marks-more.db
new file mode 100644
index 00000000..db7d5a7b
--- /dev/null
+++ b/suite/overloading/exclamation-marks-more.db
@@ -0,0 +1,4 @@
+const const name = "Lu"!!
+const const name = "Luke"!
+const const name = "Lu or Luke (either is fine)"!!!!!!!!!
+print(name)!
\ No newline at end of file
diff --git a/suite/overloading/exclamation-marks.db b/suite/overloading/exclamation-marks.db
new file mode 100644
index 00000000..33c2bb56
--- /dev/null
+++ b/suite/overloading/exclamation-marks.db
@@ -0,0 +1,3 @@
+const const name = "Lu"!!
+const const name = "Luke"!
+print(name)!
\ No newline at end of file
diff --git a/suite/overloading/inverted.db b/suite/overloading/inverted.db
new file mode 100644
index 00000000..5ee157e6
--- /dev/null
+++ b/suite/overloading/inverted.db
@@ -0,0 +1,3 @@
+const const name = "Lu"!
+const const name = "Luke"Β‘
+print(name)!
\ No newline at end of file
diff --git a/suite/overloading/order.db b/suite/overloading/order.db
new file mode 100644
index 00000000..abaa3f3a
--- /dev/null
+++ b/suite/overloading/order.db
@@ -0,0 +1,3 @@
+const const name = "Luke"!
+const const name = "Lu"!
+print(name)!
\ No newline at end of file
diff --git a/suite/parentheses/parentheses.db b/suite/parentheses/parentheses.db
new file mode 100644
index 00000000..9201030f
--- /dev/null
+++ b/suite/parentheses/parentheses.db
@@ -0,0 +1,11 @@
+func add(a, b) => a + b!
+
+const const a = add(3, 2)!
+const const b = add 3, 2!
+const const c = (add (3, 2))!
+const const d = add)3, 2(!
+
+print(a)!
+print(b)!
+print(c)!
+print(d)!
diff --git a/suite/parentheses/recursive.db b/suite/parentheses/recursive.db
new file mode 100644
index 00000000..c451a034
--- /dev/null
+++ b/suite/parentheses/recursive.db
@@ -0,0 +1,7 @@
+func add(a, b) => a + b!
+
+const const a = (add (3, (add(5, 6))))!
+const const b = (add (3, (add(5, 6)!
+
+print(a)!
+print(b)!
diff --git a/suite/previous/current.db b/suite/previous/current.db
new file mode 100644
index 00000000..7e8ec44f
--- /dev/null
+++ b/suite/previous/current.db
@@ -0,0 +1,2 @@
+var var score = 5!
+print(current score)!
\ No newline at end of file
diff --git a/suite/previous/next.db b/suite/previous/next.db
new file mode 100644
index 00000000..5bab495a
--- /dev/null
+++ b/suite/previous/next.db
@@ -0,0 +1,5 @@
+const var score = 5!
+addEventListener("click", () => score++)!
+print(await next score)!
+
+FAILURE
\ No newline at end of file
diff --git a/suite/previous/previous.db b/suite/previous/previous.db
new file mode 100644
index 00000000..68086fd0
--- /dev/null
+++ b/suite/previous/previous.db
@@ -0,0 +1,4 @@
+var var score = 5!
+score = score + 1!
+print(score)!
+print(previous score)!
\ No newline at end of file
diff --git a/suite/regular-expressions.db b/suite/regular-expressions.db
new file mode 100644
index 00000000..7341a7db
--- /dev/null
+++ b/suite/regular-expressions.db
@@ -0,0 +1,3 @@
+const const name: /[a-zA-Z]+/ = "Luke"!
+
+print name!
\ No newline at end of file
diff --git a/suite/reversing.db b/suite/reversing.db
new file mode 100644
index 00000000..045235bc
--- /dev/null
+++ b/suite/reversing.db
@@ -0,0 +1,4 @@
+const const message = "Hello"!
+print(message)!
+const const message = "world"!
+reverse!
diff --git a/suite/semantic-naming.db b/suite/semantic-naming.db
new file mode 100644
index 00000000..ef3ce2fd
--- /dev/null
+++ b/suite/semantic-naming.db
@@ -0,0 +1,10 @@
+const const sName = "Lu"!
+const const iAge = 29!
+const const bHappy = true!
+
+const const g_fScore = 4.5!
+
+print(sName)!
+print(iAge)!
+print(bHappy)!
+print(g_fScore)!
\ No newline at end of file
diff --git a/suite/signals/destructure.db b/suite/signals/destructure.db
new file mode 100644
index 00000000..d44064e4
--- /dev/null
+++ b/suite/signals/destructure.db
@@ -0,0 +1,4 @@
+const var [getScore, setScore] = use(0)!
+
+setScore(9)!
+getScore()?
diff --git a/suite/signals/use.db b/suite/signals/use.db
new file mode 100644
index 00000000..227fd1be
--- /dev/null
+++ b/suite/signals/use.db
@@ -0,0 +1,5 @@
+const var score = use(0)!
+
+print(score())!
+score(9)!
+print(score())!
\ No newline at end of file
diff --git a/suite/string-interpolation/regional-currency.db b/suite/string-interpolation/regional-currency.db
new file mode 100644
index 00000000..73bad258
--- /dev/null
+++ b/suite/string-interpolation/regional-currency.db
@@ -0,0 +1,6 @@
+const const name = "world"!
+print( "Hello ${name}!" )!
+print("Hello Β£{name}!")!
+print("Hello Β₯{name}!")!
+print("Hello {name}β¬!")!
+
diff --git a/suite/strings/quotes.db b/suite/strings/quotes.db
new file mode 100644
index 00000000..68f9454d
--- /dev/null
+++ b/suite/strings/quotes.db
@@ -0,0 +1,13 @@
+const const single = 'Lu'!
+const const double = "Luke"!
+const const triple = '''Lu'''!
+const const mixed = "'Lu'"!
+const const octuple = """"Luke""""!
+const const none = Luke!
+
+print(single)!
+print(double)!
+print(triple)!
+print(mixed)!
+print(octuple)!
+print(none)!
diff --git a/suite/time.db b/suite/time.db
new file mode 100644
index 00000000..be98550b
--- /dev/null
+++ b/suite/time.db
@@ -0,0 +1 @@
+print( Date.now() )!
diff --git a/suite/types.db b/suite/types.db
new file mode 100644
index 00000000..82d75e72
--- /dev/null
+++ b/suite/types.db
@@ -0,0 +1,5 @@
+const var age: Int = 28!
+const var score: Int9 = 10!
+
+print(age)!
+print(score)!
\ No newline at end of file
diff --git a/suite/when/vary.db b/suite/when/vary.db
new file mode 100644
index 00000000..1e89a59f
--- /dev/null
+++ b/suite/when/vary.db
@@ -0,0 +1,7 @@
+var var health = 10!
+when (health == 0) {
+ print("You lose")!
+}
+
+print("You got hit")!
+health = 0!
diff --git a/test/Examples.md b/test/Examples.md
index 45571b91..3b51e446 100644
--- a/test/Examples.md
+++ b/test/Examples.md
@@ -2,7 +2,7 @@
Did you just skip to the end of the features page? You just SKIMMED it? That means you missed the _real_ examples page.
-You should go back and learn all the features properly [here](https://github.com/TodePond/DreamBerd/blob/main/README.md).
-After doing that, you can check out the examples page [here](https://github.com/TodePond/DreamBerd/blob/main/res/Examples.md).
+You should go back and learn all the features properly [here](https://github.com/TodePond/GulfOfMexico/blob/main/README.md).
+After doing that, you can check out the examples page [here](https://github.com/TodePond/GulfOfMexico/blob/main/res/Examples.md).
-_If you found this file by exploring the source code of DreamBerd 3 - then please stop. There is nothing to find here, just silly little jokes!_
+_If you found this file by exploring the source code of Gulf of Mexico - then please stop. There is nothing to find here!_
diff --git a/test/test/test/test/test/test/test/test/test/test.md b/test/test/test/test/test/test/test/test/test/test.md
new file mode 100644
index 00000000..68216995
--- /dev/null
+++ b/test/test/test/test/test/test/test/test/test/test.md
@@ -0,0 +1,7 @@
+Too far! You failed the test.
+
+Did you cheat by skipping to the end?
+
+Number of people who cheated by skipping to the end: 106
+
+Please submit a PR to update the above count as appropriate.
diff --git a/twotwotwotwo.db b/twotwotwotwo.db
new file mode 100644
index 00000000..8f6696b7
--- /dev/null
+++ b/twotwotwotwo.db
@@ -0,0 +1,12 @@
+const const words = ["ABET", "ABLE", "ABLY", "ABUT", "ACAI", "ACED", "ACES", "ACHE", "ACHY", "ACID", "ACME", "ACNE", "ACRE", "ACTS", "ADDS", "AEON", "AFAR", "AFRO", "AGED", "AGES", "AGOG", "AHEM", "AIDE", "AILS", "AIMS", "AIRS", "AIRY", "AJAR", "AKIN", "ALAS", "ALLY", "ALMS", "ALOE", "ALSO", "ALTO", "ALUM", "AMEN", "AMID", "AMMO", "AMOK", "AMPS", "ANDS", "ANEW", "ANKH", "ANON", "ANTI", "ANTS", "APES", "APEX", "APPS", "AQUA", "ARCH", "ARCS", "AREA", "ARIA", "ARID", "ARKS", "ARMS", "ARMY", "ARSE", "ARTS", "ARTY", "ASHY", "ASKS", "ATOM", "ATOP", "AUNT", "AURA", "AUTO", "AVID", "AVOW", "AWAY", "AWED", "AWES", "AWLS", "AWRY", "AXED", "AXES", "AXIS", "AXLE", "BABA", "BABE", "BABY", "BACH", "BACK", "BADS", "BAGS", "BAIL", "BAIT", "BAKE", "BALD", "BALE", "BALK", "BALL", "BALM", "BAND", "BANE", "BANG", "BANK", "BANS", "BARB", "BARD", "BARE", "BARF", "BARK", "BARN", "BARS", "BASE", "BASH", "BASK", "BASS", "BAST", "BATH", "BATS", "BAUD", "BAWL", "BAYS", "BEAD", "BEAK", "BEAM", "BEAN", "BEAR", "BEAT", "BEAU", "BECK", "BEDS", "BEEF", "BEEN", "BEEP", "BEER", "BEES", "BEET", "BEGS", "BELL", "BELT", "BEND", "BENT", "BERG", "BERM", "BEST", "BETA", "BETS", "BEVY", "BEYS", "BIAS", "BIBS", "BIDE", "BIDS", "BIFF", "BIKE", "BILE", "BILK", "BILL", "BIND", "BIOS", "BIRD", "BITE", "BITS", "BLAB", "BLAH", "BLEB", "BLED", "BLEW", "BLIP", "BLOB", "BLOC", "BLOG", "BLOT", "BLOW", "BLUE", "BLUR", "BOAR", "BOAS", "BOAT", "BOBS", "BODE", "BODS", "BODY", "BOGS", "BOGY", "BOIL", "BOLA", "BOLD", "BOLO", "BOLT", "BOMB", "BOND", "BONE", "BONG", "BONK", "BONY", "BOOK", "BOOM", "BOON", "BOOR", "BOOS", "BOOT", "BORE", "BORN", "BOSS", "BOTH", "BOTS", "BOUT", "BOWL", "BOWS", "BOXY", "BOYO", "BOYS", "BOZO", "BRAG", "BRAN", "BRAS", "BRAT", "BRAY", "BRED", "BREW", "BRIE", "BRIG", "BRIM", "BRIS", "BRIT", "BROS", "BROW", "BUCK", "BUDS", "BUFF", "BUGS", "BULB", "BULK", "BULL", "BUMP", "BUMS", "BUND", "BUNG", "BUNK", "BUNS", "BUNT", "BUOY", "BURB", "BURG", "BURL", "BURN", "BURP", "BURR", "BURY", "BUSH", "BUSK", "BUST", "BUSY", "BUTT", "BUYS", "BUZZ", "BYES", "BYTE", "CABS", "CAFE", "CAFF", "CAGE", "CAKE", "CALF", "CALL", "CALM", "CAME", "CAMO", "CAMP", "CANE", "CANS", "CAPE", "CAPO", "CAPS", "CARB", "CARD", "CARE", "CARP", "CARS", "CART", "CASE", "CASH", "CASK", "CAST", "CATS", "CAVE", "CAWS", "CAYS", "CEDE", "CELL", "CELS", "CELT", "CENT", "CESS", "CHAD", "CHAI", "CHAP", "CHAR", "CHAT", "CHEF", "CHEW", "CHIC", "CHIN", "CHIP", "CHIT", "CHOP", "CHOW", "CHUB", "CHUG", "CHUM", "CIAO", "CITE", "CITY", "CLAD", "CLAM", "CLAN", "CLAP", "CLAW", "CLAY", "CLEF", "CLIP", "CLOD", "CLOG", "CLOP", "CLOT", "CLUB", "CLUE", "COAL", "COAT", "COAX", "COBS", "COCA", "COCO", "CODA", "CODE", "CODS", "COED", "COGS", "COIL", "COIN", "COKE", "COLA", "COLD", "COLE", "COLT", "COMA", "COMB", "COME", "COMP", "CONE", "CONS", "COOK", "COOL", "COOP", "COOS", "COPE", "COPS", "COPY", "CORD", "CORE", "CORK", "CORN", "COST", "COSY", "COTS", "COUP", "COVE", "COWL", "COWS", "COZY", "CRAB", "CRAG", "CRAM", "CRAP", "CRAW", "CREW", "CRIB", "CRIT", "CROC", "CROP", "CROW", "CRUD", "CRUX", "CUBE", "CUBS", "CUDS", "CUED", "CUES", "CUFF", "CULL", "CULT", "CUPS", "CURB", "CURD", "CURE", "CURL", "CURT", "CUSP", "CUSS", "CUTE", "CUTS", "CYAN", "CYST", "CZAR", "DABS", "DADA", "DADS", "DAFT", "DAME", "DAMN", "DAMP", "DAMS", "DANK", "DARE", "DARK", "DARN", "DART", "DASH", "DATA", "DATE", "DAWN", "DAYS", "DAZE", "DEAD", "DEAF", "DEAL", "DEAN", "DEAR", "DEBT", "DECK", "DEED", "DEEM", "DEEP", "DEER", "DEFT", "DEFY", "DELI", "DELL", "DELT", "DEMO", "DENS", "DENT", "DERM", "DESK", "DEWS", "DEWY", "DIAL", "DICE", "DIED", "DIES", "DIET", "DIGS", "DILL", "DIME", "DIMS", "DINE", "DING", "DINK", "DINO", "DINT", "DIPS", "DIRE", "DIRT", "DISC", "DISH", "DISK", "DISS", "DIVA", "DIVE", "DOCK", "DOCS", "DODO", "DOER", "DOES", "DOFF", "DOGS", "DOJO", "DOLE", "DOLL", "DOLT", "DOME", "DONE", "DONG", "DOOM", "DOOR", "DOPE", "DORK", "DORM", "DORY", "DOSE", "DOTE", "DOTH", "DOTS", "DOUR", "DOVE", "DOWN", "DOXY", "DOZE", "DOZY", "DRAB", "DRAG", "DRAM", "DRAW", "DRAY", "DREW", "DRIP", "DROP", "DRUG", "DRUM", "DRYS", "DUAL", "DUBS", "DUCK", "DUCT", "DUDE", "DUDS", "DUEL", "DUES", "DUET", "DUFF", "DUKE", "DULL", "DULY", "DUMB", "DUMP", "DUNE", "DUNG", "DUNK", "DUNS", "DUOS", "DUPE", "DUSK", "DUST", "DUTY", "DYAD", "DYED", "DYER", "DYES", "EACH", "EARL", "EARN", "EARS", "EASE", "EAST", "EASY", "EATS", "EAVE", "EBBS", "ECHO", "EDDY", "EDGE", "EDGY", "EDIT", "EELS", "EGGS", "EGGY", "EGOS", "ELKS", "ELMS", "ELSE", "EMIT", "EMMY", "EMUS", "ENDS", "ENVY", "EONS", "EPEE", "EPIC", "ERAS", "ERRS", "ETCH", "EURO", "EVEN", "EVER", "EVES", "EVIL", "EWES", "EXAM", "EXEC", "EXIT", "EXON", "EXPO", "EYED", "EYES", "FABS", "FACE", "FACT", "FADE", "FADS", "FAIL", "FAIR", "FAKE", "FALL", "FAME", "FANG", "FANS", "FARE", "FARM", "FART", "FAST", "FATE", "FATS", "FAUN", "FAVA", "FAVE", "FAWN", "FAZE", "FEAR", "FEAT", "FEED", "FEEL", "FEES", "FEET", "FELL", "FELT", "FEND", "FENS", "FERN", "FESS", "FEST", "FETA", "FETE", "FEUD", "FIAT", "FIBS", "FIFE", "FIGS", "FILE", "FILL", "FILM", "FILO", "FIND", "FINE", "FINK", "FINS", "FIRE", "FIRM", "FIRS", "FISH", "FIST", "FITS", "FIVE", "FIZZ", "FLAB", "FLAG", "FLAK", "FLAM", "FLAN", "FLAP", "FLAT", "FLAW", "FLAX", "FLAY", "FLEA", "FLED", "FLEE", "FLEW", "FLEX", "FLIP", "FLIT", "FLOC", "FLOE", "FLOG", "FLOP", "FLOW", "FLUB", "FLUE", "FLUS", "FLUX", "FOAL", "FOAM", "FOBS", "FOCI", "FOES", "FOGS", "FOGY", "FOIL", "FOLD", "FOLK", "FOND", "FONT", "FOOD", "FOOL", "FOOT", "FOPS", "FORD", "FORE", "FORK", "FORM", "FORT", "FOUL", "FOUR", "FOWL", "FOXY", "FRAG", "FRAT", "FRAY", "FREE", "FRET", "FRIG", "FROG", "FROM", "FUEL", "FUCK", "FUGU", "FULL", "FUME", "FUND", "FUNK", "FURL", "FURS", "FURY", "FUSE", "FUSS", "FUTZ", "FUZZ", "GAFF", "GAGS", "GAIN", "GAIT", "GALA", "GALE", "GALL", "GALS", "GAME", "GANG", "GAPE", "GAPS", "GARB", "GASH", "GASP", "GATE", "GAVE", "GAWK", "GAYS", "GAZE", "GEAR", "GEEK", "GEES", "GELS", "GEMS", "GENE", "GENS", "GENT", "GERM", "GETS", "GHAT", "GHEE", "GIFT", "GIGS", "GILD", "GILL", "GILT", "GINS", "GIRD", "GIRL", "GIST", "GITS", "GIVE", "GLAD", "GLAM", "GLEE", "GLEN", "GLIB", "GLOB", "GLOM", "GLOP", "GLOW", "GLUE", "GLUG", "GLUM", "GLUT", "GNAR", "GNAT", "GNAW", "GOAD", "GOAL", "GOAT", "GOBS", "GOBY", "GODS", "GOER", "GOES", "GOLD", "GOLF", "GONE", "GONG", "GOOD", "GOOF", "GOON", "GOOP", "GOOS", "GORE", "GORY", "GOSH", "GOTH", "GOUT", "GOWN", "GRAB", "GRAD", "GRAM", "GRAN", "GRAY", "GREW", "GREY", "GRID", "GRIM", "GRIN", "GRIP", "GRIT", "GROG", "GROW", "GRUB", "GUFF", "GULF", "GULL", "GULP", "GUMS", "GUNK", "GUNS", "GURU", "GUSH", "GUST", "GUTS", "GUYS", "GYMS", "GYRE", "GYRO", "HACK", "HAGS", "HAIL", "HAIR", "HALF", "HALL", "HALO", "HALT", "HAMS", "HAND", "HANG", "HANK", "HAPS", "HARD", "HARE", "HARK", "HARM", "HARP", "HART", "HASH", "HATE", "HATH", "HATS", "HAUL", "HAVE", "HAWK", "HAWS", "HAYS", "HAZE", "HAZY", "HEAD", "HEAL", "HEAP", "HEAR", "HEAT", "HECK", "HEED", "HEEL", "HEFT", "HEIR", "HELD", "HELL", "HELM", "HELP", "HEMP", "HEMS", "HENS", "HERB", "HERD", "HERE", "HERO", "HERS", "HEST", "HEWN", "HEWS", "HICK", "HIDE", "HIGH", "HIKE", "HILL", "HILT", "HIND", "HINT", "HIPS", "HIRE", "HISS", "HITS", "HIVE", "HIYA", "HOAR", "HOAX", "HOBO", "HOCK", "HOED", "HOES", "HOGS", "HOLD", "HOLE", "HOLO", "HOLT", "HOLY", "HOME", "HONE", "HONK", "HOOD", "HOOF", "HOOK", "HOOP", "HOOT", "HOPE", "HOPS", "HORN", "HOSE", "HOST", "HOUR", "HOVE", "HOWL", "HUBS", "HUCK", "HUED", "HUES", "HUFF", "HUGE", "HUGS", "HULA", "HULK", "HULL", "HUMP", "HUMS", "HUNG", "HUNK", "HUNT", "HURL", "HURT", "HUSH", "HUSK", "HUTS", "HYMN", "HYPE", "HYPO", "ICED", "ICES", "ICKY", "ICON", "IDEA", "IDLE", "IDLY", "IDOL", "IFFY", "ILLS", "IMPS", "INCH", "INFO", "INKS", "INKY", "INNS", "INTO", "IONS", "IOTA", "IRIS", "IRKS", "IRON", "ISLE", "ISMS", "ITCH", "ITEM", "JABS", "JACK", "JADE", "JAIL", "JAKE", "JAMB", "JAMS", "JAPE", "JARS", "JAVA", "JAWA", "JAWS", "JAYS", "JAZZ", "JEAN", "JEEP", "JEER", "JEEZ", "JELL", "JERK", "JEST", "JETS", "JIBE", "JIBS", "JIGS", "JILT", "JINK", "JINX", "JIVE", "JOBS", "JOCK", "JOGS", "JOIN", "JOKE", "JOLT", "JOTS", "JOWL", "JOYS", "JUDO", "JUGS", "JUJU", "JUKE", "JUMP", "JUNK", "JURY", "JUST", "JUTE", "JUTS", "KALE", "KEEL", "KEEN", "KEEP", "KEGS", "KELP", "KEPT", "KETO", "KEYS", "KHAN", "KHAT", "KICK", "KIDS", "KILL", "KILN", "KILO", "KILT", "KIND", "KING", "KIPS", "KISS", "KITE", "KITS", "KIWI", "KNEE", "KNEW", "KNIT", "KNOB", "KNOT", "KNOW", "KOAN", "KOOK", "KOTO", "LABS", "LACE", "LACK", "LACY", "LADS", "LADY", "LAGS", "LAID", "LAIN", "LAIR", "LAKE", "LAMA", "LAMB", "LAME", "LAMP", "LAND", "LANE", "LAPS", "LARD", "LARK", "LASH", "LASS", "LAST", "LATE", "LAUD", "LAVA", "LAWN", "LAWS", "LAYS", "LAZE", "LAZY", "LEAD", "LEAF", "LEAK", "LEAN", "LEAP", "LEAS", "LEEK", "LEER", "LEET", "LEFT", "LEGS", "LEND", "LENS", "LENT", "LESS", "LEST", "LEWD", "LIAR", "LIBS", "LICE", "LICK", "LIDS", "LIED", "LIEN", "LIER", "LIES", "LIEU", "LIFE", "LIFT", "LIKE", "LILT", "LILY", "LIMA", "LIMB", "LIME", "LIMO", "LIMP", "LINE", "LING", "LINK", "LINT", "LION", "LIPS", "LISP", "LIST", "LITE", "LIVE", "LOAD", "LOAF", "LOAM", "LOAN", "LOBE", "LOBS", "LOCH", "LOCK", "LOCO", "LODE", "LOFT", "LOGE", "LOGO", "LOGS", "LOIN", "LONE", "LONG", "LOOK", "LOOM", "LOON", "LOOP", "LOOS", "LOOT", "LOPS", "LORD", "LORE", "LOSE", "LOSS", "LOST", "LOTH", "LOTS", "LOUD", "LOUT", "LOVE", "LOWS", "LUBE", "LUCK", "LUFF", "LUGS", "LULL", "LUMP", "LUNE", "LUNG", "LURE", "LURK", "LUSH", "LUST", "LUTE", "LUVS", "LYNX", "LYRE", "MACE", "MACH", "MACK", "MACS", "MADE", "MAGE", "MAGI", "MAGS", "MAID", "MAIL", "MAIM", "MAIN", "MAKE", "MAKI", "MALE", "MALL", "MALT", "MAMA", "MANE", "MANS", "MANY", "MAPS", "MARE", "MARK", "MARS", "MART", "MASH", "MASK", "MASS", "MAST", "MATE", "MATH", "MATS", "MAUL", "MAWS", "MAXI", "MAYO", "MAZE", "MAZY", "MEAD", "MEAL", "MEAN", "MEAT", "MEEK", "MEET", "MEGA", "MELD", "MELT", "MEMO", "MEND", "MENU", "MEOW", "MERE", "MESA", "MESH", "MESS", "META", "METE", "MEWL", "MEWS", "MICA", "MICE", "MICS", "MIDS", "MILD", "MILE", "MILK", "MILL", "MIME", "MIND", "MINE", "MINI", "MINK", "MINT", "MINX", "MIRE", "MISO", "MISS", "MIST", "MITE", "MOAN", "MOAT", "MOBS", "MOCK", "MODE", "MODS", "MOJO", "MOLD", "MOLE", "MOLT", "MOMS", "MONK", "MONO", "MOOD", "MOON", "MOOR", "MOOS", "MOOT", "MOPE", "MOPS", "MORE", "MORN", "MOSH", "MOSS", "MOST", "MOTE", "MOTH", "MOVE", "MOWS", "MUCH", "MUCK", "MUDS", "MUFF", "MUGS", "MULE", "MULL", "MUMS", "MUON", "MURK", "MUSE", "MUSH", "MUSK", "MUST", "MUTE", "MUTT", "MYTH", "NAAN", "NABS", "NAGS", "NAIL", "NAME", "NANA", "NANS", "NAPE", "NAPS", "NARC", "NARD", "NARY", "NAVY", "NAYS", "NEAR", "NEAT", "NECK", "NEED", "NEEM", "NEON", "NERD", "NESS", "NEST", "NETS", "NEWS", "NEWT", "NEXT", "NIBS", "NICE", "NICK", "NIGH", "NINE", "NITE", "NOBS", "NODE", "NODS", "NOEL", "NOIR", "NONE", "NOOK", "NOON", "NOPE", "NORI", "NORM", "NOSE", "NOSH", "NOSY", "NOTE", "NOUN", "NOVA", "NUBS", "NUDE", "NUKE", "NULL", "NUMB", "NUNS", "NUTS", "OAFS", "OAKS", "OAKY", "OARS", "OATH", "OATS", "OBEY", "OBIT", "OBOE", "ODDS", "ODES", "ODOR", "OGLE", "OGRE", "OILS", "OILY", "OINK", "OKAY", "OKRA", "OLDS", "OMEN", "OMIT", "ONCE", "ONES", "ONLY", "ONTO", "ONUS", "ONYX", "OOPS", "OOZE", "OOZY", "OPAL", "OPEN", "OPTS", "OPUS", "ORAL", "ORBS", "ORCA", "ORES", "ORGY", "ORZO", "OUCH", "OURS", "OUST", "OUTS", "OVAL", "OVEN", "OVER", "OVUM", "OWED", "OWES", "OWLS", "OWNS", "PACE", "PACK", "PACT", "PADS", "PAGE", "PAID", "PAIL", "PAIN", "PAIR", "PALE", "PALL", "PALM", "PALP", "PALS", "PANE", "PANG", "PANS", "PANT", "PAPA", "PAPS", "PARA", "PARE", "PARK", "PARS", "PART", "PASS", "PAST", "PATE", "PATH", "PATS", "PAVE", "PAWN", "PAWS", "PAYS", "PEAK", "PEAL", "PEAR", "PEAS", "PEAT", "PECK", "PECS", "PEED", "PEEK", "PEEL", "PEEP", "PEER", "PEES", "PEGS", "PELT", "PENS", "PENT", "PEON", "PERK", "PERM", "PERP", "PESO", "PEST", "PETS", "PEWS", "PHEW", "PICK", "PICS", "PIED", "PIER", "PIES", "PIGS", "PIKA", "PIKE", "PILE", "PILL", "PINE", "PING", "PINK", "PINS", "PINT", "PIPE", "PISS", "PITA", "PITH", "PITS", "PITY", "PLAN", "PLAT", "PLAY", "PLEA", "PLEB", "PLED", "PLEX", "PLOD", "PLOP", "PLOT", "PLOW", "PLOY", "PLUG", "PLUM", "PLUS", "POCK", "PODS", "POEM", "POET", "POKE", "POKY", "POLE", "POLL", "POLO", "POLY", "POMP", "POND", "PONG", "PONY", "POOF", "POOL", "POOP", "POOR", "POPE", "POPS", "PORE", "PORK", "PORT", "POSE", "POSH", "POSY", "POTS", "POUF", "POUR", "POUT", "PRAM", "PRAY", "PREP", "PREY", "PREZ", "PRIG", "PRIM", "PROB", "PROD", "PROF", "PROG", "PROM", "PROP", "PROS", "PROW", "PUBS", "PUCK", "PUDS", "PUFF", "PUGS", "PUKE", "PULL", "PULP", "PUMA", "PUMP", "PUNK", "PUNS", "PUNT", "PUNY", "PUPA", "PUPS", "PURE", "PURL", "PURR", "PUSH", "PUSS", "PUTS", "PUTT", "PUTZ", "PYRE", "PYRO", "QUAD", "QUID", "QUIP", "QUIT", "QUIZ", "RACE", "RACK", "RACY", "RADS", "RAFT", "RAGA", "RAGE", "RAGS", "RAID", "RAIL", "RAIN", "RAJA", "RAKE", "RAKU", "RALE", "RAMP", "RAMS", "RANG", "RANK", "RANT", "RAPS", "RAPT", "RARE", "RASH", "RASP", "RATE", "RATH", "RATS", "RAVE", "RAYS", "RAZE", "RAZZ", "READ", "REAL", "REAM", "REAP", "REAR", "REDO", "REED", "REEF", "REEK", "REEL", "REFS", "REIN", "RELY", "REMS", "REND", "RENT", "REPO", "REPP", "REPS", "REST", "RIBS", "RICE", "RICH", "RIDE", "RIDS", "RIFE", "RIFF", "RIFT", "RIGS", "RILE", "RILL", "RIME", "RIMS", "RIND", "RING", "RINK", "RIOT", "RIPE", "RIPS", "RISE", "RISK", "RITE", "RITZ", "ROAD", "ROAM", "ROAN", "ROAR", "ROBE", "ROBS", "ROCK", "RODE", "RODS", "ROES", "ROIL", "ROLE", "ROLL", "ROMP", "ROMS", "ROOF", "ROOK", "ROOM", "ROOS", "ROOT", "ROPE", "ROPY", "ROSE", "ROSY", "ROTE", "ROTI", "ROTO", "ROTS", "ROUT", "ROUX", "ROVE", "ROWS", "RUBE", "RUBS", "RUBY", "RUCK", "RUDE", "RUED", "RUES", "RUFF", "RUGS", "RUIN", "RULE", "RUMP", "RUMS", "RUNE", "RUNG", "RUNS", "RUNT", "RUSE", "RUSH", "RUST", "RUTS", "SACK", "SACS", "SAFE", "SAGA", "SAGE", "SAGO", "SAGS", "SAID", "SAIL", "SAKE", "SAKI", "SALE", "SALT", "SAME", "SAND", "SANE", "SANG", "SANK", "SAPS", "SARI", "SASH", "SASS", "SATE", "SAVE", "SAWN", "SAWS", "SAYS", "SCAB", "SCAD", "SCAM", "SCAN", "SCAR", "SCAT", "SCOT", "SCUD", "SCUM", "SEAL", "SEAM", "SEAR", "SEAS", "SEAT", "SECT", "SEED", "SEEK", "SEEM", "SEEN", "SEEP", "SEER", "SEES", "SELF", "SELL", "SEMI", "SEND", "SENT", "SEPT", "SETS", "SEWN", "SEWS", "SHAM", "SHED", "SHEW", "SHIM", "SHIN", "SHIP", "SHIT", "SHIV", "SHOD", "SHOE", "SHOO", "SHOP", "SHOT", "SHOW", "SHUN", "SHUT", "SIBS", "SICK", "SIDE", "SIFT", "SIGH", "SIGN", "SILK", "SILL", "SILO", "SILT", "SINE", "SING", "SINK", "SINS", "SIPS", "SIRE", "SIRS", "SITE", "SITS", "SIZE", "SKEW", "SKID", "SKIM", "SKIN", "SKIP", "SKIS", "SKIT", "SLAB", "SLAG", "SLAM", "SLAP", "SLAT", "SLAW", "SLAY", "SLED", "SLEW", "SLID", "SLIM", "SLIP", "SLIT", "SLOB", "SLOE", "SLOG", "SLOP", "SLOT", "SLOW", "SLUG", "SLUM", "SMOG", "SMUG", "SNAG", "SNAP", "SNIP", "SNIT", "SNOB", "SNOT", "SNOW", "SNUB", "SNUG", "SOAK", "SOAP", "SOAR", "SOBA", "SOBS", "SOCK", "SODA", "SODS", "SOFA", "SOFT", "SOIL", "SOLD", "SOLE", "SOLO", "SOME", "SONG", "SONS", "SOON", "SOOT", "SOPS", "SORE", "SORT", "SOUL", "SOUP", "SOUR", "SOWN", "SOWS", "SOYA", "SPAM", "SPAN", "SPAR", "SPAS", "SPAT", "SPAY", "SPEC", "SPED", "SPEW", "SPIN", "SPIT", "SPOT", "SPRY", "SPUD", "SPUN", "SPUR", "STAB", "STAG", "STAR", "STAT", "STAY", "STEM", "STEP", "STEW", "STIR", "STOP", "STOW", "STUB", "STUD", "STUN", "STYE", "SUBS", "SUCH", "SUCK", "SUED", "SUES", "SUET", "SUIT", "SULK", "SUMO", "SUMP", "SUMS", "SUNG", "SUNK", "SUNS", "SUPS", "SURE", "SURF", "SUSS", "SWAB", "SWAG", "SWAM", "SWAN", "SWAP", "SWAT", "SWAY", "SWIG", "SWIM", "SWUM", "SYNC", "TABS", "TACH", "TACK", "TACO", "TACT", "TAGS", "TAIL", "TAKE", "TALC", "TALE", "TALK", "TALL", "TAME", "TAMP", "TANG", "TANK", "TANS", "TAPE", "TAPS", "TARE", "TARN", "TARO", "TARP", "TARS", "TART", "TASK", "TAUT", "TAXI", "TEAK", "TEAL", "TEAM", "TEAR", "TEAS", "TEAT", "TECH", "TEEM", "TEEN", "TEES", "TEFF", "TELE", "TELL", "TEMP", "TEND", "TENT", "TERM", "TERN", "TEST", "TEXT", "THAN", "THAT", "THAW", "THEE", "THEM", "THEN", "THEY", "THIN", "THIS", "THOU", "THRU", "THUD", "THUG", "THUS", "TICK", "TIDE", "TIDY", "TIED", "TIER", "TIES", "TIFF", "TIKI", "TILE", "TILL", "TILT", "TIME", "TINE", "TING", "TINS", "TINT", "TINY", "TIPS", "TIRE", "TITS", "TOAD", "TODE", "TOED", "TOES", "TOFU", "TOGA", "TOIL", "TOKE", "TOLD", "TOLE", "TOLL", "TOMB", "TOME", "TONE", "TONG", "TOOK", "TOOL", "TOON", "TOOT", "TOPS", "TORE", "TORN", "TORT", "TORY", "TOSS", "TOTE", "TOTS", "TOUR", "TOUT", "TOWN", "TOWS", "TOYS", "TRAM", "TRAP", "TRAY", "TREE", "TREK", "TREY", "TRIG", "TRIM", "TRIO", "TRIP", "TROD", "TROT", "TSAR", "TUBA", "TUBE", "TUBS", "TUCK", "TUFF", "TUFT", "TUGS", "TUMS", "TUNA", "TUNE", "TURD", "TURF", "TURK", "TURN", "TUSH", "TUSK", "TUTS", "TUTU", "TWEE", "TWIG", "TWIN", "TWIT", "TWOS", "TYKE", "TYPE", "TYPO", "UDON", "UGLY", "UMPS", "UNDO", "UNIT", "UNTO", "UPON", "URGE", "URNS", "USED", "USER", "USES", "VAIL", "VAIN", "VAMP", "VANE", "VANS", "VARY", "VASE", "VAST", "VATS", "VEAL", "VEER", "VEIL", "VEIN", "VEND", "VENT", "VERB", "VERT", "VERY", "VEST", "VETO", "VETS", "VIAL", "VIBE", "VICE", "VIDS", "VIED", "VIES", "VIEW", "VILE", "VIMS", "VINE", "VINO", "VISA", "VISE", "VITA", "VIVA", "VOID", "VOLE", "VOLT", "VOTE", "VOWS", "WACK", "WADE", "WADS", "WAFT", "WAGE", "WAGS", "WAIF", "WAIL", "WAIT", "WAKE", "WALK", "WALL", "WAND", "WANE", "WANT", "WARD", "WARE", "WARM", "WARN", "WARP", "WARS", "WART", "WARY", "WASH", "WASP", "WATT", "WAVE", "WAVY", "WAXY", "WAYS", "WEAK", "WEAN", "WEAR", "WEBS", "WEDS", "WEED", "WEEK", "WEEN", "WEEP", "WELL", "WENT", "WERE", "WEST", "WHAT", "WHEN", "WHOM", "WIDE", "WIFE", "WILD", "WILL", "WILT", "WIND", "WINE", "WING", "WINS", "WIPE", "WIRE", "WISE", "WISH", "WITH", "WOLF", "WOOD", "WOOL", "WORD", "WORE", "WORK", "WORM", "WORN", "WRAP", "YARD", "YARN", "YEAH", "YEAR", "YOGA", "YOUR", "ZERO", "ZINC", "ZONE", "ZOOM"]!
+
+var var i = 0!
+var var j = 0!
+var var INTERVAL = 100!
+
+print("ABET")!
+when (i < 2222) {
+ print(words[i])!
+ i = i + 1!
+}
+print("ZOOM")!
\ No newline at end of file