review
Everything looks good the only thing you might want to consider is allowing leading zeros for integers in your ebnf, at least if you want to follow rust syntax. Was unsure about allowing for empty parentheses, but it appears that it's okay to do that in rust. I would also recommend to not use the literal the way you currently do. Since; "true" , "+" , "12" is a valid syntax unless you separate binary and numeric operators. For example, you could have numeric expressions that only allow for numeric operators and boolean expressions that only allow for boolean operators. It's pretty simple to restrict the grammar to only allow for the correct types in the operations then.