state haskell extends HighlightEntry
{
/\{\-/ {
comment_face (true);
language_print ($0);
call (haskell_comment);
comment_face (false);
}
/\-\-/ {
comment_face (true);
language_print ($0);
call (eat_one_line);
comment_face (false);
}
/\b\_/ {
keyword_face (true);
language_print ($0);
call (haskell_builtin);
keyword_face (false);
}
/::/ {
type_face (true);
language_print ($0);
call (eat_one_line);
type_face (false);
}
/\"/ {
string_face (true);
language_print ($0);
call (haskell_string);
string_face (false);
}
/^#/ {
reference_face (true);
language_print ($0);
call (eat_one_line);
reference_face (false);
}
/'.'|'\\.'/ {
string_face (true);
language_print ($0);
string_face (false);
}
/\b((infix|then)|c(ase|lass)|d(ata|e(fault|riving))|else|hiding|i([fn]|mport|n(fix[lr]|stance|terface))|let|module|of|renaming|t(o|ype)|where)\b/ {
keyword_face (true);
language_print ($0);
keyword_face (false);
}
}
state haskell_comment extends Highlight
{
/\-\}/ {
language_print ($0);
return;
}
}
state haskell_builtin extends Highlight
{
/(\_\b)| / {
language_print ($0);
return;
}
}
state haskell_type extends Highlight
{
/\n/ {
language_print ($0);
return;
}
}
state haskell_string extends Highlight
{
/\\\\./ {
language_print ($0);
}
/\"/ {
language_print ($0);
return;
}
}
state haskell_ppline extends Highlight
{
/\/\*/ {
reference_face (false);
comment_face (true);
language_print ($0);
call (c_comment);
comment_face (false);
reference_face (true);
}
/\n/ {
language_print ($0);
return;
}
}