aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/lscript/lscript_compile/indra.l
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/lscript/lscript_compile/indra.l')
-rw-r--r--linden/indra/lscript/lscript_compile/indra.l51
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
38void count(); 38void count();
39void comment(); 39void line_comment();
40void block_comment();
40void parse_string(); 41void 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
793void comment() 799void line_comment()
794{ 800{
795 char c; 801 char c;
796 802
@@ -798,6 +804,25 @@ void comment()
798 ; 804 ;
799} 805}
800 806
807void 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
801void count() 826void count()
802{ 827{
803 S32 i; 828 S32 i;