示例#1
0
        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;
                }
            }

            CgProgramSyntax cgProgram = null;

            if (Current.Kind == SyntaxKind.CgProgramKeyword)
            {
                cgProgram = ParseUnityCgProgram();
            }

            var closeBraceToken = Match(SyntaxKind.CloseBraceToken);

            return(new PassSyntax(
                       passKeyword,
                       openBraceToken,
                       statements,
                       cgProgram,
                       closeBraceToken));
        }
示例#2
0
 public virtual void VisitCgProgram(CgProgramSyntax node)
 {
     DefaultVisit(node);
 }
示例#3
0
 public virtual void VisitCgProgram(CgProgramSyntax node)
 {
     DefaultVisit(node);
 }
示例#4
0
 public override void VisitCgProgram(CgProgramSyntax node)
 {
     throw new NotImplementedException();
     //CgBlockSpans.Add(new Span(node.CgProgramKeyword.Span.End, node.EndCgKeyword.Span.Start - node.CgProgramKeyword.Span.End));
 }
示例#5
0
 public override void VisitCgProgram(CgProgramSyntax node)
 {
     AddBlockSpan(node.CgProgramKeyword, node.EndCgKeyword);
 }