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 '_':
|
||||
return LexIdentifierOrKeyword();
|
||||
default:
|
||||
if (isalpha(c)){
|
||||
if (isalpha(c) || c > 255){
|
||||
return LexIdentifierOrKeyword();
|
||||
}
|
||||
this -> ScriptData -> Diagnostics -> LogError(DiagnosticCode::UnexpectedCharacter, this -> _position - 1, 1);
|
||||
|
@ -185,7 +185,7 @@ IToken * Lexer::LexIdentifierOrKeyword() {
|
|||
while (true){
|
||||
char16_t next = this -> Peek();
|
||||
if (next == '\0') break;
|
||||
if (isalpha(next) || next == '_'){
|
||||
if (isalpha(next) || next == '_' || next > 255){
|
||||
this -> Next();
|
||||
end++;
|
||||
}
|
||||
|
|
|
@ -62,4 +62,18 @@ end
|
|||
CHECK(variable->EvaluateInteger() == 2);
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue