Bladeren bron

Record the last token column, to be able to restore comments

mingodad 9 jaren geleden
bovenliggende
commit
22d30be09f
3 gewijzigde bestanden met toevoegingen van 12 en 0 verwijderingen
  1. 9 0
      SquiLu/squirrel/sq_lexer.cpp
  2. 2 0
      SquiLu/squirrel/sqlexer.cpp
  3. 1 0
      SquiLu/squirrel/sqlexer.h

+ 9 - 0
SquiLu/squirrel/sq_lexer.cpp

@@ -173,6 +173,14 @@ static SQRESULT sq_SQLexer_lasttokenline(HSQUIRRELVM v){
 	return 1;
 }
 
+static SQRESULT sq_SQLexer_lasttokencolumn(HSQUIRRELVM v){
+	SQ_FUNC_VARS_NO_TOP(v);
+	GET_SQLexer_INSTANCE();
+
+    sq_pushinteger(v, self->lex->_lasttokencolumn);
+	return 1;
+}
+
 static SQRESULT sq_SQLexer_currentline(HSQUIRRELVM v){
 	SQ_FUNC_VARS_NO_TOP(v);
 	GET_SQLexer_INSTANCE();
@@ -229,6 +237,7 @@ static SQRegFunction SQLexer_obj_funcs[]={
 	_DECL_SQLEXER_FUNC(currentcolumn, 1, _SC(".")),
 	_DECL_SQLEXER_FUNC(prevtoken, 1, _SC(".")),
 	_DECL_SQLEXER_FUNC(lasttokenline, 1, _SC(".")),
+	_DECL_SQLEXER_FUNC(lasttokencolumn, 1, _SC(".")),
 	_DECL_SQLEXER_FUNC(first_enum_token, 1, _SC(".")),
 	_DECL_SQLEXER_FUNC(last_enum_token, 1, _SC(".")),
 	_DECL_SQLEXER_FUNC(lex, 1, _SC(".")),

+ 2 - 0
SquiLu/squirrel/sqlexer.cpp

@@ -44,6 +44,7 @@ SQInteger SQLexer::ResetReader(SQLEXREADFUNC rg, SQUserPointer up, SQInteger lin
 	_readf = rg;
 	_up = up;
 	_lasttokenline = _currentline = line;
+	_lasttokencolumn = 0;
 	_currentcolumn = 0;
 	_prevtoken = -1;
 	_reached_eof = SQFalse;
@@ -236,6 +237,7 @@ SQInteger SQLexer::LexLineComment()
 SQInteger SQLexer::Lex()
 {
 	_lasttokenline = _currentline;
+	_lasttokencolumn = _currentcolumn;
 	while(CUR_CHAR != SQUIRREL_EOB) {
 		switch(CUR_CHAR){
 		case _SC('\t'): case _SC('\r'): case _SC(' '): NEXT(); continue;

+ 1 - 0
SquiLu/squirrel/sqlexer.h

@@ -43,6 +43,7 @@ public:
 	SQInteger _prevtoken;
 	SQInteger _currentline;
 	SQInteger _lasttokenline;
+	SQInteger _lasttokencolumn;
 	SQInteger _currentcolumn;
 	const SQChar *_svalue;
 	SQInteger _nvalue;