Browse Source

Update the lexer to accept C/C++ float literals like "0.0f"

mingodad 7 years ago
parent
commit
e910ee96a6
2 changed files with 2 additions and 0 deletions
  1. 1 0
      SquiLu/squirrel/sqlexer.cpp
  2. 1 0
      SquiLu/tests/squilu-test.nut

+ 1 - 0
SquiLu/squirrel/sqlexer.cpp

@@ -912,6 +912,7 @@ SQInteger SQLexer::ReadNumber()
 	case TSCIENTIFIC:
 	case TSCIENTIFIC:
 	case TFLOAT:
 	case TFLOAT:
 		data->fvalue = (SQFloat)scstrtod(&data->longstr[0],&sTemp);
 		data->fvalue = (SQFloat)scstrtod(&data->longstr[0],&sTemp);
+		if(CUR_CHAR == _SC('f')) NEXT(); //0.0f C/C++ notation
 		return TK_FLOAT;
 		return TK_FLOAT;
 	case THEX:
 	case THEX:
 		okNumber = LexHexadecimal(&data->longstr[0],&itmp);
 		okNumber = LexHexadecimal(&data->longstr[0],&itmp);

+ 1 - 0
SquiLu/tests/squilu-test.nut

@@ -1130,6 +1130,7 @@ bar]==] == "foo\nbar");
 
 
 sqt.run("number", function(){
 sqt.run("number", function(){
 
 
+	sqt.ok(0.0f == 0.0); //C/C++ notation
 //adapetd from pike https://github.com/pikelang/Pike
 //adapetd from pike https://github.com/pikelang/Pike
 	sqt.ok(1e1 == 10.0);
 	sqt.ok(1e1 == 10.0);
 	sqt.ok(1E1 == 10.0);
 	sqt.ok(1E1 == 10.0);