protected override SyntaxNode VisitArrayLiteralSyntax(ArrayLiteralSyntax pNode) { if (_types.ContainsKey(pNode.TypeNode.Value)) { return(SyntaxFactory.ArrayLiteral(PolyType(pNode.TypeNode), pNode.Size)); } return(base.VisitArrayLiteralSyntax(pNode)); }
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())); }
protected virtual SyntaxNode VisitArrayLiteralSyntax(ArrayLiteralSyntax pNode) { return(SyntaxFactory.ArrayLiteral((TypeSyntax)Visit(pNode.TypeNode), Visit(pNode.Size))); }