@@ -308,7 +308,7 @@ ACTION_SETUID
308308 ;
309309
310310ACTION_SETVAR
311- : ' setvar'
311+ : ' setvar' -> pushMode( SETVAR )
312312 ;
313313
314314ACTION_SEVERITY
@@ -1143,47 +1143,87 @@ STRING
11431143mode MACRO ;
11441144
11451145MACRO_EXPANSION
1146- : VARIABLE_NAME ' }' -> popMode
1146+ : ( LETTER | DIGIT ) ( LETTER | DIGIT | ' _ ' | ' - ' | ' . ' )* ' }' -> popMode
11471147 ;
11481148
11491149mode SETVAR ;
11501150
1151+ COLON_SETVAR
1152+ : ' :' -> type(COLON )
1153+ ;
1154+
11511155SINGLE_QUOTE_SETVAR
11521156 : ' \' ' -> type(SINGLE_QUOTE )
11531157 ;
11541158
1159+ COLLECTION_NAME_SETVAR
1160+ : (' ip'
1161+ | ' IP'
1162+ | ' global'
1163+ | ' GLOBAL'
1164+ | ' resource'
1165+ | ' RESOURCE'
1166+ | ' session'
1167+ | ' SESSION'
1168+ | ' user'
1169+ | ' USER'
1170+ | ' tx'
1171+ | ' TX' )
1172+ ;
1173+
1174+ DOT
1175+ : ' .'
1176+ ;
1177+
11551178COLLECTION_ELEMENT
1156- : (' t ' | ' T ' ) ( ' x ' | ' X ' ) ' . ' ( LETTER ) (LETTER | DIGIT | ' _' | ' -' )* -> popMode
1179+ : (LETTER | DIGIT ) (LETTER | DIGIT | ' _' | ' -' )*
11571180 ;
11581181
11591182COLLECTION_WITH_MACRO
1160- : ' tx. ' IDENT ' {% ' -> mode (MACRO )
1183+ : ' %{ ' -> pushMode (MACRO )
11611184 ;
11621185
1163- VAR_ASSIGNMENT
1164- : ~(' \' ' |' ' )+ -> popMode
1165- ;
1166-
11671186EQUAL_SETVAR
1168- : ' =' -> type(EQUAL )
1187+ : ' =' -> type(EQUAL ), pushMode( SETVAR_ASSIGNMENT )
11691188 ;
11701189
11711190EQUALS_PLUS_SETVAR
1172- : EQUAL_SETVAR ' +' -> type(EQUALS_PLUS )
1191+ : EQUAL_SETVAR ' +' -> type(EQUALS_PLUS ), pushMode( SETVAR_ASSIGNMENT )
11731192 ;
11741193
11751194EQUALS_MINUS_SETVAR
1176- : EQUAL_SETVAR ' -' -> type(EQUALS_MINUS )
1195+ : EQUAL_SETVAR ' -' -> type(EQUALS_MINUS ), pushMode( SETVAR_ASSIGNMENT )
11771196 ;
11781197
11791198
1199+ mode SETVAR_ASSIGNMENT ;
1200+
1201+ VAR_ASSIGNMENT
1202+ : (' \\\' ' |~(' \' ' |' ,' |' "' ))+
1203+ ;
1204+
1205+ SINGLE_QUOTE_SETVAR_ASSIGNMENT
1206+ : ' \' ' -> type(SINGLE_QUOTE ), pushMode(DEFAULT_MODE )
1207+ ;
1208+
1209+ QUOTE_SETVAR_ASSIGNMENT
1210+ : ' "' -> type(QUOTE ), pushMode(DEFAULT_MODE )
1211+ ;
1212+
1213+ COMMA_SETVAR_ASSIGNMENT
1214+ : ' ,' -> type(COMMA ), pushMode(DEFAULT_MODE )
1215+ ;
1216+
1217+ SPACE_SETVAR_ASSIGNMENT
1218+ : WS -> skip
1219+ ;
1220+
11801221mode COMMA_SEPARATED_STRING_MODE ;
11811222
11821223COLON_COMMA_STRING
11831224 : COLON_DEFAULT -> type(COLON )
11841225 ;
11851226
1186-
11871227COMMA_SEPARATED_STRING
11881228 : ~([:," ])+ -> popMode
11891229 ;
0 commit comments