| 1073 | } |
| 1074 | |
| 1075 | void fxSpecifiers(txParser* parser) |
| 1076 | { |
| 1077 | // txInteger aCount = 0; |
| 1078 | fxMatchToken(parser, XS_TOKEN_LEFT_BRACE); |
| 1079 | while (gxTokenFlags[parser->states[0].token] & XS_TOKEN_IDENTIFIER_NAME) { |
| 1080 | fxPushSymbol(parser, parser->states[0].symbol); |
| 1081 | fxGetNextToken(parser); |
| 1082 | if (fxIsKeyword(parser, parser->asSymbol)) { |
| 1083 | fxGetNextToken(parser); |
| 1084 | if (gxTokenFlags[parser->states[0].token] & XS_TOKEN_IDENTIFIER_NAME) { |
| 1085 | fxPushSymbol(parser, parser->states[0].symbol); |
| 1086 | fxGetNextToken(parser); |
| 1087 | } |
| 1088 | else { |
| 1089 | fxPushNULL(parser); |
| 1090 | fxReportParserError(parser, parser->states[0].line, "missing identifier"); |
| 1091 | } |
| 1092 | } |
| 1093 | else |
| 1094 | fxPushNULL(parser); |
| 1095 | fxPushNodeStruct(parser, 2, XS_TOKEN_SPECIFIER, parser->states[0].line); |
| 1096 | // aCount++; |
| 1097 | if (parser->states[0].token != XS_TOKEN_COMMA) |
| 1098 | break; |
| 1099 | fxGetNextToken(parser); |
| 1100 | } |
| 1101 | fxMatchToken(parser, XS_TOKEN_RIGHT_BRACE); |
| 1102 | } |
| 1103 | |
| 1104 | void fxWithAttributes(txParser* parser) |
| 1105 | { |
no test coverage detected