public void ProcessStatementForRaw(DMASTProcStatementForRaw statementForRaw) { _proc.StartScope(); { foreach (var decl in FindVarDecls(statementForRaw.Expression1)) { ProcessStatementVarDeclaration(new DMASTProcStatementVarDeclaration(statementForRaw.Location, decl.DeclPath, null)); } if (statementForRaw.Expression2 != null || statementForRaw.Expression3 != null) { ProcessStatementForStandard(new DMASTProcStatementForStandard(statementForRaw.Location, new DMASTProcStatementExpression(statementForRaw.Location, statementForRaw.Expression1), statementForRaw.Expression2, statementForRaw.Expression3, statementForRaw.Body)); } else { if (statementForRaw.Expression1 is DMASTAssign assign && assign.Expression is DMASTVarDeclExpression && assign.Value is DMASTExpressionInRange) { string variableIdent = null; var exprIn = assign.Value as DMASTExpressionInRange; if (assign.Expression is DMASTVarDeclExpression decl) { variableIdent = decl.DeclPath.Path.LastElement; } if (exprIn.Step == null) { exprIn.Step = new DMASTConstantInteger(exprIn.Location, 1); } ProcessStatementForRange(new DMASTProcStatementForRange(statementForRaw.Location, new DMASTProcStatementExpression(statementForRaw.Location, statementForRaw.Expression1), new DMASTIdentifier(exprIn.Value.Location, variableIdent), exprIn.StartRange, exprIn.EndRange, exprIn.Step, statementForRaw.Body)); }
public void VisitProcStatementForRaw(DMASTProcStatementForRaw statementForRaw) { if (statementForRaw.Expression1 != null) { SimplifyExpression(ref statementForRaw.Expression1); } if (statementForRaw.Expression2 != null) { SimplifyExpression(ref statementForRaw.Expression2); } if (statementForRaw.Expression3 != null) { SimplifyExpression(ref statementForRaw.Expression3); } statementForRaw.Body?.Visit(this); }