@@ -1538,12 +1538,12 @@ OPTIONAL_WHITESPACE_OR_COMMENTS ({WHITESPACE}|{MULTI_LINE_COMMENT}|{SINGLE_LINE_
15381538 RETURN_TOKEN_WITH_IDENT (T_PRINT);
15391539}
15401540
1541- <ST_IN_FUNC_DEF,ST_IN_GENERIC> " <" {
1541+ <ST_IN_FUNC_DEF,ST_IN_GENERIC,ST_IN_CLASS_DEF > " <" {
15421542 yy_push_state (ST_IN_GENERIC);
15431543 RETURN_TOKEN (T_GENERIC_START);
15441544}
15451545
1546- <ST_IN_FUNC_DEF,ST_IN_GENERIC> " >" {
1546+ <ST_IN_FUNC_DEF,ST_IN_GENERIC,ST_IN_CLASS_DEF > " >" {
15471547 yy_pop_state ();
15481548 RETURN_TOKEN (T_GENERIC_END);
15491549}
@@ -1554,9 +1554,19 @@ OPTIONAL_WHITESPACE_OR_COMMENTS ({WHITESPACE}|{MULTI_LINE_COMMENT}|{SINGLE_LINE_
15541554
15551555
15561556<ST_IN_SCRIPTING>" class" {
1557+ yy_push_state (ST_IN_CLASS_DEF);
15571558 RETURN_TOKEN_WITH_IDENT (T_CLASS);
15581559}
15591560
1561+
1562+
1563+ <ST_IN_CLASS_DEF>" {" {
1564+ yy_pop_state ();
1565+ yy_push_state (ST_IN_SCRIPTING);
1566+ enter_nesting (' {' );
1567+ RETURN_TOKEN (' {' );
1568+ }
1569+
15601570<ST_IN_SCRIPTING>" interface" {
15611571 RETURN_TOKEN_WITH_IDENT (T_INTERFACE);
15621572}
@@ -1578,11 +1588,11 @@ OPTIONAL_WHITESPACE_OR_COMMENTS ({WHITESPACE}|{MULTI_LINE_COMMENT}|{SINGLE_LINE_
15781588 RETURN_TOKEN_WITH_IDENT (T_ENUM);
15791589}
15801590
1581- <ST_IN_SCRIPTING >" extends" {
1591+ <ST_IN_CLASS_DEF >" extends" {
15821592 RETURN_TOKEN_WITH_IDENT (T_EXTENDS);
15831593}
15841594
1585- <ST_IN_SCRIPTING >" implements" {
1595+ <ST_IN_CLASS_DEF >" implements" {
15861596 RETURN_TOKEN_WITH_IDENT (T_IMPLEMENTS);
15871597}
15881598
@@ -1596,7 +1606,7 @@ OPTIONAL_WHITESPACE_OR_COMMENTS ({WHITESPACE}|{MULTI_LINE_COMMENT}|{SINGLE_LINE_
15961606 RETURN_TOKEN (T_NULLSAFE_OBJECT_OPERATOR);
15971607}
15981608
1599- <ST_IN_SCRIPTING,ST_LOOKING_FOR_PROPERTY, ST_IN_FUNC_DEF>{WHITESPACE}+ {
1609+ <ST_IN_SCRIPTING,ST_LOOKING_FOR_PROPERTY,ST_IN_FUNC_DEF,ST_IN_GENERIC,ST_IN_CLASS_DEF >{WHITESPACE}+ {
16001610 goto return_whitespace;
16011611}
16021612
@@ -1738,9 +1748,14 @@ OPTIONAL_WHITESPACE_OR_COMMENTS ({WHITESPACE}|{MULTI_LINE_COMMENT}|{SINGLE_LINE_
17381748}
17391749
17401750<ST_IN_SCRIPTING>" private" {
1751+ yy_push_state (ST_IN_PROPERTY_TYPE_DEF);
17411752 RETURN_TOKEN_WITH_IDENT (T_PRIVATE);
17421753}
17431754
1755+ <ST_IN_PROPERTY_TYPE_DEF> {
1756+
1757+ }
1758+
17441759<ST_IN_SCRIPTING>" protected" {
17451760 RETURN_TOKEN_WITH_IDENT (T_PROTECTED);
17461761}
@@ -1925,8 +1940,13 @@ OPTIONAL_WHITESPACE_OR_COMMENTS ({WHITESPACE}|{MULTI_LINE_COMMENT}|{SINGLE_LINE_
19251940}
19261941
19271942<ST_IN_FUNC_DEF>" (" {
1928- enter_nesting (' (' );
19291943 yy_pop_state ();
1944+ enter_nesting (yytext[0 ]);
1945+ RETURN_TOKEN (yytext[0 ]);
1946+ }
1947+
1948+ <ST_IN_GENERIC>" :" |" ," {
1949+ RETURN_TOKEN (yytext[0 ]);
19301950}
19311951
19321952<ST_IN_SCRIPTING>{TOKENS} {
@@ -2415,7 +2435,7 @@ inline_char_handler:
24152435 RETURN_TOKEN(T_NS_SEPARATOR);
24162436}
24172437
2418- <ST_IN_SCRIPTING,ST_VAR_OFFSET,ST_IN_FUNC_DEF>{LABEL} {
2438+ <ST_IN_SCRIPTING,ST_VAR_OFFSET,ST_IN_FUNC_DEF,ST_IN_CLASS_DEF >{LABEL} {
24192439 RETURN_TOKEN_WITH_STR(T_STRING, 0);
24202440}
24212441
0 commit comments