private PassSyntax ParseUnityPass() { var passKeyword = Match(SyntaxKind.PassKeyword); var openBraceToken = Match(SyntaxKind.OpenBraceToken); var statements = new List <SyntaxNode>(); var shouldContinue = true; while (shouldContinue && Current.Kind != SyntaxKind.CloseBraceToken) { switch (Current.Kind) { case SyntaxKind.TagsKeyword: statements.Add(ParseUnityShaderTags()); break; case SyntaxKind.NameKeyword: statements.Add(ParseUnityName()); break; default: shouldContinue = TryParseStateProperty(statements); break; } } ShaderProgramSyntax shaderProgram = null; if (Current.Kind == SyntaxKind.CgProgramKeyword || Current.Kind == SyntaxKind.HlslProgramKeyword) { shaderProgram = ParseUnityShaderProgram(); } var closeBraceToken = Match(SyntaxKind.CloseBraceToken); return(new PassSyntax( passKeyword, openBraceToken, statements, shaderProgram, closeBraceToken)); }
public override void VisitShaderProgram(ShaderProgramSyntax node) { AddBlockSpan(node.BeginProgramKeyword, node.EndProgramKeyword); }
public virtual void VisitShaderProgram(ShaderProgramSyntax node) { DefaultVisit(node); }