macros + semantic + syntax