Skip to content

Commit

Permalink
Reworked variable declaration syntax in the HLSL parser grammar.
Browse files Browse the repository at this point in the history
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!
  • Loading branch information
icculus committed Mar 7, 2009
1 parent f62ff50 commit 101a83b
Showing 1 changed file with 22 additions and 32 deletions.
54 changes: 22 additions & 32 deletions mojoshader_parser_hlsl.lemon
Expand Up @@ -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.
Expand Down

0 comments on commit 101a83b

Please sign in to comment.