[PATCH 4/5] d3dcompiler: Stub assignment parsing.
Matteo Bruni
mbruni at codeweavers.com
Fri Jul 20 09:37:40 CDT 2012
---
dlls/d3dcompiler_43/d3dcompiler_private.h | 15 ++++++++
dlls/d3dcompiler_43/hlsl.y | 51 +++++++++++++++++++++++++++++
2 files changed, 66 insertions(+), 0 deletions(-)
diff --git a/dlls/d3dcompiler_43/d3dcompiler_private.h b/dlls/d3dcompiler_43/d3dcompiler_private.h
index 769bf74..efba080 100644
--- a/dlls/d3dcompiler_43/d3dcompiler_private.h
+++ b/dlls/d3dcompiler_43/d3dcompiler_private.h
@@ -912,6 +912,21 @@ enum parse_unary_op
UNARY_OP_BITNOT,
};
+enum parse_assign_op
+{
+ ASSIGN_OP_ASSIGN,
+ ASSIGN_OP_ADD,
+ ASSIGN_OP_SUB,
+ ASSIGN_OP_MUL,
+ ASSIGN_OP_DIV,
+ ASSIGN_OP_MOD,
+ ASSIGN_OP_LSHIFT,
+ ASSIGN_OP_RSHIFT,
+ ASSIGN_OP_AND,
+ ASSIGN_OP_OR,
+ ASSIGN_OP_XOR,
+};
+
struct hlsl_parse_ctx
{
const char **source_files;
diff --git a/dlls/d3dcompiler_43/hlsl.y b/dlls/d3dcompiler_43/hlsl.y
index 177330f..6184d6a 100644
--- a/dlls/d3dcompiler_43/hlsl.y
+++ b/dlls/d3dcompiler_43/hlsl.y
@@ -207,6 +207,7 @@ static unsigned int components_count_expr_list(struct list *list)
struct parse_parameter parameter;
struct parse_variable_def *variable_def;
enum parse_unary_op unary_op;
+ enum parse_assign_op assign_op;
}
%token KW_BLENDSTATE
@@ -352,6 +353,7 @@ static unsigned int components_count_expr_list(struct list *list)
%type <instr> assignment_expr
%type <list> expr_statement
%type <unary_op> unary_op
+%type <assign_op> assign_op
%type <modifiers> input_mod
%%
@@ -1209,6 +1211,55 @@ assignment_expr: conditional_expr
{
$$ = $1;
}
+ | unary_expr assign_op assignment_expr
+ {
+ FIXME("Assignment\n");
+ }
+
+assign_op: '='
+ {
+ $$ = ASSIGN_OP_ASSIGN;
+ }
+ | OP_ADDASSIGN
+ {
+ $$ = ASSIGN_OP_ADD;
+ }
+ | OP_SUBASSIGN
+ {
+ $$ = ASSIGN_OP_SUB;
+ }
+ | OP_MULASSIGN
+ {
+ $$ = ASSIGN_OP_MUL;
+ }
+ | OP_DIVASSIGN
+ {
+ $$ = ASSIGN_OP_DIV;
+ }
+ | OP_MODASSIGN
+ {
+ $$ = ASSIGN_OP_MOD;
+ }
+ | OP_LEFTSHIFTASSIGN
+ {
+ $$ = ASSIGN_OP_LSHIFT;
+ }
+ | OP_RIGHTSHIFTASSIGN
+ {
+ $$ = ASSIGN_OP_RSHIFT;
+ }
+ | OP_ANDASSIGN
+ {
+ $$ = ASSIGN_OP_AND;
+ }
+ | OP_ORASSIGN
+ {
+ $$ = ASSIGN_OP_OR;
+ }
+ | OP_XORASSIGN
+ {
+ $$ = ASSIGN_OP_XOR;
+ }
expr: assignment_expr
{
--
1.7.8.6
More information about the wine-patches
mailing list