(define-module (c cpp-environment object-like-macro) :use-module (hnh util object) :use-module (hnh util type) :use-module ((c lex2) :select (lexeme?)) :use-module ((c unlex) :select (unlex)) :export (object-like-macro object-like-macro? identifier body)) (define-type (object-like-macro printer: (lambda (r p) (format p "#<#define ~a ~a>" (identifier r) (unlex (body r))))) (identifier type: string?) (body type: (list-of lexeme?)))