I realized that the existing naming would present some problems when defining the syntax grammar, as it would be useful for the token terminals not to conflict with those for the syntax. To this end, I've reworded some of the existing grammar:
Code:
token ::= <keyword> | <number> | <char> | <string> | <identifier> |
<assignment-token> | <arithmetic-token> | <bitwise-token> | <logical-token> |
<paren> | <colon> | <right-arrow> | <angle-bracket> | <brace> | <bracket> |
<comma> | <period>
keyword ::= <base-type> | <if-token> | <elif-token> | <else-token> |
<unbounded-iteration-token> | <indefinite-iteration-token> | <reverse-indefinite-iteration-token> | <definite-iteration-token> |
<fn-token> | <var-decl-token> | <mutable-modifier-token> | <object-token> |
<return-token>
<import-token> | <as-token> | <alias-token> |
<and-token> | <or-token> | <not-token>
base-type ::= "i8"| "i16" | "i32" | "i64" |"f32" | "f64" | "bool" | "char" |
"string" | "ptr" | "Array" | "Vector"
if-token ::= "if"
elif-token ::= "elif"
else-token ::= "else"
unbounded-iteration-token ::= "loop"
indefinite-iteration-token ::= "while"
reverse-indefinite-iteration-token ::= "once"
definite-iteration-token ::= "for"
fn-decl ::= "fn"
var-decl ::= "let"
mutable-modifier ::= "mut"
object-decl ::= "object"
return-token ::= "return"
import-token ::= "import"
as-token ::= "as"
alias-token ::= "alias"
and-token ::= "and"
or-token ::= "or"
alias-token ::= "not"
identifer ::= <alpha><alphanum>*
alpha ::= "A" | "a" |"B" | "b" | "C" | "c" ... | Z" | "z"
alphanum ::= <alpha> | <digit>
bit ::= "0" | "1"
octal-digit ::= <bit> | "2" | "3" | "4" | "5" | "6" | "7"
digit ::= <octal-digit> | "8" | "9"
hex-digit ::= <digit> | "A" | "a" |"B" | "b" | "C" | "c" | "D" | "d" | "E" | "e" | "F" | "f"
number ::= <integer> | <float>
integer ::= <digit>+ | "0b" <bit> | "0" <octal-digit> | "0x" <hex-digit>
float ::= <integer> <period> <integer> {("E"|"e") <integer>}
char ::= <quote> {<printable-character>} <quote>
string ::= <double-quote> {(<printable-character> | '\"')}* <double-quote>
assignment-token ::= "="
arithmetic-token ::= <add-token> | <sub-token> | <mult-token> | <div-token>
add-token ::= "+"
sub-token ::= "-"
mul-token ::= "*"
div-token ::= "/"
bitwise-token ::= <left-shift-token> | <right-shift-token> |<bitwise-and-token> |<bitwise-or-token>
left-shift-token ::= "<<"
right-shift-token ::= ">>"
bitwise-and-token :: = "&"
bitwise-or-token ::= "|"
logical-token ::= <equals-token> | <not-equal-token> | <less-than-token> | <greater-than-token> | <lt-eq-token> | <gt-equal-token>
equals-token ::= "=="
not-equal-token ::= "!="
less-than-token ::= "<"
greater-than-token ::= ">"
lt-eq-token ::= "<="
gt-equal-token ::= ">="
paren ::= <lparen> | <rparen>
lparen ::= "("
rparen ::= ")"
angle-bracket ::= <langle> | <rangle>
langle ::= "<"
rangle ::= ">"
brace ::= <lbrace> | <rbrace>
lbrace ::= "{"
rbrace ::= "}"
bracket ::= <lbracket> | <rbracket>
lbracket ::= "["
rbracket ::= "]"
colon ::= ":"
right-arrow ::= "->"
comma ::= ","
period ::= "."
quote ::= "'"
double-quote ::= '"'
As for helping, I would be glad to take part. I will send you my email address in DM.