author | Ryan C. Gordon <icculus@icculus.org> |
Fri, 06 Mar 2009 22:56:44 -0500 | |
changeset 723 | 6d58b504cc6e |
parent 722 | d483a61ef502 |
child 724 | e96f140736f0 |
permissions | -rw-r--r-- |
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
1 |
/** |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
2 |
* MojoShader; generate shader programs from bytecode of compiled |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
3 |
* Direct3D shaders. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
4 |
* |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
5 |
* Please see the file LICENSE.txt in the source's root directory. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
6 |
* |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
7 |
* This file written by Ryan C. Gordon. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
8 |
*/ |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
9 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
10 |
// This is a Lemon Parser grammar for HLSL. It is based on an ANSI C YACC |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
11 |
// grammar by Jeff Lee: http://www.lysator.liu.se/c/ANSI-C-grammar-y.html |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
12 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
13 |
// Lemon is here: http://www.hwaci.com/sw/lemon/ ... the source is included |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
14 |
// with MojoShader, and built with the library, so you don't have to track |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
15 |
// down the dependency. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
16 |
|
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
17 |
// HLSL syntax is described, informally, here: |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
18 |
// http://msdn.microsoft.com/en-us/library/bb509615(VS.85).aspx |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
19 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
20 |
%name ParseHLSL |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
21 |
|
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
22 |
%start_symbol shader |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
23 |
%token_prefix TOKEN_HLSL_ |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
24 |
%token_type { IncludeState * } |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
25 |
%extra_argument { Context *ctx } |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
26 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
27 |
%include { |
709
6fbd0e20b40f
Removed some ANSI C things from the HLSL grammar that shaders don't do.
Ryan C. Gordon <icculus@icculus.org>
parents:
707
diff
changeset
|
28 |
#ifndef __MOJOSHADER_HLSL_COMPILER__ |
6fbd0e20b40f
Removed some ANSI C things from the HLSL grammar that shaders don't do.
Ryan C. Gordon <icculus@icculus.org>
parents:
707
diff
changeset
|
29 |
#error Do not compile this file directly. |
6fbd0e20b40f
Removed some ANSI C things from the HLSL grammar that shaders don't do.
Ryan C. Gordon <icculus@icculus.org>
parents:
707
diff
changeset
|
30 |
#endif |
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
31 |
} |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
32 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
33 |
%parse_failure { |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
34 |
fprintf(stderr,"Giving up. Parser is hopelessly lost...\n"); |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
35 |
} |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
36 |
|
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
37 |
%stack_overflow { |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
38 |
fprintf(stderr,"Giving up. Parser stack overflow\n"); |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
39 |
} |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
40 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
41 |
// operator precedence (matches C spec)... |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
42 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
43 |
%left COMMA. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
44 |
%right ASSIGN ADDASSIGN SUBASSIGN MULASSIGN DIVASSIGN MODASSIGN LSHIFTASSIGN |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
45 |
RSHIFTASSIGN ANDASSIGN ORASSIGN XORASSIGN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
46 |
%right QUESTION. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
47 |
%left OROR. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
48 |
%left ANDAND. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
49 |
%left OR. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
50 |
%left XOR. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
51 |
%left AND. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
52 |
%left EQL NEQ. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
53 |
%left LT LEQ GT GEQ. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
54 |
%left LSHIFT RSHIFT. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
55 |
%left PLUS MINUS. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
56 |
%left STAR SLASH PERCENT. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
57 |
%right TYPECAST EXCLAMATION COMPLEMENT MINUSMINUS PLUSPLUS. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
58 |
%left DOT LBRACKET RBRACKET LPAREN RPAREN. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
59 |
|
704
292ea2611014
Resolved "dangling else" problem in HLSL grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
703
diff
changeset
|
60 |
// bump up the precedence of ELSE, to avoid shift/reduce conflict on the |
292ea2611014
Resolved "dangling else" problem in HLSL grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
703
diff
changeset
|
61 |
// usual "dangling else ambiguity" ... |
292ea2611014
Resolved "dangling else" problem in HLSL grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
703
diff
changeset
|
62 |
%right ELSE. |
292ea2611014
Resolved "dangling else" problem in HLSL grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
703
diff
changeset
|
63 |
|
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
64 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
65 |
// The rules... |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
66 |
|
721
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
67 |
shader ::= compilation_units. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
68 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
69 |
compilation_units ::= compilation_unit. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
70 |
compilation_units ::= compilation_units compilation_unit. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
71 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
72 |
compilation_unit ::= function_declaration. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
73 |
compilation_unit ::= function_definition. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
74 |
compilation_unit ::= global_variable. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
75 |
compilation_unit ::= typedef_statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
76 |
compilation_unit ::= struct_statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
77 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
78 |
function_declaration ::= function_signature SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
79 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
80 |
function_definition ::= function_signature statement_block. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
81 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
82 |
function_signature ::= function_storageclass function_details semantic. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
83 |
function_signature ::= function_storageclass function_details. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
84 |
function_signature ::= function_details semantic. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
85 |
function_signature ::= function_details. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
86 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
87 |
function_details ::= datatype identifier LPAREN function_arguments RPAREN. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
88 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
89 |
// !!! FIXME: there is a "target" storage class that is the name of the |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
90 |
// !!! FIXME: platform that this function is meant for...but I don't know |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
91 |
// !!! FIXME: what tokens are valid here. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
92 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
93 |
// !!! FIXME: Also, the docs say "one of" inline or target, but I bet you can |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
94 |
// !!! FIXME: specify both. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
95 |
//function_storageclass ::= target. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
96 |
function_storageclass ::= INLINE. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
97 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
98 |
function_arguments ::= VOID. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
99 |
function_arguments ::= function_argument_list. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
100 |
function_arguments ::= . |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
101 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
102 |
function_argument_list ::= function_argument. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
103 |
function_argument_list ::= function_argument_list COMMA function_argument. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
104 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
105 |
function_argument ::= input_modifier datatype identifier semantic interpolation_mod initializer. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
106 |
function_argument ::= input_modifier datatype identifier semantic interpolation_mod. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
107 |
function_argument ::= input_modifier datatype identifier semantic initializer. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
108 |
function_argument ::= input_modifier datatype identifier semantic. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
109 |
function_argument ::= input_modifier datatype identifier interpolation_mod initializer. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
110 |
function_argument ::= input_modifier datatype identifier interpolation_mod. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
111 |
function_argument ::= input_modifier datatype identifier initializer. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
112 |
function_argument ::= input_modifier datatype identifier. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
113 |
function_argument ::= datatype identifier semantic interpolation_mod initializer. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
114 |
function_argument ::= datatype identifier semantic interpolation_mod. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
115 |
function_argument ::= datatype identifier semantic initializer. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
116 |
function_argument ::= datatype identifier semantic. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
117 |
function_argument ::= datatype identifier interpolation_mod initializer. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
118 |
function_argument ::= datatype identifier interpolation_mod. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
119 |
function_argument ::= datatype identifier initializer. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
120 |
function_argument ::= datatype identifier. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
121 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
122 |
input_modifier ::= IN. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
123 |
input_modifier ::= INOUT. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
124 |
input_modifier ::= OUT. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
125 |
input_modifier ::= UNIFORM. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
126 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
127 |
semantic ::= COLON semantic_name. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
128 |
semantic_name ::= identifier. // !!! FIXME: list these here |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
129 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
130 |
// DX10 only? |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
131 |
interpolation_mod ::= LINEAR. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
132 |
interpolation_mod ::= CENTROID. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
133 |
interpolation_mod ::= NOINTERPOLATION. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
134 |
interpolation_mod ::= NOPERSPECTIVE. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
135 |
interpolation_mod ::= SAMPLE. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
136 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
137 |
global_variable ::= variable_declaration. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
138 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
139 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic annotations initializer variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
140 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic annotations initializer SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
141 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic annotations variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
142 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic annotations SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
143 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic initializer variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
144 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic initializer SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
145 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
146 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array semantic SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
147 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array annotations initializer variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
148 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array annotations initializer SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
149 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array annotations variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
150 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
151 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array initializer variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
152 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array initializer SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
153 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array annotations SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
154 |
variable_declaration ::= variable_attribute_list datatype scalar_or_array SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
155 |
variable_declaration ::= datatype scalar_or_array semantic annotations initializer variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
156 |
variable_declaration ::= datatype scalar_or_array semantic annotations initializer SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
157 |
variable_declaration ::= datatype scalar_or_array semantic annotations variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
158 |
variable_declaration ::= datatype scalar_or_array semantic annotations SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
159 |
variable_declaration ::= datatype scalar_or_array semantic initializer variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
160 |
variable_declaration ::= datatype scalar_or_array semantic initializer SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
161 |
variable_declaration ::= datatype scalar_or_array semantic variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
162 |
variable_declaration ::= datatype scalar_or_array semantic SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
163 |
variable_declaration ::= datatype scalar_or_array annotations initializer variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
164 |
variable_declaration ::= datatype scalar_or_array annotations initializer SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
165 |
variable_declaration ::= datatype scalar_or_array annotations variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
166 |
variable_declaration ::= datatype scalar_or_array annotations SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
167 |
variable_declaration ::= datatype scalar_or_array initializer variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
168 |
variable_declaration ::= datatype scalar_or_array initializer SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
169 |
variable_declaration ::= datatype scalar_or_array variable_lowlevel SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
170 |
variable_declaration ::= datatype scalar_or_array SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
171 |
variable_declaration ::= struct_declaration scalar_or_array SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
172 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
173 |
struct_declaration ::= STRUCT identifier LBRACE struct_member_list RBRACE. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
174 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
175 |
struct_member_list ::= struct_member. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
176 |
struct_member_list ::= struct_member_list struct_member. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
177 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
178 |
struct_member ::= interpolation_mod struct_member_details. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
179 |
struct_member ::= struct_member_details. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
180 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
181 |
struct_member_details ::= scalar_or_array identifier SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
182 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
183 |
typedef_statement ::= TYPEDEF CONST datatype scalar_or_array. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
184 |
typedef_statement ::= TYPEDEF datatype scalar_or_array. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
185 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
186 |
variable_lowlevel ::= packoffset register. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
187 |
variable_lowlevel ::= packoffset. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
188 |
variable_lowlevel ::= register. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
189 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
190 |
scalar_or_array ::= identifier LBRACKET INT_CONSTANT RBRACKET. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
191 |
scalar_or_array ::= identifier. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
192 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
193 |
packoffset ::= PACKOFFSET LPAREN identifier identifier RPAREN. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
194 |
packoffset ::= PACKOFFSET LPAREN identifier RPAREN. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
195 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
196 |
register ::= COLON REGISTER LPAREN identifier RPAREN. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
197 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
198 |
annotations ::= LT annotation_list GT. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
199 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
200 |
annotation_list ::= annotation. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
201 |
annotation_list ::= annotation_list annotation. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
202 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
203 |
annotation ::= datatype_scalar initializer SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
204 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
205 |
variable_attribute_list ::= variable_attribute. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
206 |
variable_attribute_list ::= variable_attribute_list variable_attribute. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
207 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
208 |
variable_attribute ::= EXTERN. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
209 |
variable_attribute ::= NOINTERPOLATION. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
210 |
variable_attribute ::= SHARED. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
211 |
variable_attribute ::= STATIC. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
212 |
variable_attribute ::= UNIFORM. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
213 |
variable_attribute ::= VOLATILE. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
214 |
variable_attribute ::= CONST. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
215 |
variable_attribute ::= ROWMAJOR. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
216 |
variable_attribute ::= COLUMNMAJOR. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
217 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
218 |
initializer ::= ASSIGN expression. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
219 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
220 |
intrinsic_datatype ::= datatype_vector. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
221 |
intrinsic_datatype ::= datatype_matrix. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
222 |
intrinsic_datatype ::= datatype_scalar. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
223 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
224 |
datatype ::= intrinsic_datatype. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
225 |
datatype ::= USERTYPE. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
226 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
227 |
datatype_scalar ::= BOOL. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
228 |
datatype_scalar ::= INT. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
229 |
datatype_scalar ::= UINT. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
230 |
datatype_scalar ::= HALF. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
231 |
datatype_scalar ::= FLOAT. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
232 |
datatype_scalar ::= DOUBLE. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
233 |
datatype_scalar ::= STRING. // this is for the effects framework, not HLSL. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
234 |
datatype_scalar ::= SNORM FLOAT. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
235 |
datatype_scalar ::= UNORM FLOAT. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
236 |
datatype_scalar ::= BUFFER LT datatype_scalar GT. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
237 |
|
721
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
238 |
// !!! FIXME: MSDN suggests that the matrix ones are just typedefs inserted |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
239 |
// !!! FIXME: before parsing begins, like: |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
240 |
// !!! FIXME: typedef matrix <bool,4,3> bool4x3; |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
241 |
// !!! FIXME: ...maybe we can rip these out of the grammar and just create |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
242 |
// !!! FIXME: them at startup? |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
243 |
datatype_vector ::= VECTOR LT datatype_scalar COMMA INT_CONSTANT GT. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
244 |
datatype_vector ::= BOOL1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
245 |
datatype_vector ::= BOOL2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
246 |
datatype_vector ::= BOOL3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
247 |
datatype_vector ::= BOOL4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
248 |
datatype_vector ::= INT1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
249 |
datatype_vector ::= INT2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
250 |
datatype_vector ::= INT3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
251 |
datatype_vector ::= INT4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
252 |
datatype_vector ::= UINT1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
253 |
datatype_vector ::= UINT2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
254 |
datatype_vector ::= UINT3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
255 |
datatype_vector ::= UINT4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
256 |
datatype_vector ::= HALF1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
257 |
datatype_vector ::= HALF2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
258 |
datatype_vector ::= HALF3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
259 |
datatype_vector ::= HALF4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
260 |
datatype_vector ::= FLOAT1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
261 |
datatype_vector ::= FLOAT2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
262 |
datatype_vector ::= FLOAT3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
263 |
datatype_vector ::= FLOAT4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
264 |
datatype_vector ::= DOUBLE1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
265 |
datatype_vector ::= DOUBLE2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
266 |
datatype_vector ::= DOUBLE3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
267 |
datatype_vector ::= DOUBLE4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
268 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
269 |
datatype_matrix ::= MATRIX LT datatype_scalar COMMA INT_CONSTANT COMMA INT_CONSTANT GT. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
270 |
datatype_matrix ::= BOOL1X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
271 |
datatype_matrix ::= BOOL1X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
272 |
datatype_matrix ::= BOOL1X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
273 |
datatype_matrix ::= BOOL1X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
274 |
datatype_matrix ::= BOOL2X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
275 |
datatype_matrix ::= BOOL2X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
276 |
datatype_matrix ::= BOOL2X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
277 |
datatype_matrix ::= BOOL2X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
278 |
datatype_matrix ::= BOOL3X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
279 |
datatype_matrix ::= BOOL3X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
280 |
datatype_matrix ::= BOOL3X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
281 |
datatype_matrix ::= BOOL3X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
282 |
datatype_matrix ::= BOOL4X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
283 |
datatype_matrix ::= BOOL4X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
284 |
datatype_matrix ::= BOOL4X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
285 |
datatype_matrix ::= BOOL4X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
286 |
datatype_matrix ::= INT1X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
287 |
datatype_matrix ::= INT1X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
288 |
datatype_matrix ::= INT1X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
289 |
datatype_matrix ::= INT1X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
290 |
datatype_matrix ::= INT2X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
291 |
datatype_matrix ::= INT2X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
292 |
datatype_matrix ::= INT2X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
293 |
datatype_matrix ::= INT2X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
294 |
datatype_matrix ::= INT3X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
295 |
datatype_matrix ::= INT3X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
296 |
datatype_matrix ::= INT3X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
297 |
datatype_matrix ::= INT3X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
298 |
datatype_matrix ::= INT4X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
299 |
datatype_matrix ::= INT4X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
300 |
datatype_matrix ::= INT4X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
301 |
datatype_matrix ::= INT4X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
302 |
datatype_matrix ::= UINT1X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
303 |
datatype_matrix ::= UINT1X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
304 |
datatype_matrix ::= UINT1X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
305 |
datatype_matrix ::= UINT1X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
306 |
datatype_matrix ::= UINT2X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
307 |
datatype_matrix ::= UINT2X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
308 |
datatype_matrix ::= UINT2X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
309 |
datatype_matrix ::= UINT2X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
310 |
datatype_matrix ::= UINT3X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
311 |
datatype_matrix ::= UINT3X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
312 |
datatype_matrix ::= UINT3X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
313 |
datatype_matrix ::= UINT3X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
314 |
datatype_matrix ::= UINT4X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
315 |
datatype_matrix ::= UINT4X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
316 |
datatype_matrix ::= UINT4X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
317 |
datatype_matrix ::= UINT4X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
318 |
datatype_matrix ::= HALF1X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
319 |
datatype_matrix ::= HALF1X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
320 |
datatype_matrix ::= HALF1X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
321 |
datatype_matrix ::= HALF1X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
322 |
datatype_matrix ::= HALF2X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
323 |
datatype_matrix ::= HALF2X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
324 |
datatype_matrix ::= HALF2X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
325 |
datatype_matrix ::= HALF2X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
326 |
datatype_matrix ::= HALF3X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
327 |
datatype_matrix ::= HALF3X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
328 |
datatype_matrix ::= HALF3X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
329 |
datatype_matrix ::= HALF3X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
330 |
datatype_matrix ::= HALF4X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
331 |
datatype_matrix ::= HALF4X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
332 |
datatype_matrix ::= HALF4X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
333 |
datatype_matrix ::= HALF4X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
334 |
datatype_matrix ::= FLOAT1X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
335 |
datatype_matrix ::= FLOAT1X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
336 |
datatype_matrix ::= FLOAT1X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
337 |
datatype_matrix ::= FLOAT1X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
338 |
datatype_matrix ::= FLOAT2X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
339 |
datatype_matrix ::= FLOAT2X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
340 |
datatype_matrix ::= FLOAT2X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
341 |
datatype_matrix ::= FLOAT2X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
342 |
datatype_matrix ::= FLOAT3X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
343 |
datatype_matrix ::= FLOAT3X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
344 |
datatype_matrix ::= FLOAT3X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
345 |
datatype_matrix ::= FLOAT3X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
346 |
datatype_matrix ::= FLOAT4X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
347 |
datatype_matrix ::= FLOAT4X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
348 |
datatype_matrix ::= FLOAT4X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
349 |
datatype_matrix ::= FLOAT4X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
350 |
datatype_matrix ::= DOUBLE1X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
351 |
datatype_matrix ::= DOUBLE1X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
352 |
datatype_matrix ::= DOUBLE1X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
353 |
datatype_matrix ::= DOUBLE1X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
354 |
datatype_matrix ::= DOUBLE2X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
355 |
datatype_matrix ::= DOUBLE2X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
356 |
datatype_matrix ::= DOUBLE2X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
357 |
datatype_matrix ::= DOUBLE2X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
358 |
datatype_matrix ::= DOUBLE3X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
359 |
datatype_matrix ::= DOUBLE3X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
360 |
datatype_matrix ::= DOUBLE3X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
361 |
datatype_matrix ::= DOUBLE3X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
362 |
datatype_matrix ::= DOUBLE4X1. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
363 |
datatype_matrix ::= DOUBLE4X2. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
364 |
datatype_matrix ::= DOUBLE4X3. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
365 |
datatype_matrix ::= DOUBLE4X4. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
366 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
367 |
statement_block ::= LBRACE RBRACE. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
368 |
statement_block ::= LBRACE statement_list RBRACE. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
369 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
370 |
statement_list ::= statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
371 |
statement_list ::= statement_list statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
372 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
373 |
statement ::= return_statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
374 |
statement ::= BREAK SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
375 |
statement ::= CONTINUE SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
376 |
statement ::= DISCARD SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
377 |
statement ::= statement_block. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
378 |
statement ::= for_statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
379 |
statement ::= do_statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
380 |
statement ::= while_statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
381 |
statement ::= if_statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
382 |
statement ::= switch_statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
383 |
statement ::= variable_declaration. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
384 |
statement ::= typedef_statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
385 |
statement ::= expression_statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
386 |
statement ::= struct_statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
387 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
388 |
struct_statement ::= struct_declaration SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
389 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
390 |
expression_statement ::= SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
391 |
expression_statement ::= expression SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
392 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
393 |
return_statement ::= RETURN SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
394 |
return_statement ::= RETURN expression SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
395 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
396 |
while_statement ::= loop_attribute while_details. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
397 |
while_statement ::= while_details. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
398 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
399 |
while_details ::= WHILE LPAREN expression RPAREN statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
400 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
401 |
for_statement ::= loop_attribute for_details. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
402 |
for_statement ::= for_details. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
403 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
404 |
for_details ::= FOR LPAREN expression SEMICOLON expression SEMICOLON expression RPAREN statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
405 |
for_details ::= FOR LPAREN SEMICOLON SEMICOLON RPAREN statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
406 |
for_details ::= FOR LPAREN SEMICOLON SEMICOLON expression RPAREN statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
407 |
for_details ::= FOR LPAREN SEMICOLON expression SEMICOLON RPAREN statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
408 |
for_details ::= FOR LPAREN SEMICOLON expression SEMICOLON expression RPAREN statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
409 |
for_details ::= FOR LPAREN expression SEMICOLON SEMICOLON RPAREN statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
410 |
for_details ::= FOR LPAREN expression SEMICOLON SEMICOLON expression RPAREN statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
411 |
for_details ::= FOR LPAREN expression SEMICOLON expression SEMICOLON RPAREN statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
412 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
413 |
loop_attribute ::= UNROLL LPAREN INT_CONSTANT RPAREN. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
414 |
loop_attribute ::= UNROLL. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
415 |
loop_attribute ::= LOOP. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
416 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
417 |
do_statement ::= DO statement WHILE LPAREN expression RPAREN SEMICOLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
418 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
419 |
if_statement ::= if_attribute IF LPAREN expression RPAREN statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
420 |
if_statement ::= IF LPAREN expression RPAREN statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
421 |
if_statement ::= if_attribute IF LPAREN expression RPAREN statement ELSE statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
422 |
if_statement ::= IF LPAREN expression RPAREN statement ELSE statement. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
423 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
424 |
if_attribute ::= BRANCH. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
425 |
if_attribute ::= FLATTEN. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
426 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
427 |
switch_statement ::= switch_attribute switch_details. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
428 |
switch_statement ::= switch_details. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
429 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
430 |
switch_details ::= SWITCH LPAREN expression RPAREN LBRACE switch_case_list RBRACE. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
431 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
432 |
switch_attribute ::= FLATTEN. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
433 |
switch_attribute ::= BRANCH. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
434 |
switch_attribute ::= FORCECASE. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
435 |
switch_attribute ::= CALL. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
436 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
437 |
switch_case_list ::= switch_case. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
438 |
switch_case_list ::= switch_case_list switch_case. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
439 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
440 |
// You can do math here, apparently, as long as it produces an int constant. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
441 |
// ...so "case 3+2:" works. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
442 |
switch_case ::= CASE expression COLON statement_list. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
443 |
switch_case ::= CASE expression COLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
444 |
switch_case ::= DEFAULT COLON statement_list. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
445 |
switch_case ::= DEFAULT COLON. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
446 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
447 |
// I may want to do more with this at some point. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
448 |
identifier ::= IDENTIFIER. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
449 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
450 |
|
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
451 |
// the expression stuff is based on Jeff Lee's ANSI C grammar. |
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
452 |
primary_expr ::= identifier. |
721
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
453 |
primary_expr ::= INT_CONSTANT. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
454 |
primary_expr ::= FLOAT_CONSTANT. |
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
455 |
primary_expr ::= STRING_LITERAL. |
721
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
456 |
primary_expr ::= LPAREN expression RPAREN. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
457 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
458 |
postfix_expr ::= primary_expr. |
721
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
459 |
postfix_expr ::= postfix_expr LBRACKET expression RBRACKET. |
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
460 |
postfix_expr ::= postfix_expr LPAREN RPAREN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
461 |
postfix_expr ::= postfix_expr LPAREN argument_expr_list RPAREN. |
722
d483a61ef502
Added HLSL constructor to the grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
721
diff
changeset
|
462 |
postfix_expr ::= datatype LPAREN argument_expr_list RPAREN. // HLSL constructor |
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
463 |
postfix_expr ::= postfix_expr DOT identifier. |
707
85b648e14089
Fixed lemon grammar to use correct tokens.
Ryan C. Gordon <icculus@icculus.org>
parents:
704
diff
changeset
|
464 |
postfix_expr ::= postfix_expr PLUSPLUS. |
85b648e14089
Fixed lemon grammar to use correct tokens.
Ryan C. Gordon <icculus@icculus.org>
parents:
704
diff
changeset
|
465 |
postfix_expr ::= postfix_expr MINUSMINUS. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
466 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
467 |
argument_expr_list ::= assignment_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
468 |
argument_expr_list ::= argument_expr_list COMMA assignment_expr. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
469 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
470 |
unary_expr ::= postfix_expr. |
707
85b648e14089
Fixed lemon grammar to use correct tokens.
Ryan C. Gordon <icculus@icculus.org>
parents:
704
diff
changeset
|
471 |
unary_expr ::= PLUSPLUS unary_expr. |
85b648e14089
Fixed lemon grammar to use correct tokens.
Ryan C. Gordon <icculus@icculus.org>
parents:
704
diff
changeset
|
472 |
unary_expr ::= MINUSMINUS unary_expr. |
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
473 |
unary_expr ::= unary_operator cast_expr. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
474 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
475 |
unary_operator ::= PLUS. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
476 |
unary_operator ::= MINUS. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
477 |
unary_operator ::= COMPLEMENT. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
478 |
unary_operator ::= EXCLAMATION. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
479 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
480 |
cast_expr ::= unary_expr. |
721
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
481 |
cast_expr ::= LPAREN datatype RPAREN cast_expr. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
482 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
483 |
multiplicative_expr ::= cast_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
484 |
multiplicative_expr ::= multiplicative_expr STAR cast_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
485 |
multiplicative_expr ::= multiplicative_expr SLASH cast_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
486 |
multiplicative_expr ::= multiplicative_expr PERCENT cast_expr. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
487 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
488 |
additive_expr ::= multiplicative_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
489 |
additive_expr ::= additive_expr PLUS multiplicative_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
490 |
additive_expr ::= additive_expr MINUS multiplicative_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
491 |
|
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
492 |
shift_expr ::= additive_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
493 |
shift_expr ::= shift_expr LSHIFT additive_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
494 |
shift_expr ::= shift_expr RSHIFT additive_expr. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
495 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
496 |
relational_expr ::= shift_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
497 |
relational_expr ::= relational_expr LT shift_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
498 |
relational_expr ::= relational_expr GT shift_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
499 |
relational_expr ::= relational_expr LEQ shift_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
500 |
relational_expr ::= relational_expr GEQ shift_expr. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
501 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
502 |
equality_expr ::= relational_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
503 |
equality_expr ::= equality_expr EQL relational_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
504 |
equality_expr ::= equality_expr NEQ relational_expr. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
505 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
506 |
and_expr ::= equality_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
507 |
and_expr ::= and_expr AND equality_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
508 |
|
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
509 |
exclusive_or_expr ::= and_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
510 |
exclusive_or_expr ::= exclusive_or_expr XOR and_expr. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
511 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
512 |
inclusive_or_expr ::= exclusive_or_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
513 |
inclusive_or_expr ::= inclusive_or_expr OR exclusive_or_expr. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
514 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
515 |
logical_and_expr ::= inclusive_or_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
516 |
logical_and_expr ::= logical_and_expr ANDAND inclusive_or_expr. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
517 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
518 |
logical_or_expr ::= logical_and_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
519 |
logical_or_expr ::= logical_or_expr OROR logical_and_expr. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
520 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
521 |
conditional_expr ::= logical_or_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
522 |
conditional_expr ::= logical_or_expr QUESTION logical_or_expr COLON conditional_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
523 |
|
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
524 |
assignment_expr ::= conditional_expr. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
525 |
assignment_expr ::= unary_expr assignment_operator assignment_expr. |
702
7bf680ef6fc3
Added Jeff Lee's ANSI C yacc grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
526 |
|
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
527 |
assignment_operator ::= ASSIGN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
528 |
assignment_operator ::= MULASSIGN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
529 |
assignment_operator ::= DIVASSIGN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
530 |
assignment_operator ::= MODASSIGN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
531 |
assignment_operator ::= ADDASSIGN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
532 |
assignment_operator ::= SUBASSIGN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
533 |
assignment_operator ::= LSHIFTASSIGN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
534 |
assignment_operator ::= RSHIFTASSIGN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
535 |
assignment_operator ::= ANDASSIGN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
536 |
assignment_operator ::= XORASSIGN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
537 |
assignment_operator ::= ORASSIGN. |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
538 |
|
721
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
539 |
expression ::= assignment_expr. |
82d1aec6b549
Rewrote HLSL grammar, mostly from scratch.
Ryan C. Gordon <icculus@icculus.org>
parents:
709
diff
changeset
|
540 |
expression ::= expression COMMA assignment_expr. |
703
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
541 |
|
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
542 |
// end of mojoshader_parser_hlsl.lemon ... |
8bc7b33377e7
Converted original YACC grammar to Lemon grammar.
Ryan C. Gordon <icculus@icculus.org>
parents:
702
diff
changeset
|
543 |