1
0

DATA,READを実装.

This commit is contained in:
otya128
2015-08-19 13:02:02 +09:00
parent 190e655b90
commit 4c7487bb31
6 changed files with 111 additions and 5 deletions

View File

@@ -118,7 +118,7 @@ class Lexical
token = Token(TokenType.Integer, Value(num));
break;
}
if(c.isAlpha())
if(c.isAlpha() || c == '_')
{
wstring iden;
for(;i < code.length;i++)
@@ -787,6 +787,10 @@ class Parser
return incStatement();
case TokenType.Data:
return dataStatement();
case TokenType.Read:
return readStatement();
case TokenType.Restore:
return restoreStatement();
case TokenType.On:
node = onStatement();
break;
@@ -925,6 +929,34 @@ class Parser
}
return data;
}
Read readStatement()
{
Read read = new Read();
Token token;
do
{
lex.popFront();
auto expr = expression();
if(!expr || !isLValue(expr))
{
syntaxError();
}
read.addVariable(expr);
token = lex.front();
} while(token.type == TokenType.Comma);
return read;
}
Restore restoreStatement()
{
lex.popFront();
auto label = expression();
if(!label)
{
syntaxError();
return null;
}
return new Restore(label);
}
Inc incStatement()
{
auto token = lex.front();