https://ruslanspivak.com/lsbasi-part1/
expr : term ((PLUS | MINUS) term)*
term : factor ((MUL | DIV) factor)*
factor : integer
expr : term ((PLUS | MINUS) term)*
term : factor ((MUL | DIV) factor)*
factor : number (POWER factor)*
number : '(' expr ')' | integer
expr : term ((PLUS | MINUS) term)*
term : factor ((MUL | DIV) factor)*
factor : number (POWER factor)*
number : LParen expr RParen | (PLUS | MINUS) factor | integer