Explorar el Código

Add keyword "var" as an alias to "local" when declaring local variables.
Add keywords "__LINE__" and "__FILE__" to allow scripts use then to access current file name and line number.

mingodad hace 13 años
padre
commit
63c28432f2
Se han modificado 3 ficheros con 10 adiciones y 0 borrados
  1. 5 0
      squirrel/sqcompiler.cpp
  2. 2 0
      squirrel/sqcompiler.h
  3. 3 0
      squirrel/sqlexer.cpp

+ 5 - 0
squirrel/sqcompiler.cpp

@@ -847,6 +847,11 @@ public:
 		case TK_DELETE : DeleteExpr(); break;
 		case _SC('('): Lex(); CommaExpr(); Expect(_SC(')'));
 			break;
+		case TK___LINE__: EmitLoadConstInt(_lex._currentline,-1); Lex();	break;
+		case TK___FILE__:
+			_fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetConstant(_sourcename));
+			Lex();
+			break;
 		default: Error(_SC("expression expected"));
 		}
 		return -1;

+ 2 - 0
squirrel/sqcompiler.h

@@ -70,6 +70,8 @@ struct SQVM;
 #define TK_STATIC 322
 #define TK_ENUM 323
 #define TK_CONST 324
+#define TK___LINE__ 325
+#define TK___FILE__ 326
 
 
 typedef void(*CompilerErrorFunc)(void *ud, const SQChar *s);

+ 3 - 0
squirrel/sqlexer.cpp

@@ -40,6 +40,7 @@ void SQLexer::Init(SQSharedState *ss, SQLEXREADFUNC rg, SQUserPointer up,Compile
 	ADD_KEYWORD(null, TK_NULL);
 	ADD_KEYWORD(function, TK_FUNCTION);
 	ADD_KEYWORD(local, TK_LOCAL);
+	ADD_KEYWORD(var, TK_LOCAL);
 	ADD_KEYWORD(for, TK_FOR);
 	ADD_KEYWORD(foreach, TK_FOREACH);
 	ADD_KEYWORD(in, TK_IN);
@@ -65,6 +66,8 @@ void SQLexer::Init(SQSharedState *ss, SQLEXREADFUNC rg, SQUserPointer up,Compile
 	ADD_KEYWORD(static,TK_STATIC);
 	ADD_KEYWORD(enum,TK_ENUM);
 	ADD_KEYWORD(const,TK_CONST);
+	ADD_KEYWORD(__LINE__,TK___LINE__);
+	ADD_KEYWORD(__FILE__,TK___FILE__);
 
 	_readf = rg;
 	_up = up;