diff options
-rw-r--r-- | ast.h | 9 | ||||
-rw-r--r-- | glsl_parser.ypp | 12 |
2 files changed, 11 insertions, 10 deletions
@@ -150,6 +150,15 @@ public: ast_expression(int oper, ast_expression *, ast_expression *, ast_expression *); + ast_expression(const char *identifier) : + oper(ast_identifier) + { + subexpressions[0] = NULL; + subexpressions[1] = NULL; + subexpressions[2] = NULL; + primary_expression.identifier = (char *) identifier; + } + static const char *operator_string(enum ast_operators op); virtual ir_instruction *hir(exec_list *instructions, diff --git a/glsl_parser.ypp b/glsl_parser.ypp index c755725458..debbcea936 100644 --- a/glsl_parser.ypp +++ b/glsl_parser.ypp @@ -351,19 +351,11 @@ function_identifier: } | IDENTIFIER { - ast_expression *expr = - new ast_expression(ast_identifier, NULL, NULL, NULL); - expr->primary_expression.identifier = $1; - - $$ = (struct ast_node *) expr; + $$ = new ast_expression($1); } | FIELD_SELECTION { - ast_expression *expr = - new ast_expression(ast_identifier, NULL, NULL, NULL); - expr->primary_expression.identifier = $1; - - $$ = (struct ast_node *) expr; + $$ = new ast_expression($1); } ; |