Skip to content

Commit 52c22d0

Browse files
committed
#78 - added support for array literals
1 parent b4be88f commit 52c22d0

File tree

7 files changed

+1116
-1081
lines changed

7 files changed

+1116
-1081
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# wgsl plugin Changelog
44

55
## Unreleased
6+
- support array literals
67

78
## 0.0.34 - 2024-10-26
89

examples/ticket_78.wgsl

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,6 @@ fn vs_main(@builtin(vertex_index) in_vertex_index: u32) -> Vertex {
1313
@fragment
1414
fn fs_main(in: Vertex) -> @location(0) vec4f {
1515
return vec4(1.0, 0.0, 0.0, 1.0);
16-
}
16+
}
17+
18+
const pos = array(vec2f(0, -1), vec2f(1, -1), vec2f(0, 0), vec2f(1, 0));

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
pluginGroup = wgslplugin
55
pluginName = wgsl
66
# SemVer format -> https://semver.org
7-
pluginVersion = 0.0.34
7+
pluginVersion = 0.0.35
88

99
# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
1010
# for insight into build numbers and IntelliJ Platform versions.

src/main/gen/wgslplugin/language/_WgslLexer.java

+1,084-1,066
Large diffs are not rendered by default.

src/main/gen/wgslplugin/language/parser/WgslParser.java

+12-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/wgslplugin/language/WGSLLexer.flex

+14-9
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import static wgslplugin.language.psi.WGSLTypes.*;
4343
%type IElementType
4444
%unicode
4545

46+
%state ARRAY_SPEC
4647
%state TYPE_SPEC
4748
%state BIND_SPEC
4849
%state ATTRIBUTE
@@ -76,15 +77,16 @@ IDENT = ([a-zA-Z_][0-9a-zA-Z_][0-9a-zA-Z_]*)|([a-zA-Z][0-9a-zA-Z_]*)
7677
<YYINITIAL, ATTRIBUTE> "true" { return TRUE; }
7778
<YYINITIAL, ATTRIBUTE> "false" { return FALSE; }
7879
<YYINITIAL, ATTRIBUTE> {DECIMAL_FLOAT_LITERAL} { return DECIMAL_FLOAT_LITERAL; }
79-
<YYINITIAL, ATTRIBUTE> {HEX_FLOAT_LITERAL} { return HEX_FLOAT_LITERAL; }
80-
<YYINITIAL> "[[" { pushState(ATTRIBUTE); return ATTR_LEFT; }
81-
<YYINITIAL, TYPE_SPEC, BIND_SPEC, ATTRIBUTE> "," { return COMMA; }
82-
<ATTRIBUTE> "]]" { popState(); return ATTR_RIGHT; }
83-
<YYINITIAL, ATTRIBUTE> "(" { return PAREN_LEFT; }
84-
<TYPE_SPEC> "(" { popState(); return PAREN_LEFT; }
85-
<YYINITIAL, ATTRIBUTE> ")" { return PAREN_RIGHT; }
86-
<YYINITIAL, TYPE_SPEC> "array" { pushState(TYPE_SPEC); return ARRAY; }
87-
<YYINITIAL> "<" { return LESS_THAN; }
80+
<YYINITIAL, ATTRIBUTE> {HEX_FLOAT_LITERAL} { return HEX_FLOAT_LITERAL; }
81+
<YYINITIAL> "[[" { pushState(ATTRIBUTE); return ATTR_LEFT; }
82+
<YYINITIAL, TYPE_SPEC, BIND_SPEC, ATTRIBUTE> "," { return COMMA; }
83+
<ATTRIBUTE> "]]" { popState(); return ATTR_RIGHT; }
84+
<YYINITIAL, ATTRIBUTE> "(" { return PAREN_LEFT; }
85+
<TYPE_SPEC> "(" { popState(); return PAREN_LEFT; }
86+
<YYINITIAL, ATTRIBUTE> ")" { return PAREN_RIGHT; }
87+
<YYINITIAL> "array" { pushState(ARRAY_SPEC); return ARRAY; }
88+
<TYPE_SPEC> "array" { pushState(TYPE_SPEC); return ARRAY; }
89+
<YYINITIAL> "<" { return LESS_THAN; }
8890
<TYPE_SPEC, BIND_SPEC> "<" { return TYPE_LESS_THAN; }
8991
<YYINITIAL> ">" { return GREATER_THAN; }
9092
<TYPE_SPEC, BIND_SPEC> ">" { popState(); return TYPE_GREATER_THAN; }
@@ -94,6 +96,9 @@ IDENT = ([a-zA-Z_][0-9a-zA-Z_][0-9a-zA-Z_]*)|([a-zA-Z][0-9a-zA-Z_]*)
9496
<YYINITIAL> ";" { return SEMICOLON; }
9597
<YYINITIAL> "@" { return AT; }
9698

99+
<ARRAY_SPEC> "(" { popState(); return PAREN_LEFT; }
100+
<ARRAY_SPEC> "<" { popState(); pushState(TYPE_SPEC); return TYPE_LESS_THAN; }
101+
97102
<PREPROCESSOR, PREPROCESSOR_NESTED> "{" { pushState(PREPROCESSOR_NESTED); return PREPROCESSOR_DECLARATION; }
98103
<PREPROCESSOR, PREPROCESSOR_NESTED> "}" { popState(); return PREPROCESSOR_DECLARATION; }
99104

src/main/java/wgslplugin/language/wgsl.bnf

+1-1
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ const_expression ::=
273273
primary_expression ::=
274274
func_call_statement
275275
| variable_reference
276-
| type_decl argument_expression_list
276+
| (type_decl | ARRAY) argument_expression_list
277277
| const_literal
278278
| paren_expression
279279
| BITCAST TYPE_LESS_THAN type_decl TYPE_GREATER_THAN paren_expression

0 commit comments

Comments
 (0)