diff --git a/lang/ast-validate.lua b/lang/ast-validate.lua index 653382b..150cfd0 100644 --- a/lang/ast-validate.lua +++ b/lang/ast-validate.lua @@ -216,6 +216,16 @@ local syntax = { } } }, + StatementsGroup = { + kind = "StatementsGroup", + base = "Statement", + properties = { + statements = { + type = "list", + kind = "Statement", + } + } + }, EmptyStatement = { kind = "EmptyStatement", base = "Statement", diff --git a/lang/generator.lua b/lang/generator.lua index 6496924..f012d9d 100644 --- a/lang/generator.lua +++ b/lang/generator.lua @@ -565,6 +565,12 @@ function TestRule:LogicalExpression(node, jmp, jreg, negate, store, dest) end end +function StatementRule:StatementsGroup(node) + for i = 1, #node.statements do + self:emit(node.statements[i]) + end +end + function StatementRule:CallExpression(node) self:expr_tomultireg(node, 0, false) end diff --git a/lang/luacode-generator.lua b/lang/luacode-generator.lua index cedefe9..2ad6488 100644 --- a/lang/luacode-generator.lua +++ b/lang/luacode-generator.lua @@ -200,6 +200,12 @@ function ExpressionRule:SendExpression(node) return exp, operator.ident_priority end +function StatementRule:StatementsGroup(node) + for i = 1, #node.statements do + self:emit(node.statements[i]) + end +end + function StatementRule:FunctionDeclaration(node) self:proto_enter(0) local name = self:expr_emit(node.id)