<commit_before># Jellyscript

A scripting language that's a lot like javascript, but stripped down, much stricter, and with a few tweaks.

## Status

Concept code, and a not yet functioning WIP parser.

## Javascript Differences

- There is no global scope or object.
- Strict by default.
- `=` means creation, `~` means mutation. This applies to variables, object properties, and array elements. It provides extra protection and eliminates keywords like `var` and `let`.
- Array elements are added and removed with `pushBack`, `pushFront`, `popBack`, `popFront`. This means they don't get holes per se (they can still contain `nil`s), and you always use `~` to mutate elements, `=` can't be used to add new elements.
- Arrays have `front` and `back` methods.
- Statements such as `"use strict";` that have no effect are illegal. Something like `[[compiler.languageFun();]]` should be provided for language extensions.
- Block scoping and if/for scoping. No function scoping.
- Shadowing variables is illegal.
- Use `func` instead of `function`.
- No named functions (i.e. must use `foo = func() {}` instead of `func foo() {}`)
- No contexts / `this` is not a keyword.
- No `arguments` keyword (use `func(args...) {}` syntax).<commit_msg>Update status on README.md to complete-ish parser<commit_after># Jellyscript

A scripting language that's a lot like javascript, but stripped down, much stricter, and with a few tweaks.

## Status

A complete-ish parser and concept code.

## Javascript Differences

- There is no global scope or object.
- Strict by default.
- `=` means creation, `~` means mutation. This applies to variables, object properties, and array elements. It provides extra protection and eliminates keywords like `var` and `let`.
- Array elements are added and removed with `pushBack`, `pushFront`, `popBack`, `popFront`. This means they don't get holes per se (they can still contain `nil`s), and you always use `~` to mutate elements, `=` can't be used to add new elements.
- Arrays have `front` and `back` methods.
- Statements such as `"use strict";` that have no effect are illegal. Something like `[[compiler.languageFun();]]` should be provided for language extensions.
- Block scoping and if/for scoping. No function scoping.
- Shadowing variables is illegal.
- Use `func` instead of `function`.
- No named functions (i.e. must use `foo = func() {}` instead of `func foo() {}`)
- No contexts / `this` is not a keyword.
- No `arguments` keyword (use `func(args...) {}` syntax).
{'fraction_non_alphanumeric': 0.1112, 'fraction_numerical': 0.0, 'mean_word_length': 4.1995841995842, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '31763', 'n_tokens_mistral': 706, 'n_tokens_neox': 675, 'n_words': 346}