Browse Source

Added noexcept/friend as reserved keywords

mingodad 9 years ago
parent
commit
b1a91a7a57
3 changed files with 10 additions and 0 deletions
  1. 6 0
      SquiLu/squirrel/sqcompiler.cpp
  2. 2 0
      SquiLu/squirrel/sqcompiler.h
  3. 2 0
      SquiLu/squirrel/sqlexer.cpp

+ 6 - 0
SquiLu/squirrel/sqcompiler.cpp

@@ -668,6 +668,7 @@ public:
 			}
 			break;
 
+		case TK_FRIEND:
 		case TK_VOLATILE:
 		    Lex();
             goto start_again;
@@ -1962,6 +1963,10 @@ if(color == "yellow"){
 			Error(_SC("invalid class name"));
 		}
 		else if(_es.etype == OBJECT || _es.etype == BASE) {
+            if(_token == _SC(';')) //class forward declaration
+            {
+
+            }
 			ClassExp();
 			EmitDerefOp(_OP_NEWSLOT);
 			_fs->PopTarget();
@@ -2296,6 +2301,7 @@ error:
             break;
 
             case TK_CONST:
+            case TK_NOEXCEPT:
             case TK_VOLATILE:
                 Lex(); //accept and ignore
             break;

+ 2 - 0
SquiLu/squirrel/sqcompiler.h

@@ -41,6 +41,7 @@ struct SQVM;
     ENUM_TK(FLOAT)\
     ENUM_TK(FOR)\
     ENUM_TK(FOREACH)\
+    ENUM_TK(FRIEND)\
     ENUM_TK(__FUNCTION__)\
     ENUM_TK(FUNCTION)\
     ENUM_TK(GE)\
@@ -84,6 +85,7 @@ struct SQVM;
     ENUM_TK(NE)\
     ENUM_TK(NE_IDENTITY)\
     ENUM_TK(NEWSLOT)\
+    ENUM_TK(NOEXCEPT)\
     ENUM_TK(NULL)\
     ENUM_TK(OR)\
     ENUM_TK(PLUSEQ)\

+ 2 - 0
SquiLu/squirrel/sqlexer.cpp

@@ -79,6 +79,7 @@ SQTable * SQLexer::GetKeywords()
 	ADD_KEYWORD(float_t, TK_LOCAL_FLOAT_T);
 	ADD_KEYWORD(foreach, TK_FOREACH);
 	ADD_KEYWORD(for, TK_FOR);
+	ADD_KEYWORD(friend, TK_FRIEND);
 	ADD_KEYWORD(function, TK_FUNCTION);
 	ADD_KEYWORD(__FUNCTION__,TK___FUNCTION__);
 	ADD_KEYWORD(if, TK_IF);
@@ -94,6 +95,7 @@ SQTable * SQLexer::GetKeywords()
 	ADD_KEYWORD(local, TK_LOCAL);
 	ADD_KEYWORD(long_double_t, TK_LOCAL_LONG_DOUBLE_T);
 	ADD_KEYWORD(new,TK_IGNORE);
+	ADD_KEYWORD(noexcept,TK_NOEXCEPT);
 	ADD_KEYWORD(number_t, TK_LOCAL_NUMBER_T);
 	ADD_KEYWORD(null, TK_NULL);
 	ADD_KEYWORD(NULL, TK_NULL);