private static List <IExpression> ParseExpressionSequence( string[] expressionsString, ParserContext context, out SymbolType returnType, out SymbolType returnArrayType) { returnType = SymbolType.Invalid; returnArrayType = SymbolType.Invalid; List <IExpression> expressions = new List <IExpression>(); if (expressionsString.Length == 0) { returnType = SymbolType.Void; expressions.Add(new SymbolExpression <Void>(new VoidSymbol())); Debug.LogWarning("Executable.ParseExpressionSequence(...) : empty sequence."); return(expressions); } for (int i = 0; i < expressionsString.Length; i++) { string expressionString = expressionsString[i]; if (expressionString == "") { continue; } IExpression expression = Parser.ParseExpression(expressionString, context); if (expression == null) { Debug.LogError("Executable.ParseExpressionSequence(...) : parsing error at " + $"line {i+1} \"{expressionString}\"."); return(null); } if (i == expressionsString.Length - 1) { // last expression determines return Type returnArrayType = expression.ArrayType(); returnType = expressionString.EndsWith(";") ? SymbolType.Void : expression.Type(); } expressions.Add(expression); } return(expressions); }