From 627e92126c76b5da47bf5e20ea074774406ecf71 Mon Sep 17 00:00:00 2001 From: otya128 Date: Tue, 6 Dec 2016 07:27:49 +0000 Subject: [PATCH] Fix wide-char parsing --- SMILEBASIC/parser.d | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SMILEBASIC/parser.d b/SMILEBASIC/parser.d index 69c9332..b363dda 100644 --- a/SMILEBASIC/parser.d +++ b/SMILEBASIC/parser.d @@ -16,8 +16,8 @@ class Lexical int line; void initReservedWordsTable() { - table = new TokenType[256]; - for(int i = 0;i<256;i++) + table = new TokenType[65536]; + for(int i = 0;i<65536;i++) { table[i] = TokenType.Unknown; } @@ -125,7 +125,7 @@ class Lexical for(;i < code.length;i++) { c = code[i]; - if(table[cast(char)c] == TokenType.NewLine) break; + if(table[c] == TokenType.NewLine) break; } token = Token(TokenType.NewLine); if (i >= code.length) @@ -203,7 +203,7 @@ class Lexical for(;i < code.length;i++) { c = code[i]; - if(table[cast(char)c] == TokenType.NewLine) break; + if(table[c] == TokenType.NewLine) break; } token = Token(TokenType.NewLine); if (i >= code.length) @@ -336,11 +336,11 @@ class Lexical i += 2; break; } - if(table[cast(char)c] == TokenType.Unknown) + if(table[c] == TokenType.Unknown) { //error } - token = Token(table[cast(char)c]); + token = Token(table[c]); i++; //CRLFだった if(token.type == TokenType.NewLine)