Support unicode as variables
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
3dc67ec8a0
commit
90ec4766c3
|
@ -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++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue