private void DecompileReplicationBlock(TextBuilder result, StatementList statementList) { result.Append("replication\n{\n").PushIndent(); for (int i = 0; i < statementList.Count; i++) { List <string> names = FindReplicatedProperties(statementList[i].StartOffset); if (names.Count > 0) { result.Indent().Append("if (").Append(statementList[i].Token.ToString()).Append(")").NewLine(); result.Indent().Append(" "); foreach (string name in names) { result.Append(name); if (name != names.Last()) { result.Append(", "); } } result.Append(";").NewLine().NewLine(); } } result.Append("}").NewLine().NewLine().PopIndent(); }
public void DecompileBytecode(StatementList statements, TextBuilder result, bool createControlStatements) { var labelTableStatement = statements.Find(s => s.Token is LabelTableToken); var labelTable = (LabelTableToken)labelTableStatement?.Token; result.HasErrors = statements.HasErrors(); if (createControlStatements) { try { statements.CreateControlStatements(); } catch (Exception) { ProblemRegistry.RegisterIncompleteControlFlow(this); } if (statements.IsIncompleteControlFlow()) { ProblemRegistry.RegisterIncompleteControlFlow(this); } statements.RemoveRedundantReturns(); } statements.Print(result, labelTable, !createControlStatements); }
internal void ReplaceRange(int index, StatementList oldStatements, Statement newStatement) { oldStatements.statements.ForEach(c => statements.Remove(c)); statements.Insert(index, newStatement); newStatement.Parent = _parent; }
public SwitchStatement(int startOffset, BytecodeToken token, StatementList children, int endOffset) : base(startOffset, token, children, endOffset) { }