/* * Assignation * [Type] [Identifier] = [ExpressionNode] */ public override void EnterAssignationStatement([NotNull] AssignationStatementContext context) { AssignationStatement statement = new AssignationStatement(Parent, context); ExpressionListener listener = new ExpressionListener(statement); context.right.EnterRule(listener); ExpressionNode value = listener.GetResult(); statement.Value = value; listener = new ExpressionListener(statement); context.left.EnterRule(listener); statement.Target = listener.GetResult().Get <VariableNameExpression>(0); statement.Operator = '='; Result.Add(statement); }
private IEnumerable <IStatement> ParseMethodExecutions(IEnumerable <string> lines) { var result = new List <IStatement>(); int controlsequenceDepth = 0; foreach (string line in lines.Select(entry => entry.Trim())) { if (this.IsLineIgnored(line)) { continue; } if (line == "{") { continue; } if (line == "}") { if (controlsequenceDepth > 0) { result.Add(new ControlStatementEnd()); controlsequenceDepth--; } continue; } IStatement statement; if (this.Class.Name == "FightCommonInformations") { } if (Regex.IsMatch(line, ControlStatement.Pattern)) { statement = ControlStatement.Parse(line); controlsequenceDepth++; } else if (Regex.IsMatch(line, AssignationStatement.Pattern)) { statement = AssignationStatement.Parse(line); } else if (Regex.IsMatch(line, InvokeExpression.Pattern)) { statement = InvokeExpression.Parse(line); if (!string.IsNullOrEmpty((statement as InvokeExpression).ReturnVariableAssignation) && string.IsNullOrEmpty((statement as InvokeExpression).Preffix) && this.Fields.Count(entry => entry.Name == ((InvokeExpression)statement).ReturnVariableAssignation) > 0) { (statement as InvokeExpression).Preffix = "(" + this.Fields.Where(entry => entry.Name == ((InvokeExpression)statement).ReturnVariableAssignation) .First() .Type + ")"; // cast } // cast to generic type if (!string.IsNullOrEmpty((statement as InvokeExpression).Target) && (statement as InvokeExpression).Name == "Add" && this.Fields.Count(entry => entry.Name == ((InvokeExpression)statement).Target.Split('.').Last()) > 0) { string generictype = this.Fields.Where(entry => entry.Name == ((InvokeExpression)statement).Target.Split('.').Last()).First().Type.Split('<').Last().Split('>').First(); (statement as InvokeExpression).Args[0] = "(" + generictype + ")" + (statement as InvokeExpression).Args[0]; } } else { statement = new UnknownStatement { Value = line } }; result.Add(statement); } return(result); }