<commit_before>/*
Initial "pDuro":

No closures due to a focus on strict non-sharing processes; may be added later, though likely not runtime-wise.
No dicts due to a focus on strict non-sharing processes; can potentially be implemented.
Argument modifier ' indicates something else than closures but something similar to closure; what exactly? (or at least more specifically)

Special forms for mutable built-in types can only be applied when receiver is of this type, i.e. such usage most be associated to the respective prototypical process for such types.
E.g. array, proto array process, and special array forms arrayLength, arrayGet, and arraySet:

// The below is okay:
Array = #(
	// Within this scope, the receiver is always an array
	var env = receive
	
	if' env.message.id == "[]" && env.message.argumentCount == 1, (
		var index = env.message.getArgument: 0
		var item = arrayGet: this, index
		env.reply: item
	)
	
	if' env.message.id == "[]" && env.message.argumentCount == 2, (
		var index = env.message.getArgument: 0
		var item = env.message.getArgument: 1
		arraySet: this, index, item
		env.reply: null
	)
)

var array = #[1 2 3 4 5]
arrayGet: array, 1 // This results in an error because the current receiver isn't an array
*/

grammar Duro;

program: expression*;
expression: expressionReceiver expressionChain*;<commit_msg>Extended commentary planning for "pDuro" a bit.<commit_after>/*
Initial "pDuro":

No closures due to a focus on strict non-sharing processes; may be added later, though likely not runtime-wise.
No dicts due to a focus on strict non-sharing processes; can potentially be implemented.
Argument modifier ' indicates something else than closures but something similar to closure; what exactly? (or at least more specifically)

Special forms for mutable built-in types can only be applied when receiver is of this type, i.e. such usage most be associated to the respective prototypical process for such types.
E.g. array, proto array process, and special array forms arrayLength, arrayGet, and arraySet:

// The below is okay:
Array = #(
	// Within this scope, the receiver is always an array
	var env = receive
	
	if' env.message.id == "[]" && env.message.argumentCount == 1, (
		var index = env.message.getArgument: 0
		var item = arrayGet: this, index
		env.reply: item
	)
	
	if' env.message.id == "[]" && env.message.argumentCount == 2, (
		var index = env.message.getArgument: 0
		var item = env.message.getArgument: 1
		arraySet: this, index, item
		env.reply: null
	)
)

var array = #[1 2 3 4 5]
arrayGet: array, 1 // This results in an error because the current receiver isn't an array

Tuples instead of arrays
*/

grammar Duro;

program: expression*;
expression: expressionReceiver expressionChain*;
{'fraction_non_alphanumeric': 0.08842794759825327, 'fraction_numerical': 0.008005822416302766, 'mean_word_length': 4.044036697247706, 'pattern_counts': {'":': 2, '<': 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': '2352866', 'n_tokens_mistral': 823, 'n_tokens_neox': 763, 'n_words': 361}