state m4 extends HighlightEntry
{
BEGIN {
require_state (pascal);
}
/dnl|#/ {
comment_face (true);
language_print ($0);
call (eat_one_line);
comment_face (false);
}
/\`/ {
string_face (true);
language_print ($0);
call (pascal_string);
string_face (false);
}
/\b(change(com|quote)|d(e(cr|f(ine|n))|iv(ert|num)|umpdef)|e(rrprint|val)\
|i(f(def|else)|n(c(lude|r)|dex))|len|m(4(exit|wrap)|aketemp)\
|p(opdef|ushdef)|s(hift|include|ubstr|ys(cmd|val))\
|tra(ceo(ff|n)|nslit)|und(efine|ivert))\b/ {
keyword_face (true);
language_print ($0);
keyword_face (false);
}
}