diff --git a/Operand.cpp b/Operand.cpp index 377f336..299d391 100644 --- a/Operand.cpp +++ b/Operand.cpp @@ -55,6 +55,12 @@ namespace jet { } else if(in.ifNext("CONCAT")) { + } else if(in.ifNext("INTEGER")) { + + } else if(in.ifNext("ROUND")) { + + } else if(in.ifNext("RANDOM")) { + } else if(in.ifNext("true")) { boolean = true; string = "true"; @@ -72,7 +78,151 @@ namespace jet { } in.skipWhitespace(); - + + if(in.ifNext("=")) { + Operand op(in); + if(isNumber && op.isNumber) { + if(doubleValue == op.doubleValue) { + boolean = true; + isNumber = false; + string = "true"; + } else { + boolean = false; + isNumber = false; + string = "false"; + } + } else if(!isNumber && !op.isNumber) { + if(string == op.string) { + boolean = true; + isNumber = false; + string = "true"; + } else { + boolean = false; + isNumber = false; + string = "false"; + } + } + } + if(in.ifNext("<")) { + Operand op(in); + if(isNumber && op.isNumber) { + if(doubleValue < op.doubleValue) { + boolean = true; + isNumber = false; + string = "true"; + } else { + boolean = false; + isNumber = false; + string = "false"; + } + } else if(!isNumber && !op.isNumber) { + if(string < op.string) { + boolean = true; + isNumber = false; + string = "true"; + } else { + boolean = false; + isNumber = false; + string = "false"; + } + } + } + if(in.ifNext(">")) { + Operand op(in); + if(isNumber && op.isNumber) { + if(doubleValue > op.doubleValue) { + boolean = true; + isNumber = false; + string = "true"; + } else { + boolean = false; + isNumber = false; + string = "false"; + } + } else if(!isNumber && !op.isNumber) { + if(string > op.string) { + boolean = true; + isNumber = false; + string = "true"; + } else { + boolean = false; + isNumber = false; + string = "false"; + } + } + } + if(in.ifNext("!=") || in.ifNext("<>")) { + Operand op(in); + if(isNumber && op.isNumber) { + if(doubleValue != op.doubleValue) { + boolean = true; + isNumber = false; + string = "true"; + } else { + boolean = false; + isNumber = false; + string = "false"; + } + } else if(!isNumber && !op.isNumber) { + if(string != op.string) { + boolean = true; + isNumber = false; + string = "true"; + } else { + boolean = false; + isNumber = false; + string = "false"; + } + } + } + if(in.ifNext("<=")) { + Operand op(in); + if(isNumber && op.isNumber) { + if(doubleValue <= op.doubleValue) { + boolean = true; + isNumber = false; + string = "true"; + } else { + boolean = false; + isNumber = false; + string = "false"; + } + } else if(!isNumber && !op.isNumber) { + if(string <= op.string) { + boolean = true; + isNumber = false; + string = "true"; + } else { + boolean = false; + isNumber = false; + string = "false"; + } + } + } + if(in.ifNext(">=")) { + Operand op(in); + if(isNumber && op.isNumber) { + if(doubleValue >= op.doubleValue) { + boolean = true; + isNumber = false; + string = "true"; + } else { + boolean = false; + isNumber = false; + string = "false"; + } + } else if(!isNumber && !op.isNumber) { + if(string >= op.string) { + boolean = true; + isNumber = false; + string = "true"; + } else { + boolean = false; + isNumber = false; + string = "false"; + } + } + } if(in.ifNext("+")) { if(isNumber) { Operand op(in); diff --git a/jet-2.0 b/jet-2.0 index a6f34e6..d74ce3d 100755 Binary files a/jet-2.0 and b/jet-2.0 differ diff --git a/testjet.jet b/testjet.jet index f82f0cb..d09c36b 100755 --- a/testjet.jet +++ b/testjet.jet @@ -38,7 +38,7 @@ $[test$[ix$[ix1]]$[iz]] 789 - + 123 456