/// <summary>
 ///     Visits a String expression
 /// </summary>
 /// <param name="stringExpression"></param>
 protected virtual void VisitStringExpression(StringExpression stringExpression)
 {
 }
        /// <summary>
        ///     Evaluates the current input as a string
        /// </summary>
        /// <returns></returns>
        public StringExpression EvaluateString()
        {
            StringExpression retVal = null;
            int backup = Index;

            if (LookAhead("'"))
            {
                Match("'");
                int start = Index;
                while (!LookAhead("'") && Index < Buffer.Length)
                {
                    Index = Index + 1;
                }

                if (LookAhead("'"))
                {
                    Match("'");
                    retVal = new StringExpression(Root, RootLog, new String(Buffer, start, Index - start - 1), start - 1,
                        Index);
                }
                else
                {
                    Index = backup;
                }
            }

            return retVal;
        }