modifying preprocessor to support expressions and #if directive