diff options
Diffstat (limited to 'linden/indra/lscript/lscript_compile/indra.l')
-rw-r--r-- | linden/indra/lscript/lscript_compile/indra.l | 51 |
1 files changed, 38 insertions, 13 deletions
diff --git a/linden/indra/lscript/lscript_compile/indra.l b/linden/indra/lscript/lscript_compile/indra.l index 3e62195..ac52432 100644 --- a/linden/indra/lscript/lscript_compile/indra.l +++ b/linden/indra/lscript/lscript_compile/indra.l | |||
@@ -36,7 +36,8 @@ FS (f|F) | |||
36 | #include "llclickaction.h" | 36 | #include "llclickaction.h" |
37 | 37 | ||
38 | void count(); | 38 | void count(); |
39 | void comment(); | 39 | void line_comment(); |
40 | void block_comment(); | ||
40 | void parse_string(); | 41 | void parse_string(); |
41 | 42 | ||
42 | #define YYLMAX 16384 | 43 | #define YYLMAX 16384 |
@@ -60,7 +61,8 @@ extern "C" { int yyerror(const char *fmt, ...); } | |||
60 | %} | 61 | %} |
61 | 62 | ||
62 | %% | 63 | %% |
63 | "//" { gInternalLine++; gInternalColumn = 0; comment(); } | 64 | "//" { gInternalLine++; gInternalColumn = 0; line_comment(); } |
65 | "/*" { block_comment(); } | ||
64 | 66 | ||
65 | "integer" { count(); return(INTEGER); } | 67 | "integer" { count(); return(INTEGER); } |
66 | "float" { count(); return(FLOAT_TYPE); } | 68 | "float" { count(); return(FLOAT_TYPE); } |
@@ -116,6 +118,7 @@ extern "C" { int yyerror(const char *fmt, ...); } | |||
116 | "object_rez" { count(); return(OBJECT_REZ); } | 118 | "object_rez" { count(); return(OBJECT_REZ); } |
117 | "remote_data" { count(); return(REMOTE_DATA); } | 119 | "remote_data" { count(); return(REMOTE_DATA); } |
118 | "http_response" { count(); return(HTTP_RESPONSE); } | 120 | "http_response" { count(); return(HTTP_RESPONSE); } |
121 | "http_request" { count(); return(HTTP_REQUEST); } | ||
119 | "." { count(); return(PERIOD); } | 122 | "." { count(); return(PERIOD); } |
120 | 123 | ||
121 | 124 | ||
@@ -219,16 +222,17 @@ extern "C" { int yyerror(const char *fmt, ...); } | |||
219 | "INVENTORY_ALL" { count(); yylval.ival = LLAssetType::AT_NONE; return(INTEGER_CONSTANT); } | 222 | "INVENTORY_ALL" { count(); yylval.ival = LLAssetType::AT_NONE; return(INTEGER_CONSTANT); } |
220 | "INVENTORY_NONE" { count(); yylval.ival = LLAssetType::AT_NONE; return(INTEGER_CONSTANT); } | 223 | "INVENTORY_NONE" { count(); yylval.ival = LLAssetType::AT_NONE; return(INTEGER_CONSTANT); } |
221 | 224 | ||
222 | "CHANGED_INVENTORY" { count(); yylval.ival = 0x1; return(INTEGER_CONSTANT); } | 225 | "CHANGED_INVENTORY" { count(); yylval.ival = CHANGED_INVENTORY; return(INTEGER_CONSTANT); } |
223 | "CHANGED_COLOR" { count(); yylval.ival = 0x2; return(INTEGER_CONSTANT); } | 226 | "CHANGED_COLOR" { count(); yylval.ival = CHANGED_COLOR; return(INTEGER_CONSTANT); } |
224 | "CHANGED_SHAPE" { count(); yylval.ival = 0x4; return(INTEGER_CONSTANT); } | 227 | "CHANGED_SHAPE" { count(); yylval.ival = CHANGED_SHAPE; return(INTEGER_CONSTANT); } |
225 | "CHANGED_SCALE" { count(); yylval.ival = 0x8; return(INTEGER_CONSTANT); } | 228 | "CHANGED_SCALE" { count(); yylval.ival = CHANGED_SCALE; return(INTEGER_CONSTANT); } |
226 | "CHANGED_TEXTURE" { count(); yylval.ival = 0x10; return(INTEGER_CONSTANT); } | 229 | "CHANGED_TEXTURE" { count(); yylval.ival = CHANGED_TEXTURE; return(INTEGER_CONSTANT); } |
227 | "CHANGED_LINK" { count(); yylval.ival = 0x20; return(INTEGER_CONSTANT); } | 230 | "CHANGED_LINK" { count(); yylval.ival = CHANGED_LINK; return(INTEGER_CONSTANT); } |
228 | "CHANGED_ALLOWED_DROP" { count(); yylval.ival = 0x40; return(INTEGER_CONSTANT); } | 231 | "CHANGED_ALLOWED_DROP" { count(); yylval.ival = CHANGED_ALLOWED_DROP; return(INTEGER_CONSTANT); } |
229 | "CHANGED_OWNER" { count(); yylval.ival = 0x80; return(INTEGER_CONSTANT); } | 232 | "CHANGED_OWNER" { count(); yylval.ival = CHANGED_OWNER; return(INTEGER_CONSTANT); } |
230 | "CHANGED_REGION" { count(); yylval.ival = 0x100; return(INTEGER_CONSTANT); } | 233 | "CHANGED_REGION" { count(); yylval.ival = CHANGED_REGION; return(INTEGER_CONSTANT); } |
231 | "CHANGED_TELEPORT" { count(); yylval.ival = 0x200; return(INTEGER_CONSTANT); } | 234 | "CHANGED_TELEPORT" { count(); yylval.ival = CHANGED_TELEPORT; return(INTEGER_CONSTANT); } |
235 | "CHANGED_REGION_START" { count(); yylval.ival = CHANGED_REGION_START; return(INTEGER_CONSTANT); } | ||
232 | 236 | ||
233 | "OBJECT_UNKNOWN_DETAIL" { count(); yylval.ival = OBJECT_UNKNOWN_DETAIL; return(INTEGER_CONSTANT); } | 237 | "OBJECT_UNKNOWN_DETAIL" { count(); yylval.ival = OBJECT_UNKNOWN_DETAIL; return(INTEGER_CONSTANT); } |
234 | "OBJECT_NAME" { count(); yylval.ival = OBJECT_NAME; return(INTEGER_CONSTANT); } | 238 | "OBJECT_NAME" { count(); yylval.ival = OBJECT_NAME; return(INTEGER_CONSTANT); } |
@@ -250,6 +254,8 @@ extern "C" { int yyerror(const char *fmt, ...); } | |||
250 | 254 | ||
251 | "NULL_KEY" { yylval.sval = new char[UUID_STR_LENGTH]; strcpy(yylval.sval, "00000000-0000-0000-0000-000000000000"); return(STRING_CONSTANT); } | 255 | "NULL_KEY" { yylval.sval = new char[UUID_STR_LENGTH]; strcpy(yylval.sval, "00000000-0000-0000-0000-000000000000"); return(STRING_CONSTANT); } |
252 | "EOF" { yylval.sval = new char[UUID_STR_LENGTH]; strcpy(yylval.sval, "\n\n\n"); return(STRING_CONSTANT); } | 256 | "EOF" { yylval.sval = new char[UUID_STR_LENGTH]; strcpy(yylval.sval, "\n\n\n"); return(STRING_CONSTANT); } |
257 | "URL_REQUEST_GRANTED" { yylval.sval = new char[UUID_STR_LENGTH]; strcpy(yylval.sval, URL_REQUEST_GRANTED); return(STRING_CONSTANT); } | ||
258 | "URL_REQUEST_DENIED" { yylval.sval = new char[UUID_STR_LENGTH]; strcpy(yylval.sval, URL_REQUEST_DENIED); return(STRING_CONSTANT); } | ||
253 | 259 | ||
254 | "PI" { count(); yylval.fval = F_PI; return(FP_CONSTANT); } | 260 | "PI" { count(); yylval.fval = F_PI; return(FP_CONSTANT); } |
255 | "TWO_PI" { count(); yylval.fval = F_TWO_PI; return(FP_CONSTANT); } | 261 | "TWO_PI" { count(); yylval.fval = F_TWO_PI; return(FP_CONSTANT); } |
@@ -790,7 +796,7 @@ S32 yywrap() | |||
790 | return(1); | 796 | return(1); |
791 | } | 797 | } |
792 | 798 | ||
793 | void comment() | 799 | void line_comment() |
794 | { | 800 | { |
795 | char c; | 801 | char c; |
796 | 802 | ||
@@ -798,6 +804,25 @@ void comment() | |||
798 | ; | 804 | ; |
799 | } | 805 | } |
800 | 806 | ||
807 | void block_comment() | ||
808 | { | ||
809 | char c1 = 0; | ||
810 | char c2 = yyinput(); | ||
811 | while (c2 != 0 && c2 != EOF && !(c1 == '*' && c2 == '/')) { | ||
812 | if (c2 == '\n') | ||
813 | { | ||
814 | gInternalLine++; | ||
815 | gInternalColumn = 0; | ||
816 | } | ||
817 | else if (c2 == '\t') | ||
818 | gInternalColumn += 4 - (gInternalColumn % 8); | ||
819 | else | ||
820 | gInternalColumn++; | ||
821 | c1 = c2; | ||
822 | c2 = yyinput(); | ||
823 | } | ||
824 | } | ||
825 | |||
801 | void count() | 826 | void count() |
802 | { | 827 | { |
803 | S32 i; | 828 | S32 i; |