main parser and interpreter