allow tokens as properties
This commit is contained in:
@@ -29687,8 +29687,17 @@ static cJSON *ast_parse_primary (ASTParseState *s) {
|
||||
cJSON *pair = cJSON_CreateObject ();
|
||||
/* property name */
|
||||
int is_ident = (s->token_val == TOK_IDENT);
|
||||
if (s->token_val == TOK_IDENT || s->token_val == TOK_STRING || s->token_val == TOK_NUMBER) {
|
||||
cJSON *left = ast_parse_primary (s);
|
||||
int is_keyword = (s->token_val >= TOK_FIRST_KEYWORD && s->token_val <= TOK_LAST_KEYWORD);
|
||||
if (is_ident || is_keyword || s->token_val == TOK_STRING || s->token_val == TOK_NUMBER) {
|
||||
cJSON *left;
|
||||
if (is_keyword) {
|
||||
left = ast_node (s, "name", s->token_ptr);
|
||||
cjson_add_strn (left, "name", s->token_u.ident.str, s->token_u.ident.len);
|
||||
ast_node_end (s, left, s->buf_ptr);
|
||||
ast_next_token (s);
|
||||
} else {
|
||||
left = ast_parse_primary (s);
|
||||
}
|
||||
cJSON_AddItemToObject (pair, "left", left);
|
||||
} else if (s->token_val == '[') {
|
||||
/* computed property */
|
||||
|
||||
Reference in New Issue
Block a user