protected override SyntaxNode VisitArrayLiteralSyntax(ArrayLiteralSyntax pNode)
 {
     if (_types.ContainsKey(pNode.TypeNode.Value))
     {
         return(SyntaxFactory.ArrayLiteral(PolyType(pNode.TypeNode), pNode.Size));
     }
     return(base.VisitArrayLiteralSyntax(pNode));
 }
Ejemplo n.º 2
0
        private IdentifierSyntax ParseLiteral()
        {
            StartSpan();
            IdentifierSyntax e = null;

            if (PeekAndExpect(TokenType.I32, out string v))
            {
                e = SyntaxFactory.NumericLiteral(v, NumberType.I32);
            }
            else if (PeekAndExpect(TokenType.I16, out v))
            {
                e = SyntaxFactory.NumericLiteral(v, NumberType.I16);
            }
            else if (PeekAndExpect(TokenType.I64, out v))
            {
                e = SyntaxFactory.NumericLiteral(v, NumberType.I64);
            }
            else if (PeekAndExpect(TokenType.Double, out v))
            {
                e = SyntaxFactory.NumericLiteral(v, NumberType.Double);
            }
            else if (PeekAndExpect(TokenType.Float, out v))
            {
                e = SyntaxFactory.NumericLiteral(v, NumberType.Float);
            }
            else if (PeekAndExpect(TokenType.String, out v))
            {
                e = SyntaxFactory.StringLiteral(v);
            }
            else if (PeekAndExpect(TokenType.Date, out v))
            {
                e = SyntaxFactory.DateLiteral(v);
            }
            else if (PeekAndExpect(TokenType.True, out v))
            {
                e = SyntaxFactory.BooleanLiteral(v);
            }
            else if (PeekAndExpect(TokenType.False, out v))
            {
                e = SyntaxFactory.BooleanLiteral(v);
            }
            else if (PeekAndExpect(TokenType.LeftBracket))
            {
                ExpressionSyntax size = GetExpression();
                if (size == null)
                {
                    Compiler.ReportError(CompilerErrorType.ExpressionExpected, PeekSpan());
                    size = SyntaxFactory.NumericLiteral("0", NumberType.I32);
                }

                if (!PeekAndExpect(TokenType.RightBracket))
                {
                    Compiler.ReportError(CompilerErrorType.ArrayLiteralBracket, PeekSpan());
                }
                e = SyntaxFactory.ArrayLiteral(size);
            }
            else
            {
                DestroySpan();
                return(null);
            }

            return(e.SetSpan <IdentifierSyntax>(EndSpan()));
        }
Ejemplo n.º 3
0
 protected virtual SyntaxNode VisitArrayLiteralSyntax(ArrayLiteralSyntax pNode)
 {
     return(SyntaxFactory.ArrayLiteral((TypeSyntax)Visit(pNode.TypeNode), Visit(pNode.Size)));
 }