From 101a83b1c02fb53ffb2208a7fc292eac3f218d4d Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 6 Mar 2009 23:06:39 -0500 Subject: [PATCH] Reworked variable declaration syntax in the HLSL parser grammar. You can do this... float2 x = 1.0; ...which we handled, but you can also do this... float2 x = 1.0, y = 2.0; ...which we did not. Fixed now! --- mojoshader_parser_hlsl.lemon | 54 +++++++++++++++--------------------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/mojoshader_parser_hlsl.lemon b/mojoshader_parser_hlsl.lemon index f9f4f0bd..103d0aaa 100644 --- a/mojoshader_parser_hlsl.lemon +++ b/mojoshader_parser_hlsl.lemon @@ -136,40 +136,30 @@ interpolation_mod ::= SAMPLE. global_variable ::= variable_declaration. -variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic annotations initializer variable_lowlevel SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic annotations initializer SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic annotations variable_lowlevel SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic annotations SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic initializer variable_lowlevel SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic initializer SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic variable_lowlevel SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array annotations initializer variable_lowlevel SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array annotations initializer SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array annotations variable_lowlevel SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array variable_lowlevel SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array initializer variable_lowlevel SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array initializer SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array annotations SEMICOLON. -variable_declaration ::= variable_attribute_list datatype scalar_or_array SEMICOLON. -variable_declaration ::= datatype scalar_or_array semantic annotations initializer variable_lowlevel SEMICOLON. -variable_declaration ::= datatype scalar_or_array semantic annotations initializer SEMICOLON. -variable_declaration ::= datatype scalar_or_array semantic annotations variable_lowlevel SEMICOLON. -variable_declaration ::= datatype scalar_or_array semantic annotations SEMICOLON. -variable_declaration ::= datatype scalar_or_array semantic initializer variable_lowlevel SEMICOLON. -variable_declaration ::= datatype scalar_or_array semantic initializer SEMICOLON. -variable_declaration ::= datatype scalar_or_array semantic variable_lowlevel SEMICOLON. -variable_declaration ::= datatype scalar_or_array semantic SEMICOLON. -variable_declaration ::= datatype scalar_or_array annotations initializer variable_lowlevel SEMICOLON. -variable_declaration ::= datatype scalar_or_array annotations initializer SEMICOLON. -variable_declaration ::= datatype scalar_or_array annotations variable_lowlevel SEMICOLON. -variable_declaration ::= datatype scalar_or_array annotations SEMICOLON. -variable_declaration ::= datatype scalar_or_array initializer variable_lowlevel SEMICOLON. -variable_declaration ::= datatype scalar_or_array initializer SEMICOLON. -variable_declaration ::= datatype scalar_or_array variable_lowlevel SEMICOLON. -variable_declaration ::= datatype scalar_or_array SEMICOLON. +variable_declaration ::= variable_attribute_list datatype variable_declaration_details_list SEMICOLON. +variable_declaration ::= datatype variable_declaration_details_list SEMICOLON. variable_declaration ::= struct_declaration scalar_or_array SEMICOLON. +variable_declaration_details_list ::= variable_declaration_details. +variable_declaration_details_list ::= variable_declaration_details_list COMMA variable_declaration_details. + +variable_declaration_details ::= scalar_or_array semantic annotations initializer variable_lowlevel. +variable_declaration_details ::= scalar_or_array semantic annotations initializer. +variable_declaration_details ::= scalar_or_array semantic annotations variable_lowlevel. +variable_declaration_details ::= scalar_or_array semantic annotations. +variable_declaration_details ::= scalar_or_array semantic initializer variable_lowlevel. +variable_declaration_details ::= scalar_or_array semantic initializer. +variable_declaration_details ::= scalar_or_array semantic variable_lowlevel. +variable_declaration_details ::= scalar_or_array semantic. +variable_declaration_details ::= scalar_or_array annotations initializer variable_lowlevel. +variable_declaration_details ::= scalar_or_array annotations initializer. +variable_declaration_details ::= scalar_or_array annotations variable_lowlevel. +variable_declaration_details ::= scalar_or_array annotations. +variable_declaration_details ::= scalar_or_array initializer variable_lowlevel. +variable_declaration_details ::= scalar_or_array initializer. +variable_declaration_details ::= scalar_or_array variable_lowlevel. +variable_declaration_details ::= scalar_or_array. + // !!! FIXME: we don't handle full sampler declarations at the moment. struct_declaration ::= STRUCT identifier LBRACE struct_member_list RBRACE.