Beispiel #1
0
            public override Object VisitDecimalReal([NotNull] KernelParser.DecimalRealContext context)
            {
                string text = context.Decimal().GetText();

                if (replacer.Matches(text).Count != 0)
                {
                    string replaced = replacer.Replace(text, "e");
                    try
                    {
                        return(long.Parse(text.Split('e')[1]) > 28
                            ? Real.Get(double.Parse(replaced, System.Globalization.NumberStyles.Any))
                            : Real.Get(decimal.Parse(replaced, System.Globalization.NumberStyles.Any)));
                    }
                    catch (System.OverflowException)
                    {
                        throw new System.ArgumentException($"Value {text} out of range.");
                    }
                }
                return(Real.Get(decimal.Parse(text, System.Globalization.NumberStyles.Any)));
            }
Beispiel #2
0
 /// <summary>
 /// Exit a parse tree produced by the <c>DecimalReal</c>
 /// labeled alternative in <see cref="KernelParser.urealDec"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitDecimalReal([NotNull] KernelParser.DecimalRealContext context)
 {
 }
Beispiel #3
0
 /// <summary>
 /// Visit a parse tree produced by the <c>DecimalReal</c>
 /// labeled alternative in <see cref="KernelParser.urealDec"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitDecimalReal([NotNull] KernelParser.DecimalRealContext context)
 {
     return(VisitChildren(context));
 }