summaryrefslogtreecommitdiff
path: root/indra/lscript/lscript_compile/indra.y
diff options
context:
space:
mode:
Diffstat (limited to 'indra/lscript/lscript_compile/indra.y')
-rwxr-xr-xindra/lscript/lscript_compile/indra.y37
1 files changed, 36 insertions, 1 deletions
diff --git a/indra/lscript/lscript_compile/indra.y b/indra/lscript/lscript_compile/indra.y
index a0a034d21c..c451eee3d8 100755
--- a/indra/lscript/lscript_compile/indra.y
+++ b/indra/lscript/lscript_compile/indra.y
@@ -15,7 +15,6 @@
#pragma warning (disable : 4702) // warning C4702: unreachable code
#pragma warning( disable : 4065 ) // warning: switch statement contains 'default' but no 'case' labels
#endif
-
%}
%union
@@ -75,6 +74,8 @@
%token MONEY
%token EMAIL
%token RUN_TIME_PERMISSIONS
+%token EXPERIENCE_PERMISSIONS
+%token EXPERIENCE_PERMISSIONS_DENIED
%token INVENTORY
%token ATTACH
%token DATASERVER
@@ -180,6 +181,8 @@
%type <event> money
%type <event> email
%type <event> run_time_permissions
+%type <event> experience_permissions
+%type <event> experience_permissions_denied
%type <event> inventory
%type <event> attach
%type <event> dataserver
@@ -788,6 +791,16 @@ event
$$ = new LLScriptEventHandler(gLine, gColumn, $1, $2);
gAllocationManager->addAllocation($$);
}
+ | experience_permissions compound_statement
+ {
+ $$ = new LLScriptEventHandler(gLine, gColumn, $1, $2);
+ gAllocationManager->addAllocation($$);
+ }
+ | experience_permissions_denied compound_statement
+ {
+ $$ = new LLScriptEventHandler(gLine, gColumn, $1, $2);
+ gAllocationManager->addAllocation($$);
+ }
| inventory compound_statement
{
$$ = new LLScriptEventHandler(gLine, gColumn, $1, $2);
@@ -1040,6 +1053,28 @@ run_time_permissions
}
;
+experience_permissions
+ : EXPERIENCE_PERMISSIONS '(' LLKEY IDENTIFIER ')'
+ {
+ LLScriptIdentifier *id1 = new LLScriptIdentifier(gLine, gColumn, $4);
+ gAllocationManager->addAllocation(id1);
+ $$ = new LLScriptEXPEvent(gLine, gColumn, id1);
+ gAllocationManager->addAllocation($$);
+ }
+ ;
+
+experience_permissions_denied
+ : EXPERIENCE_PERMISSIONS_DENIED '(' LLKEY IDENTIFIER ',' INTEGER IDENTIFIER ')'
+ {
+ LLScriptIdentifier *id1 = new LLScriptIdentifier(gLine, gColumn, $4);
+ gAllocationManager->addAllocation(id1);
+ LLScriptIdentifier *id2 = new LLScriptIdentifier(gLine, gColumn, $7);
+ gAllocationManager->addAllocation(id2);
+ $$ = new LLScriptEXPDeniedEvent(gLine, gColumn, id1, id2);
+ gAllocationManager->addAllocation($$);
+ }
+ ;
+
inventory
: INVENTORY '(' INTEGER IDENTIFIER ')'
{