From 47de1d20bdf5b3f1ce9b19b1fae1e09496d94a69 Mon Sep 17 00:00:00 2001 From: otya128 Date: Sun, 7 Jun 2015 13:32:38 +0900 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E5=AD=97=E5=88=97=E3=82=92=E5=AE=9F?= =?UTF-8?q?=EF=BF=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SMILEBASIC/compiler.d | 15 --------------- SMILEBASIC/main.d | 1 + SMILEBASIC/parser.d | 7 +++++-- 3 files changed, 6 insertions(+), 17 deletions(-) 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())