Skip to content

Commit

Permalink
Fix parse error for blend with target index
Browse files Browse the repository at this point in the history
Fixes #723
  • Loading branch information
citizenmatt committed Sep 14, 2018
1 parent f609d9c commit b163fe4
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 88 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1463,13 +1463,13 @@ blendCommand

blendValue
:
NUMERIC_LITERAL<RENDER_TARGET_INDEX, RenderTargetIndex>?
falseLiteral{FALSE_LITERAL, FalseLiteral}
| blendValues
;

private blendValues
:
NUMERIC_LITERAL<RENDER_TARGET_INDEX, RenderTargetIndex>?
blendFactor<SRCFACTOR, SrcFactor>
blendFactor<DSTFACTOR, DstFactor>
(
Expand Down
1 change: 1 addition & 0 deletions resharper/test/data/ShaderLab/Psi/Parsing/Blending.shader
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
SubShader
{
Pass { Blend Off }
Pass { Blend 2 Off }
Pass { Blend SrcAlpha OneMinusSrcAlpha }
Pass { Blend One One }
Pass { Blend One One, Zero SrcColor }
Expand Down
165 changes: 78 additions & 87 deletions resharper/test/data/ShaderLab/Psi/Parsing/Blending.shader.gold
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,9 @@ IShaderLabFile
ShaderLabTokenType+KeywordTokenElement(type:BLEND_KEYWORD, text:Blend)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendValue
IBlendFactor
IShaderLabIdentifier
Identifier(type:IDENTIFIER, text:SrcAlpha)
ShaderLabTokenType+GenericTokenElement(type:NUMERIC_LITERAL, text:2)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendFactor
IShaderLabIdentifier
Identifier(type:IDENTIFIER, text:OneMinusSrcAlpha)
ShaderLabTokenType+KeywordTokenElement(type:OFF_KEYWORD, text:Off)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Expand All @@ -69,11 +65,11 @@ IShaderLabFile
IBlendValue
IBlendFactor
IShaderLabIdentifier
ShaderLabTokenType+KeywordTokenElement(type:ONE_KEYWORD, text:One)
Identifier(type:IDENTIFIER, text:SrcAlpha)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendFactor
IShaderLabIdentifier
ShaderLabTokenType+KeywordTokenElement(type:ONE_KEYWORD, text:One)
Identifier(type:IDENTIFIER, text:OneMinusSrcAlpha)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Expand All @@ -96,15 +92,6 @@ IShaderLabFile
IBlendFactor
IShaderLabIdentifier
ShaderLabTokenType+KeywordTokenElement(type:ONE_KEYWORD, text:One)
ShaderLabTokenType+FixedTokenElement(type:COMMA, text:,)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendFactor
IShaderLabIdentifier
ShaderLabTokenType+KeywordTokenElement(type:ZERO_KEYWORD, text:Zero)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendFactor
IShaderLabIdentifier
Identifier(type:IDENTIFIER, text:SrcColor)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Expand All @@ -120,74 +107,22 @@ IShaderLabFile
ShaderLabTokenType+KeywordTokenElement(type:BLEND_KEYWORD, text:Blend)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendValue
ShaderLabTokenType+GenericTokenElement(type:NUMERIC_LITERAL, text:2)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendFactor
IShaderLabIdentifier
ShaderLabTokenType+KeywordTokenElement(type:ONE_KEYWORD, text:One)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendFactor
IShaderLabIdentifier
ShaderLabTokenType+KeywordTokenElement(type:ONE_KEYWORD, text:One)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Whitespace(type:WHITESPACE, text: ) spaces: " "
IPass
ITexturePassDef
ShaderLabTokenType+KeywordTokenElement(type:PASS_KEYWORD, text:Pass)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ITexturePassValue
ShaderLabTokenType+FixedTokenElement(type:LBRACE, text:{)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendOpCommand
ShaderLabTokenType+KeywordTokenElement(type:BLEND_OP_KEYWORD, text:BlendOp)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendOpValue
IShaderLabIdentifier
Identifier(type:IDENTIFIER, text:Add)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Whitespace(type:WHITESPACE, text: ) spaces: " "
IPass
ITexturePassDef
ShaderLabTokenType+KeywordTokenElement(type:PASS_KEYWORD, text:Pass)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ITexturePassValue
ShaderLabTokenType+FixedTokenElement(type:LBRACE, text:{)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendOpCommand
ShaderLabTokenType+KeywordTokenElement(type:BLEND_OP_KEYWORD, text:BlendOp)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendOpValue
ShaderLabTokenType+GenericTokenElement(type:NUMERIC_LITERAL, text:3)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IShaderLabIdentifier
Identifier(type:IDENTIFIER, text:Sub)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Whitespace(type:WHITESPACE, text: ) spaces: " "
IPass
ITexturePassDef
ShaderLabTokenType+KeywordTokenElement(type:PASS_KEYWORD, text:Pass)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ITexturePassValue
ShaderLabTokenType+FixedTokenElement(type:LBRACE, text:{)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendOpCommand
ShaderLabTokenType+KeywordTokenElement(type:BLEND_OP_KEYWORD, text:BlendOp)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendOpValue
ShaderLabTokenType+GenericTokenElement(type:NUMERIC_LITERAL, text:3)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IShaderLabIdentifier
Identifier(type:IDENTIFIER, text:Min)
ShaderLabTokenType+FixedTokenElement(type:COMMA, text:,)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IShaderLabIdentifier
Identifier(type:IDENTIFIER, text:Max)
IBlendFactor
IShaderLabIdentifier
ShaderLabTokenType+KeywordTokenElement(type:ZERO_KEYWORD, text:Zero)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBlendFactor
IShaderLabIdentifier
Identifier(type:IDENTIFIER, text:SrcColor)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Expand All @@ -199,17 +134,73 @@ IShaderLabFile
ITexturePassValue
ShaderLabTokenType+FixedTokenElement(type:LBRACE, text:{)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IAlphaToMaskCommand
ShaderLabTokenType+KeywordTokenElement(type:ALPHA_TO_MASK_KEYWORD, text:AlphaToMask)
IBlendCommand
ShaderLabTokenType+KeywordTokenElement(type:BLEND_KEYWORD, text:Blend)
Whitespace(type:WHITESPACE, text: ) spaces: " "
IBoolValue
ShaderLabTokenType+KeywordTokenElement(type:ON_KEYWORD, text:On)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
IBlendValue
ShaderLabTokenType+GenericTokenElement(type:NUMERIC_LITERAL, text:2)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ErrorElement:False/off expected
ShaderLabTokenType+KeywordTokenElement(type:ONE_KEYWORD, text:One)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+KeywordTokenElement(type:ONE_KEYWORD, text:One)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+KeywordTokenElement(type:PASS_KEYWORD, text:Pass)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:LBRACE, text:{)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+KeywordTokenElement(type:BLEND_OP_KEYWORD, text:BlendOp)
Whitespace(type:WHITESPACE, text: ) spaces: " "
Identifier(type:IDENTIFIER, text:Add)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+KeywordTokenElement(type:PASS_KEYWORD, text:Pass)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:LBRACE, text:{)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+KeywordTokenElement(type:BLEND_OP_KEYWORD, text:BlendOp)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+GenericTokenElement(type:NUMERIC_LITERAL, text:3)
Whitespace(type:WHITESPACE, text: ) spaces: " "
Identifier(type:IDENTIFIER, text:Sub)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+KeywordTokenElement(type:PASS_KEYWORD, text:Pass)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:LBRACE, text:{)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+KeywordTokenElement(type:BLEND_OP_KEYWORD, text:BlendOp)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+GenericTokenElement(type:NUMERIC_LITERAL, text:3)
Whitespace(type:WHITESPACE, text: ) spaces: " "
Identifier(type:IDENTIFIER, text:Min)
ShaderLabTokenType+FixedTokenElement(type:COMMA, text:,)
Whitespace(type:WHITESPACE, text: ) spaces: " "
Identifier(type:IDENTIFIER, text:Max)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+KeywordTokenElement(type:PASS_KEYWORD, text:Pass)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:LBRACE, text:{)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+KeywordTokenElement(type:ALPHA_TO_MASK_KEYWORD, text:AlphaToMask)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+KeywordTokenElement(type:ON_KEYWORD, text:On)
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
Whitespace(type:WHITESPACE, text: ) spaces: " "
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"
ShaderLabTokenType+FixedTokenElement(type:RBRACE, text:})
NewLine(type:NEW_LINE, text:\n) spaces: "\n"

0 comments on commit b163fe4

Please sign in to comment.