From f1744c8c3106b43a48bb9ac314f1f51334b54fd9 Mon Sep 17 00:00:00 2001 From: Guy Rabiller Date: Sun, 26 Oct 2014 10:33:22 +0100 Subject: [PATCH] Fix issue #821: GDScript now accepts single quoted as well as double quoted strings. --- modules/gdscript/gd_tokenizer.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/gdscript/gd_tokenizer.cpp b/modules/gdscript/gd_tokenizer.cpp index 7a1d6814ba..9ccedd34ea 100644 --- a/modules/gdscript/gd_tokenizer.cpp +++ b/modules/gdscript/gd_tokenizer.cpp @@ -237,7 +237,9 @@ void GDTokenizerText::_advance() { while (true) { - bool is_node_path=false; + bool is_node_path = false; + bool is_string = false; + bool is_string_alt = false; switch(GETCHAR(0)) { case 0: @@ -527,13 +529,17 @@ void GDTokenizerText::_advance() { } } break; case '@': - if (CharType(GETCHAR(1))!='"') { + if( CharType(GETCHAR(1))!='"' && CharType(GETCHAR(1))!='\'' ) { _make_error("Unexpected '@'"); return; } INCPOS(1); is_node_path=true; + + case '\'': + is_string_alt = true; case '"': { + is_string = is_string_alt ? false : true; int i=1; String str; @@ -542,8 +548,10 @@ void GDTokenizerText::_advance() { _make_error("Unterminated String"); return; - } else if (CharType(GETCHAR(i)=='"')) { + } else if( CharType(GETCHAR(i)=='"') && is_string ) { break; + } else if( CharType(GETCHAR(i)=='\'') && is_string_alt ) { + break; } else if (CharType(GETCHAR(i)=='\\')) { //escaped characters... i++;