diff --git a/SMILEBASIC/node.d b/SMILEBASIC/node.d index e3a74a1..e8b77dc 100644 --- a/SMILEBASIC/node.d +++ b/SMILEBASIC/node.d @@ -100,6 +100,7 @@ class Statements : Statement this() { this.type = NodeType.Statements; + statements = new Statement[0]; } void addStatement(Statement statement) { @@ -110,10 +111,28 @@ class Statements : Statement enum PrintArgumentType { Expression,//exp - LF, + Line, Tab,//, } /* +*;は基本無視 +*/ +struct PrintArgument +{ + PrintArgumentType type; + Expression expression; + this(PrintArgumentType type) + { + this.type = type; + this.expression = null; + } + this(PrintArgumentType type, Expression expression) + { + this.type = type; + this.expression = expression; + } +} +/* *PRINTは関数ではないしmkIIと違って必ず:がいる *関数と違ってFUNC(,,,)のような記述はエラー *と言っても3.2で上の記述もエラーになりうる @@ -121,14 +140,22 @@ enum PrintArgumentType class Print : Statement { - /* - *;は基本無視 - */ - struct PrintArgument - { - PrintArgumentType type; - Expression expression; - } PrintArgument[] args; - + this() + { + this.type = NodeType.Print; + args = new PrintArgument[0]; + } + void addArgument(Expression expression) + { + args ~= PrintArgument(PrintArgumentType.Expression, expression); + } + void addTab() + { + args ~= PrintArgument(PrintArgumentType.Tab); + } + void addLine() + { + args ~= PrintArgument(PrintArgumentType.Line); + } }