summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorGravatar Dietrich <dgeisler50@gmail.com>2015-05-05 04:50:47 -0600
committerGravatar Dietrich <dgeisler50@gmail.com>2015-05-05 04:50:47 -0600
commitf9df0e2ea8e0b03352f5bbba54f091f2ee25b161 (patch)
treef5a38d6009175fee669d71464d60fa07bb36a60d /Source/Core
parented8913170a86b73dc14ba09e40de1eba0cad4c9d (diff)
added decimal reading functionality to the float type
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Parser.cs33
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;
}