diff options
author | Dietrich <dgeisler50@gmail.com> | 2015-05-05 04:50:47 -0600 |
---|---|---|
committer | Dietrich <dgeisler50@gmail.com> | 2015-05-05 04:50:47 -0600 |
commit | f9df0e2ea8e0b03352f5bbba54f091f2ee25b161 (patch) | |
tree | f5a38d6009175fee669d71464d60fa07bb36a60d /Source/Core | |
parent | ed8913170a86b73dc14ba09e40de1eba0cad4c9d (diff) |
added decimal reading functionality to the float type
Diffstat (limited to 'Source/Core')
-rw-r--r-- | Source/Core/Parser.cs | 33 |
1 files changed, 24 insertions, 9 deletions
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<Variable>/*!*/ ins, out List<Variable>/*!*/ 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;
}
|