1
0

文字列を実�

This commit is contained in:
otya128
2015-06-07 13:32:38 +09:00
parent 65fe8558a2
commit 47de1d20bd
3 changed files with 6 additions and 17 deletions

View File

@@ -164,14 +164,6 @@ class Compiler
//FOR I=0 TO -1 STEP -1 //FOR I=0 TO -1 STEP -1
//-1>0 false //-1>0 false
//1>0 true //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); compileExpression(node.toExpression);
genCodePushGlobal(getGlobalVarIndex(node.initExpression.name)); genCodePushGlobal(getGlobalVarIndex(node.initExpression.name));
genCodeOP(TokenType.Greater); genCodeOP(TokenType.Greater);
@@ -184,13 +176,6 @@ class Compiler
//0<0 false //0<0 false
//1<0 false //1<0 false
//0<1 true break //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); compileExpression(node.toExpression);
genCodePushGlobal(getGlobalVarIndex(node.initExpression.name)); genCodePushGlobal(getGlobalVarIndex(node.initExpression.name));
genCodeOP(TokenType.Less); genCodeOP(TokenType.Less);

View File

@@ -22,6 +22,7 @@ FOR I=-2 TO -9 STEP -2
PRINT I PRINT I
NEXT NEXT
?I ?I
?\"Hello, World!!\"
"); ");
auto vm = parser.compile(); auto vm = parser.compile();
vm.run(); vm.run();

View File

@@ -122,13 +122,15 @@ class Lexical
for(;i < code.length;i++) for(;i < code.length;i++)
{ {
c = code[i]; c = code[i];
if(c == '"')//"を閉じない文も許容 if(c == '"' || c == '\r' || c == '\n')//"を閉じない文も許容
{ {
i++; i++;
break; break;
} }
str ~= c; str ~= c;
} }
token = Token(TokenType.String, Value(str));
break;
} }
if(c == '@') if(c == '@')
{ {
@@ -658,10 +660,11 @@ class Parser
Expression node = null; Expression node = null;
switch(token.type) switch(token.type)
{ {
case TokenType.String:
case TokenType.Integer: case TokenType.Integer:
version(none)write(token.value.integerValue, ' '); version(none)write(token.value.integerValue, ' ');
version(none)stdout.flush(); version(none)stdout.flush();
node = new Constant(Value(token.value.integerValue)); node = new Constant(token.value);
break; break;
case TokenType.Iden: case TokenType.Iden:
if(!lex.empty()) if(!lex.empty())