diff --git a/SMILEBASIC/compiler.d b/SMILEBASIC/compiler.d index b6563b1..c6e3187 100644 --- a/SMILEBASIC/compiler.d +++ b/SMILEBASIC/compiler.d @@ -164,14 +164,6 @@ class Compiler //FOR I=0 TO -1 STEP -1 //-1>0 false //1>0 true -/* - genCodeImm(Value("Helloneg\n")); - compileExpression(node.toExpression); - genCodeImm(Value("\nTo\n")); - compileExpression(node.stepExpression); - genCodeImm(Value("Step\n")); - */ - //code ~= new PrintCode(5); compileExpression(node.toExpression); genCodePushGlobal(getGlobalVarIndex(node.initExpression.name)); genCodeOP(TokenType.Greater); @@ -184,13 +176,6 @@ class Compiler //0<0 false //1<0 false //0<1 true break - /* - genCodeImm(Value("HelloPositive\n")); - compileExpression(node.toExpression); - genCodeImm(Value("\nTo\n")); - compileExpression(node.stepExpression); - genCodeImm(Value("Step\n")); - code ~= new PrintCode(5);*/ compileExpression(node.toExpression); genCodePushGlobal(getGlobalVarIndex(node.initExpression.name)); genCodeOP(TokenType.Less); diff --git a/SMILEBASIC/main.d b/SMILEBASIC/main.d index e915c38..1a64247 100644 --- a/SMILEBASIC/main.d +++ b/SMILEBASIC/main.d @@ -22,6 +22,7 @@ FOR I=-2 TO -9 STEP -2 PRINT I NEXT ?I +?\"Hello, World!!\" "); auto vm = parser.compile(); vm.run(); diff --git a/SMILEBASIC/parser.d b/SMILEBASIC/parser.d index 9294903..c51f544 100644 --- a/SMILEBASIC/parser.d +++ b/SMILEBASIC/parser.d @@ -122,13 +122,15 @@ class Lexical for(;i < code.length;i++) { c = code[i]; - if(c == '"')//"を閉じない文も許容 + if(c == '"' || c == '\r' || c == '\n')//"を閉じない文も許容 { i++; break; } str ~= c; } + token = Token(TokenType.String, Value(str)); + break; } if(c == '@') { @@ -658,10 +660,11 @@ class Parser Expression node = null; switch(token.type) { + case TokenType.String: case TokenType.Integer: version(none)write(token.value.integerValue, ' '); version(none)stdout.flush(); - node = new Constant(Value(token.value.integerValue)); + node = new Constant(token.value); break; case TokenType.Iden: if(!lex.empty())