-/* Cycript - Optimizing JavaScript Compiler/Runtime
- * Copyright (C) 2009-2015 Jay Freeman (saurik)
+/* Cycript - The Truly Universal Scripting Language
+ * Copyright (C) 2009-2016 Jay Freeman (saurik)
*/
/* GNU Affero General Public License, Version 3 {{{ */
I(type, Type(P.strmemdup(yyextra->buffer_.data(), yyextra->buffer_.size()), yyextra->buffer_.size()), value, highlight); \
} while (false)
-#define YY_INPUT(data, value, size) { \
- if (yyextra->data_.eof()) \
- value = YY_NULL; \
- else { \
- yyextra->data_.read(data, size); \
- size_t copy(yyextra->data_.gcount()); \
- value = copy == 0 ? YY_NULL : copy; \
- } \
-}
+#define YY_INPUT(data, value, size) do { \
+ value = yyextra->data_.sgetn(data, size) ?: YY_NULL; \
+} while (false)
%}
/* RegEx {{{ */
<RegularExpression>{
- \/{UnicodePart}* R CYLexBufferUnits(yytext, yyleng); CYLexBufferEnd(literal, RegEx, tk::RegularExpressionLiteral, hi::Constant);
+ \/{UnicodePart}* R CYLexBufferUnits(yytext, yyleng); CYLexBufferEnd(literal, RegEx, tk::RegularExpressionLiteral_, hi::Constant);
\/{UnicodePart}*{UnicodeError} R E("invalid character");
{RegExCharacter}+ R CYLexBufferUnits(yytext, yyleng);
".." L E("invalid operator")
@begin E4X
-"::" L F(tk::ColonColon, hi::Operator);
".." L F(tk::PeriodPeriod, hi::Operator);
@end
@begin E4X ObjectiveC
"@" L F(tk::At, hi::Operator);
-"#" L F(tk::Pound, hi::Operator);
@end
"&" L F(tk::Ampersand, hi::Operator);
"%" L F(tk::Percent, hi::Operator);
"%=" L F(tk::PercentEqual, hi::Operator);
"." L F(tk::Period, hi::Operator);
+"?." L F(tk::QuestionPeriod, hi::Operator);
"|" L F(tk::Pipe, hi::Operator);
"|=" L F(tk::PipeEqual, hi::Operator);
"||" L F(tk::PipePipe, hi::Operator);
"/=" L F(tk::SlashEqual, hi::Operator);
":" L F(tk::Colon, hi::Structure);
+"::" L F(tk::ColonColon, hi::Structure);
"," L F(tk::Comma, hi::Structure);
"?" L F(tk::Question, hi::Structure);
";" L F(tk::SemiColon, hi::Structure);
+"#" L F(tk::Pound, hi::Operator);
"(" L F(tk::OpenParen, hi::Structure);
")" L F(tk::CloseParen, hi::Structure);
/* }}} */
/* Reserved {{{ */
"abstract" L /*FII*/ F(tk::_abstract_, hi::Meta);
+"as" L /*III*/ F(tk::_as_, hi::Meta);
"await" L /*II?*/ F(tk::_await_, hi::Meta);
"boolean" L /*FII*/ F(tk::_boolean_, hi::Type);
"break" L /*KKK*/ F(tk::_break_, hi::Control);
"Infinity" L /*III*/ F(tk::_Infinity_, hi::Constant);
"instanceof" L /*KKK*/ F(tk::_instanceof_, hi::Operator);
"int" L /*FII*/ F(tk::_int_, hi::Type);
+"__int128" L /*III*/ F(tk::___int128_, hi::Type);
"interface" L /*FSS*/ F(tk::_interface_, hi::Meta);
"let" L /*IS?*/ F(tk::_let_, hi::Meta);
"long" L /*FII*/ F(tk::_long_, hi::Type);
"package" L /*FSS*/ F(tk::_package_, hi::Meta);
"private" L /*FSS*/ F(tk::_private_, hi::Meta);
"protected" L /*FSS*/ F(tk::_protected_, hi::Meta);
+"__proto__" L /*III*/ F(tk::___proto___, hi::Special);
"prototype" L /*III*/ F(tk::_prototype_, hi::Special);
"public" L /*FSS*/ F(tk::_public_, hi::Meta);
"return" L /*KKK*/ F(tk::_return_, hi::Control);
"transient" L /*FII*/ F(tk::_transient_, hi::Meta);
"true" L /*LLL*/ F(tk::_true_, hi::Constant);
"try" L /*KKK*/ F(tk::_try_, hi::Control);
+"typeid" L /*III*/ F(tk::_typeid_, hi::Operator);
"typeof" L /*KKK*/ F(tk::_typeof_, hi::Operator);
"var" L /*KKK*/ F(tk::_var_, hi::Meta);
"void" L /*KKK*/ F(tk::_void_, hi::Operator);
"with" L /*KKK*/ F(tk::_with_, hi::Control);
"yield" L /*IS?*/ F(tk::_yield_, hi::Control);
-"auto" L F(tk::_auto_, hi::Meta);
"each" L F(tk::_each_, hi::Control);
"of" L F(tk::_of_, hi::Operator);
@begin C
"extern" L F(tk::_extern_, hi::Type);
"signed" L F(tk::_signed_, hi::Type);
+"struct" L F(tk::_struct_, hi::Meta);
"typedef" L F(tk::_typedef_, hi::Meta);
"unsigned" L F(tk::_unsigned_, hi::Type);
@end
"$" R CYLexBufferUnit('$');
{PlateCharacter}+ R CYLexBufferUnits(yytext, yyleng);
- {PlateCharacter}*{LineTerminatorSequence} R E("invalid newline");
{PlateCharacter}*{UnicodeScrap} R E("invalid character");
+
+ {PlateCharacter}*{LineTerminatorSequence} yylloc->end.Lines(); CYLexBufferUnits(yytext, yyleng);
+ \\{LineTerminatorSequence} yylloc->end.Lines();
}
/* }}} */
/* Escapes {{{ */