<commit_before>### Grammar

```
program = entity list;

entity list = {entity};
entity = INTEGRAL NUMBER
	| REAL NUMBER
	| CHARACTER
	| STRING
	| identifier
	| function definition
	| function call;
identifier = (ALPHABETIC IDENTIFIER - "fn") | PUNCTUATION IDENTIFIER;
function definition = "fn", [identifier], "(", {identifier, type}, ")", type,
		entity list,
	";";
type = {":", INTEGRAL NUMBER};
function call = entity, entity, {entity};

SINGLE-LINE COMMENT = ? /(?<![a-z_])nb(?![:a-z_]).*/i ?;
MULTILINE COMMENT = ? /(?<![a-z_])nb:.*?(?<![a-z_])nb;/is ?;
INTEGRAL NUMBER = ? /\d+/ ?;
REAL NUMBER = ? /\d+(((\.\d+)(e-?\d+))|(\.\d+)|(e-?\d+))/ ?;
CHARACTER = ? /'(\\['\\tn]|[^'\n])'/ ?;
STRING = ? /"(\\["\\tn]|(?!\\)[^"])*"/ ?;
ALPHABETIC IDENTIFIER = ? /[a-z_]+/i ?;
PUNCTUATION IDENTIFIER = ? /[!#$%&*+,\-.\/<=>?@[\\\]^`{|}~]+/ ?;
```
<commit_msg>Issue #2: update the grammar description<commit_after>### Grammar

```
program = entity list;

entity list = {entity};
entity = INTEGRAL NUMBER
	| REAL NUMBER
	| CHARACTER
	| STRING
	| identifier
	| assignment
	| function definition
	| function call;
key words = "fn" | "let";
identifier = (ALPHABETIC IDENTIFIER - key words) | PUNCTUATION IDENTIFIER;
assignment = "let", [identifier], type,
		entity list,
	";";
function definition = "fn", [identifier], "(", {identifier, type}, ")", type,
		entity list,
	";";
type = {":", INTEGRAL NUMBER};
function call = entity, entity, {entity};

SINGLE-LINE COMMENT = ? /(?<![a-z_])nb(?![:a-z_]).*/i ?;
MULTILINE COMMENT = ? /(?<![a-z_])nb:.*?(?<![a-z_])nb;/is ?;
INTEGRAL NUMBER = ? /\d+/ ?;
REAL NUMBER = ? /\d+(((\.\d+)(e-?\d+))|(\.\d+)|(e-?\d+))/ ?;
CHARACTER = ? /'(\\['\\tn]|[^'\n])'/ ?;
STRING = ? /"(\\["\\tn]|(?!\\)[^"])*"/ ?;
ALPHABETIC IDENTIFIER = ? /[a-z_]+/i ?;
PUNCTUATION IDENTIFIER = ? /[!#$%&*+,\-.\/<=>?@[\\\]^`{|}~]+/ ?;
```

{'fraction_non_alphanumeric': 0.30647795318454, 'fraction_numerical': 0.0005443658138268917, 'mean_word_length': 3.7989556135770237, 'pattern_counts': {'":': 2, '<': 11, '<?xml version=': 0, '>': 5, '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': '1149027', 'n_tokens_mistral': 849, 'n_tokens_neox': 801, 'n_words': 145}