コード例 #1
0
        public ExprOp Parse(InputTextStream inStream, AmountParseFlagsEnum flags = AmountParseFlagsEnum.PARSE_DEFAULT, string originalString = null)
        {
            try
            {
                ExprOp topNode = ParseValueExpr(inStream, flags);

                if (UseLookahead)
                {
                    UseLookahead = false;
                    Lookahead.Rewind(inStream);
                }
                Lookahead.Clear();

                return(topNode);
            }
            catch
            {
                if (!String.IsNullOrEmpty(originalString))
                {
                    ErrorContext.Current.AddErrorContext("While parsing value expression:");
                    int endPos = inStream.Pos;
                    int pos    = endPos > 0 ? endPos - Lookahead.Length : 0;
                    ErrorContext.Current.AddErrorContext(ErrorContext.LineContext(originalString, pos, endPos));
                }
                throw;
            }
        }
コード例 #2
0
ファイル: ExprParser.cs プロジェクト: vyolbius/nledger
        public ExprOp Parse(InputTextStream inStream, AmountParseFlagsEnum flags = AmountParseFlagsEnum.PARSE_DEFAULT, string originalString = null)
        {
            try
            {
                ExprOp topNode = ParseValueExpr(inStream, flags);

                if (UseLookahead)
                {
                    UseLookahead = false;
                    Lookahead.Rewind(inStream);
                }
                Lookahead.Clear();

                return(topNode);
            }
            catch
            {
                if (!String.IsNullOrEmpty(originalString))
                {
                    ErrorContext.Current.AddErrorContext("While parsing value expression:");
                    int endPos = inStream.Pos;
                    int pos    = endPos > 0 ? endPos - Lookahead.Length : 0;

                    Logger.Current.Debug("parser.error", () => String.Format("original_string = '{0}'", originalString));
                    Logger.Current.Debug("parser.error", () => String.Format("            pos = {0}", pos));
                    Logger.Current.Debug("parser.error", () => String.Format("        end_pos = {0}", endPos));
                    Logger.Current.Debug("parser.error", () => String.Format("     token kind = {0}", Lookahead.Kind));
                    Logger.Current.Debug("parser.error", () => String.Format("   token length = {0}", Lookahead.Length));

                    ErrorContext.Current.AddErrorContext(ErrorContext.LineContext(originalString, pos, endPos));
                }
                throw;
            }
        }