Support unicode as variables
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Deukhoofd 2019-06-15 17:51:10 +02:00
parent 3dc67ec8a0
commit 90ec4766c3
No known key found for this signature in database
GPG Key ID: B4C087AC81641654
2 changed files with 16 additions and 2 deletions

View File

@ -105,7 +105,7 @@ IToken* Lexer::LexNext(char16_t c){
case '_': case '_':
return LexIdentifierOrKeyword(); return LexIdentifierOrKeyword();
default: default:
if (isalpha(c)){ if (isalpha(c) || c > 255){
return LexIdentifierOrKeyword(); return LexIdentifierOrKeyword();
} }
this -> ScriptData -> Diagnostics -> LogError(DiagnosticCode::UnexpectedCharacter, this -> _position - 1, 1); this -> ScriptData -> Diagnostics -> LogError(DiagnosticCode::UnexpectedCharacter, this -> _position - 1, 1);
@ -185,7 +185,7 @@ IToken * Lexer::LexIdentifierOrKeyword() {
while (true){ while (true){
char16_t next = this -> Peek(); char16_t next = this -> Peek();
if (next == '\0') break; if (next == '\0') break;
if (isalpha(next) || next == '_'){ if (isalpha(next) || next == '_' || next > 255){
this -> Next(); this -> Next();
end++; end++;
} }

View File

@ -62,4 +62,18 @@ end
CHECK(variable->EvaluateInteger() == 2); CHECK(variable->EvaluateInteger() == 2);
delete script; delete script;
} }
TEST_CASE( "Able to use emoji", "[integration]" ) {
Script* script = Script::Create(uR"(
💩 = "LJ"
)");
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
REQUIRE(script -> HasVariable(uR"(💩)"));
auto variable = script->GetVariable(uR"(💩)");
REQUIRE(variable != nullptr);
CHECK(*variable->EvaluateString() == u"LJ");
delete script;
}
#endif #endif