Partially working... needs lexer
Workingish parser