Foxoft.Ci.CiParser.ParseVarOrExpr C# (CSharp) Method

ParseVarOrExpr() private method

private ParseVarOrExpr ( ) : ICiStatement
return ICiStatement
        ICiStatement ParseVarOrExpr()
        {
            string name = this.CurrentString;
            CiSymbol symbol = this.Symbols.TryLookup(name);
            if (symbol is CiMacro) {
            NextToken();
            Expand((CiMacro) symbol);
            return ParseStatement();
            }
            // try var
            StringBuilder sb = new StringBuilder();
            this.CopyTo = sb;
            try {
            return ParseVar();
            }
            catch (ParseException) {
            }
            finally {
            this.CopyTo = null;
            }

            // try expr
            this.CurrentString = name;
            this.CurrentToken = CiToken.Id;
            BeginExpand("ambigous code", sb.ToString(), null);
            SetReader(new StringReader(sb.ToString()));
            ICiStatement result = ParseExprWithSideEffect();
            Expect(CiToken.Semicolon);
            return result;
        }