modify to add non-backtracking version parser and to specify reserved symbols to make the parser work correctly