BNF parser

Also with first and follow functions