From f9df0e2ea8e0b03352f5bbba54f091f2ee25b161 Mon Sep 17 00:00:00 2001 From: Dietrich Date: Tue, 5 May 2015 04:50:47 -0600 Subject: added decimal reading functionality to the float type --- Source/Core/Parser.cs | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) (limited to 'Source/Core') diff --git a/Source/Core/Parser.cs b/Source/Core/Parser.cs index b333f654..7335dd37 100644 --- a/Source/Core/Parser.cs +++ b/Source/Core/Parser.cs @@ -1879,15 +1879,29 @@ out List/*!*/ ins, out List/*!*/ outs, out QKeyValue kv) { { //To be modified string s = ""; - if (la.kind == 97) { - Get(); - s = t.val; - } else SynErr(128); - try { - n = BigFloat.FromString(s); - } catch (FormatException) { + try + { + if (la.kind == 97) + { + //Expected format = fp (a b) || fp (a b c d) + Get(); //Skip the fp token + Get(); + if (t.val != "(") { throw new FormatException(); } + while (la.kind == 3 || la.kind == 6) { //Get values between the parens + Get(); + s += t.val + " "; + } + Get(); + if (t.val != ")") { throw new FormatException(); } + } + else SynErr(137); + + n = BigFloat.FromString(s.Trim()); + } + catch (FormatException) + { this.SemErr("incorrectly formatted floating point"); - n = BigFloat.ZERO; + n = BigFloat.ZERO; } } @@ -2131,7 +2145,7 @@ out QKeyValue kv, out Trigger trig, out Expr/*!*/ body) { {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,T,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x}, {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,T,T, T,T,T,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x}, {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,T,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x}, - {x,T,T,T, x,T,T,x, x,T,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, T,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x}, + {x,T,T,T, x,T,T,x, x,T,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, T,T,x,x, x,x,x,x, x,x,x,x, x,T,x,x}, {x,T,T,T, x,T,T,x, x,T,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,T,T, T,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x}, {x,T,T,T, T,T,T,x, x,T,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,T,T, T,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x} @@ -2301,6 +2315,7 @@ public class Errors { case 134: s = "invalid AttributeOrTrigger"; break; case 135: s = "invalid AttributeParameter"; break; case 136: s = "invalid QSep"; break; + case 137: s = "invalid Float"; break; default: s = "error " + n; break; } -- cgit v1.2.3