<commit_before>// Primitive Recursion
Pr -> <Base>, ";", <Rec>
Base -> <Func>
Rec -> <Id>, <PrCall>
PrCall -> "(y", <ArgEnd>, ")"

// Function stuff
Func -> <Pr>|<Id>, <Call>|<Head>|<Tail>|<Prepend>|<Append>
Def -> <Id>, <Sig>, "=", <Func>
Sig -> "(", [{<Id>}], ")"
Call -> "(", <Args>, ")"
Args -> "ε"|<Arg>, <ArgEnd>
ArgEnd -> {",", <Arg>}
Arg -> <Func>|<Id>|<List>|<Const>|<OpExpr>

// OpExpr stuff
OpExpr -> Add|Sub|Mul|Div|Mod|Neg
Add -> "+", <Call>
Sub -> "-", <Call>
Mul -> "*", <Call>
Div -> "/", <Call>
Mod -> "%", <Call>
Neg -> "~", <Call>

// BoolExpr stuff
BoolExpr -> Comp|And|Or|Not
Comp -> LessThan | GreaterThan | Equals | NotEquals | LessThanEquals | GreaterThanEquals
LessThan -> "<", <Call>
GreaterThan -> ">", <Call>
Equals -> "=", <Call>
NotEquals -> "!=", <Call>
LessThanEquals -> "<=", <Call>
GreaterThanEquals -> ">=", <Call>
And -> "&", <Call>
Or -> "|", <Call>
Not -> "!", <Call>



// List stuff
List -> "[", <Args> "]"
Head -> "h", <List>
Tail -> "t", <List>
Append -> "$(", <Args>, ",", <List>, ")"
Prepend -> "^(", <Args>, ",", <List>, ")"

// Const stuff
Id -> {"_" | "a" | "b" | "c" | ... | "z" | "A" | "B" | "C" | ... | "Z"}
Const -> "T"|"F"|<Number>|<String>
String -> "'", {<Chars>}, "'"
Chars -> any letter or digit
Number -> {<Digit>}, [".", <Digit>], ["e"|"E, +|-|"ε", {<Digit>}]
Digit -> "0"|"1"|"2"|...|"9"

// Other stuff
Print -> "print(", <Func>, ")"
Prog -> [{<Def>}], <Func>
<commit_msg>Fixed PR<commit_after>// Primitive Recursion
Pr -> <Base>, ";", <Rec>
Base -> <BoolExpr>, ":", <Func>
Rec -> <Func>

// Function stuff
Func -> <Pr>|<Id>, <Call>|<Head>|<Tail>|<Prepend>|<Append>
Def -> <Id>, <Sig>, "=", <Func>
Sig -> "(", [{<Id>}], ")"
Call -> "(", <Args>, ")"
Args -> "ε"|<Arg>, <ArgEnd>
ArgEnd -> {",", <Arg>}
Arg -> <Func>|<Id>|<List>|<Const>|<OpExpr>

// OpExpr stuff
OpExpr -> Add|Sub|Mul|Div|Mod|Neg
Add -> "+", <Call>
Sub -> "-", <Call>
Mul -> "*", <Call>
Div -> "/", <Call>
Mod -> "%", <Call>
Neg -> "~", <Call>

// BoolExpr stuff
BoolExpr -> Comp|And|Or|Not
Comp -> LessThan | GreaterThan | Equals | NotEquals | LessThanEquals | GreaterThanEquals
LessThan -> "<", <Call>
GreaterThan -> ">", <Call>
Equals -> "=", <Call>
NotEquals -> "!=", <Call>
LessThanEquals -> "<=", <Call>
GreaterThanEquals -> ">=", <Call>
And -> "&", <Call>
Or -> "|", <Call>
Not -> "!", <Call>



// List stuff
List -> "[", <Args> "]"
Head -> "h", <List>
Tail -> "t", <List>
Append -> "$(", <Args>, ",", <List>, ")"
Prepend -> "^(", <Args>, ",", <List>, ")"

// Const stuff
Id -> {"_" | "a" | "b" | "c" | ... | "z" | "A" | "B" | "C" | ... | "Z"}
Const -> "T"|"F"|<Number>|<String>
String -> "'", {<Chars>}, "'"
Chars -> any letter or digit
Number -> {<Digit>}, [".", <Digit>], ["e"|"E, +|-|"ε", {<Digit>}]
Digit -> "0"|"1"|"2"|...|"9"

// Other stuff
Print -> "print(", <Func>, ")"
Prog -> [{<Def>}], <Func>

{'fraction_non_alphanumeric': 0.3488372093023256, 'fraction_numerical': 0.0028188865398167725, 'mean_word_length': 3.616260162601626, 'pattern_counts': {'":': 1, '<': 120, '<?xml version=': 0, '>': 203, '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': '1649810', 'n_tokens_mistral': 1233, 'n_tokens_neox': 1178, 'n_words': 260}