add preprocessor parser and its test