%option noyywrap
%option yylineno
%option nounput
-%option interactive
+%option batch
+%option never-interactive
%option reentrant
%option stack
<RegExp>\/{RegularExpressionBody}\/{RegularExpressionFlags} L C I(literal, RegEx(Y), tk::RegularExpressionLiteral, hi::Constant);
+#![^\n]* L M
+
\/\/[^\n]* L M
/* http://ostermiller.org/findcomment.html */
@begin E4X ObjectiveC
"@" L C F(tk::At, hi::Operator);
+"#" L C F(tk::Pound, hi::Operator);
@end
"&" L C F(tk::Ampersand, hi::Operator);
"[" L C F(tk::OpenBracket, hi::Structure);
"]" L C F(tk::CloseBracket, hi::Structure);
+"@error" L C F(tk::AtError, hi::Error);
+
@begin Java
"@class" L C F(tk::AtClass, hi::Meta);
@end
+@begin C
+"typedef" L C I(identifier, Identifier("typedef"), tk::Typedef, hi::Meta);
+"unsigned" L C I(identifier, Identifier("unsigned"), tk::Unsigned, hi::Type);
+"signed" L C I(identifier, Identifier("signed"), tk::Signed, hi::Type);
+@end
+
@begin ObjectiveC
"@encode" L C F(tk::AtEncode, hi::Meta);
"@end" L C F(tk::AtEnd, hi::Meta);
"@implementation" L C F(yyextra->no_.AtImplementation ? tk::AtImplementation_ : tk::AtImplementation, hi::Meta);
-"@import" L C F(tk::AtImport, hi::Meta);
+"@import" L C F(tk::AtImport, hi::Special);
"@selector" L C F(tk::AtSelector, hi::Meta);
"NULL" L C I(identifier, Identifier("NULL"), tk::Identifier_, hi::Constant);
"nil" L C I(identifier, Identifier("nil"), tk::Identifier_, hi::Constant);
-"YES" L C I(identifier, Identifier("YES"), tk::Identifier_, hi::Constant);
-"NO" L C I(identifier, Identifier("NO"), tk::Identifier_, hi::Constant);
+"YES" L C I(identifier, Identifier("YES"), tk::Yes, hi::Constant);
+"NO" L C I(identifier, Identifier("NO"), tk::No, hi::Constant);
"bool" L C I(identifier, Identifier("bool"), tk::Identifier_, hi::Type);
"BOOL" L C I(identifier, Identifier("BOOL"), tk::Identifier_, hi::Type);
"id" L C I(identifier, Identifier("id"), tk::Identifier_, hi::Type);
+"SEL" L C I(identifier, Identifier("SEL"), tk::Identifier_, hi::Type);
@end
"undefined" L C I(identifier, Identifier("undefined"), tk::Identifier_, hi::Operator);