AGS.CScript.Compiler.CodeBlockCompiler.ReadExpression C# (CSharp) Method

ReadExpression() private method

private ReadExpression ( AGS.CScript.Compiler.ScriptReader source, bool readTerminatingSymbolFromStream ) : Expression
source AGS.CScript.Compiler.ScriptReader
readTerminatingSymbolFromStream bool
return Expression
        private Expression ReadExpression(ScriptReader source, bool readTerminatingSymbolFromStream, params PredefinedSymbol[] endsWithSymbols)
        {
            Expression expression = new Expression();
            int bracketLevel = 0;
            while (bracketLevel >= 0)
            {
                foreach (PredefinedSymbol terminatingSymbol in endsWithSymbols)
                {
                    if ((bracketLevel == 0) && (source.NextIsKeyword(terminatingSymbol, !readTerminatingSymbolFromStream)))
                    {
                        return expression;
                    }
                }

                Token thisToken = source.PeekNextToken();
                if (thisToken is EndOfStreamToken)
                {
                    throw new CompilerMessage(ErrorCode.EndOfInputReached, "End of script reached in the middle of an expression");
                }

                CompilerUtils.AdjustBracketLevelIfTokenIsBracket(thisToken, ref bracketLevel);

                if (bracketLevel >= 0)
                {
                    expression.Add(source.ReadNextToken());
                }
            }
            throw new CompilerMessage(ErrorCode.UnexpectedToken, "Unexpected '" + source.ReadNextToken() + "'");
        }

Same methods

CodeBlockCompiler::ReadExpression ( bool readTerminatingSymbolFromStream ) : Expression