Sfoglia il codice sorgente

Added a string_t and void_t as alias to local.
Update the readme.

mingodad 9 anni fa
parent
commit
cf07758aff

+ 1 - 0
README.md

@@ -33,6 +33,7 @@ Also you'll find several changes and additions to the original Squirrel 3.0.4:
   * A XML module based on [https://github.com/leethomason/tinyxml2 tinyxml2].
   * A simple zlib module based on [http://www.zlib.net/ zlib].
   * A rs232 port of [https://github.com/ynezz/librs232 librs232].
+  * A bigger subset of C/C++ language syntax (variable/functions/class/struct declarations)
 
 Changes to the Squirrel syntax:
 

+ 8 - 1
SquiLu/samples/declarations.nut

@@ -10,6 +10,13 @@ int32_t doIt(int32_t a, char_t b) //C/C++ style declarations
 
 doIt(3, "dad");
 
+void_t sleepOnly(uint16_t sec)
+{
+	print("sleeping", sec);
+}
+
+sleepOnly(12);
+
 class K
 {
 	v1 = 0;
@@ -21,7 +28,7 @@ class K
 struct Person //struct is handled internally as a class
 {
 	int32_t age; //C/C++ style declarations
-	char_t name;
+	string_t name;
 	int32_t weight;
 };
 

+ 3 - 2
SquiLu/squirrel/sqcompiler.cpp

@@ -74,6 +74,7 @@ struct SQScope {
 					_fs->_breaktargets.pop_back();_fs->_continuetargets.pop_back();}
 
 #define CASE_TK_LOCAL_CHAR_TYPES \
+		case TK_LOCAL_STRING_T: \
 		case TK_LOCAL_CHAR_T: \
 		case TK_LOCAL_WCHAR_T
 
@@ -101,6 +102,7 @@ struct SQScope {
 		case TK_LOCAL_BOOL_T: \
 		case TK_LOCAL_TABLE_T: \
 		case TK_LOCAL_ARRAY_T: \
+		case TK_LOCAL_VOID_T: \
 		case TK_LOCAL_VOIDPTR_T
 
 static SQInteger compilerReadFunc(SQUserPointer fp)
@@ -1485,8 +1487,7 @@ function_params_decl:
 			else{
 			    SQInteger dest = _fs->PushTarget();
 			    switch(declType){
-                    case TK_LOCAL_CHAR_T:
-                    case TK_LOCAL_WCHAR_T:
+                    CASE_TK_LOCAL_CHAR_TYPES:
                         _fs->AddInstruction(_OP_LOADNULLS, dest,1);
                         declType = _VAR_STRING;
                         break;

+ 2 - 0
SquiLu/squirrel/sqcompiler.h

@@ -78,6 +78,7 @@ struct SQVM;
     ENUM_TK(PRIVATE)\
     ENUM_TK(PUBLIC)\
     ENUM_TK(IGNORE)\
+    ENUM_TK(LOCAL_STRING_T)\
     ENUM_TK(LOCAL_CHAR_T)\
     ENUM_TK(LOCAL_WCHAR_T)\
     ENUM_TK(LOCAL_BOOL_T)\
@@ -96,6 +97,7 @@ struct SQVM;
     ENUM_TK(LOCAL_FLOAT_T)\
     ENUM_TK(LOCAL_DOUBLE_T)\
     ENUM_TK(LOCAL_LONG_DOUBLE_T)\
+    ENUM_TK(LOCAL_VOID_T)\
     ENUM_TK(LOCAL_VOIDPTR_T)\
     ENUM_TK(BIT_AND_EQ)\
     ENUM_TK(BIT_OR_EQ)\

+ 2 - 0
SquiLu/squirrel/sqlexer.cpp

@@ -66,6 +66,7 @@ SQTable * SQLexer::GetKeywords()
 	ADD_KEYWORD(auto, TK_LOCAL);
 	ADD_KEYWORD(let, TK_LOCAL);
 
+	ADD_KEYWORD(string_t, TK_LOCAL_STRING_T);
 	ADD_KEYWORD(char_t, TK_LOCAL_CHAR_T);
 	ADD_KEYWORD(wchar_t, TK_LOCAL_WCHAR_T);
 
@@ -88,6 +89,7 @@ SQTable * SQLexer::GetKeywords()
 	ADD_KEYWORD(float_t, TK_LOCAL_FLOAT_T);
 	ADD_KEYWORD(double_t, TK_LOCAL_DOUBLE_T);
 	ADD_KEYWORD(long_double_t, TK_LOCAL_LONG_DOUBLE_T);
+	ADD_KEYWORD(void_t, TK_LOCAL_VOID_T);
 	ADD_KEYWORD(void_ptr_t, TK_LOCAL_VOIDPTR_T);
 
 	ADD_KEYWORD(for, TK_FOR);