文字列を実�
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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())
|
||||||
|
|||||||
Reference in New Issue
Block a user