/// <summary> /// Inline an iteration statement. /// </summary> /// <param name="iterationStatement">The iteration to inline.</param> /// <returns>A set of statements that represents an iteration.</returns> private List <Statement> InlineIteration(IterationStatement iterationStatement) { var newStatements = new List <Statement>(); var startIteration = CreateNewLabel(); var endIteration = CreateNewLabel(); _iterationEndLabels.Push(endIteration); newStatements.Add(startIteration); if (!iterationStatement.ConditionAfterBody) { newStatements.Add(new LabelConditionStatement(OptimizeExpression(iterationStatement.Condition), endIteration.Name.Identifier)); } newStatements.AddRange(OptimizeStatementBlock(iterationStatement.Statements)); if (iterationStatement.ConditionAfterBody) { newStatements.Add(new LabelConditionStatement(OptimizeExpression(iterationStatement.Condition), endIteration.Name.Identifier)); } newStatements.Add(new GoToLabelStatement(startIteration.Name.Identifier)); newStatements.Add(endIteration); _iterationEndLabels.Pop(); return(newStatements); }
static void Main12() { IterationStatement iterationStatement = new IterationStatement(); iterationStatement.LearnForLoops(); iterationStatement.LearnWhileLoops(); }
/// <summary> /// Generates the code for a <see cref="IterationStatement"/>. /// </summary> /// <param name="statement">The statement</param> /// <returns>A BaZic code</returns> private string GenerateIterationStatement(IterationStatement statement) { Requires.NotNull(statement.Condition, nameof(statement.Condition)); var condition = GenerateExpression(statement.Condition); var indent = IncreaseIndent(); var statements = new List <string>(); foreach (var stmt in statement.Statements) { statements.Add($"{indent}{GenerateStatement(stmt)}"); } var statementsString = string.Join(Environment.NewLine, statements); indent = DecreaseIndent(); if (statement.ConditionAfterBody) { return($"DO" + Environment.NewLine + $"{statementsString}" + Environment.NewLine + $"{indent}LOOP WHILE {condition}"); } else { return($"DO WHILE {condition}" + Environment.NewLine + $"{statementsString}" + Environment.NewLine + $"{indent}LOOP"); } }
static void Main3() { IterationStatement obj2 = new IterationStatement(); obj2.LearnForLoop(); obj2.LearnWhile(); }
static Statement() { Declaration = new DeclarationStatement(); Jump = new JumpStatement(); Selection = new SelectionStatement(); Iteration = new IterationStatement(); Expression = new ExpressionStatement(); }
static void Main111() { IterationStatement it = new IterationStatement(); // it.LearnForLoops(); it.LearnWhileLoops(); Person person = new Person(); person.Age = 34; }
static void Main4() { SelectionStatement s1 = new SelectionStatement(); // s1.LearnIfElse(); // s1.LearnSwitch(); IterationStatement i1 = new IterationStatement(); i1.LearnForLoop(); i1.LearnWhileLoop(); }
static void Main() { IterationStatement IterationStatementObj = new IterationStatement(); IterationStatementObj.ForLoop(); Person person = new Person(); person.Age = 34; }
public void CSharpCodeGenerator_Iteration_Empty() { var statement = new IterationStatement(); var generator = new CSharpCodeGenerator(); var result = generator.Write(statement); Assert.That.StringEquals(@"for (; ; ) { } ", result); }
static void Main4488() { IterationStatement iterationStatement = new IterationStatement(); iterationStatement.LearnWhileLoops(); AccessModifier accessModifier = new AccessModifier(); accessModifier.DoAnotherThing(); Person person = new Person(); person.SetAge(34); }
static void Main6() { IterationStatement iterationStatement = new IterationStatement(); iterationStatement.LearnWhileLoops(); AccessModifier accessModifier = new AccessModifier(); accessModifier.DoSomething(); Person person = new Person(); person.age = 34; }
public void Construct(CommonTree syntaxFor) { //Initialization var syntaxForInitialization = syntaxFor.GetChild(0).CastTo<CommonTree>(); if (syntaxForInitialization.ChildCount > 0) { //TODO: IMPLEMENT / FIX THIS syntaxForInitialization.Children.Cast<CommonTree>() .ForEach(syntaxVarDeclarationOrAssignment => { InitializationStatement = TreeHelper.GetStatements(this, Scope, syntaxVarDeclarationOrAssignment).First(); InitializationStatement.Construct(syntaxVarDeclarationOrAssignment); }); } //Condition var syntaxForCondition = syntaxFor.GetChild(1).CastTo<CommonTree>(); if (syntaxForCondition.ChildCount > 0) { syntaxForCondition.Children.Cast<CommonTree>() .ForEach(syntaxBoolExpression => { ConditionExpression = TreeHelper.GetExpression(this, Scope, syntaxBoolExpression); ConditionExpression.Construct(syntaxBoolExpression); }); } //Iteration var syntaxForIteration = syntaxFor.GetChild(2).CastTo<CommonTree>(); if (syntaxForIteration.ChildCount > 0) { syntaxForIteration.Children.Cast<CommonTree>() .ForEach(syntaxVarAssignment => { IterationStatement = TreeHelper.GetStatements(this, Scope, syntaxVarAssignment).First(); //if(iterationExpression is Varial) IterationStatement.Construct(syntaxVarAssignment); }); } //Block if (syntaxFor.ChildCount > 3) { var syntaxForBlock = syntaxFor.GetChild(3).CastTo<CommonTree>(); BlockOrSingleStatement = TreeHelper.GetStatements(this, Scope, syntaxForBlock).First(); BlockOrSingleStatement.Construct(syntaxForBlock); } }
public void CSharpCodeGenerator_Iteration() { var statement = new IterationStatement(); var variable = new VariableDeclarationStatement(null, "i", 0); statement.Initialization = variable; statement.Condition = new BinaryExpression(BinaryOperator.LessThan, variable, 10); statement.IncrementStatement = new UnaryExpression(UnaryOperator.PostIncrement, variable); statement.Body = new MethodInvokeExpression( new MemberReferenceExpression(new TypeReference("Console"), "Write"), variable); var generator = new CSharpCodeGenerator(); var result = generator.Write(statement); Assert.That.StringEquals(@"for (var i = 0; (i < 10); (i++)) { Console.Write(i); } ", result); }
private Statement ParseForStatement(ILabelSet labelSet) { var startPosition = Lookahead.StartPosition; IterationStatement result = null; Match(TokenType.For); Match(TokenType.LParenthesis); var isVariableDeclaration = false; if (Lookahead.Type == TokenType.Var) { ReadNextToken(); isVariableDeclaration = true; } if (Lookahead.Type == TokenType.Ident) { var variableName = Lookahead.Value; if (PeekNextToken().Type == TokenType.In) { MoveForwardLookahead(); if (isVariableDeclaration) { if (!_currentFunction.DeclaredVariables.Contains(variableName)) { _currentFunction.DeclaredVariables.Add(variableName); } } result = new ForInStatement(startPosition.LineNo, variableName, ParseExpression(), labelSet); } } if (result == null) { Expression initialization = null; if (isVariableDeclaration) { initialization = ParseVariableDeclarationList(); } else { if (Lookahead.Type != TokenType.Semicolon) { initialization = ParseExpression(); } } Match(TokenType.Semicolon); Expression condition = null; if (Lookahead.Type != TokenType.Semicolon) { condition = ParseExpression(); } Match(TokenType.Semicolon); Expression increment = null; if (Lookahead.Type != TokenType.RParenthesis) { increment = ParseExpression(); } result = new ForStatement(startPosition.LineNo, initialization, condition, increment, labelSet); } Match(TokenType.RParenthesis); result.Statement = ParseStatement(true); return(result); }
static void Main232() { IterationStatement iterationStatement = new IterationStatement(); iterationStatement.LearnWhileLoop(); }
static void Main456() { IterationStatement iterationStatement = new IterationStatement(); iterationStatement.LearnForLoops(); }
public void SetUp() { _control = new IterationStatement(); }
static void Main12345() { IterationStatement iterationStatement = new IterationStatement(); iterationStatement.LearnWhileloop(); }
static void Main() { IterationStatement s = new IterationStatement(); s.LearnWhileLoop(); }
static void Main5() { IterationStatement i = new IterationStatement(); i.LearnWhileLoop(); }
static void Main3() { IterationStatement iteration = new IterationStatement(); iteration.LearnForLoop(); }
public static void ResolveIterationStatement(IterationStatement iterationStatement, Table.Table table) { ResolveExpression(iterationStatement.Condition, table); ResolveEmbeddedStatement((EmbeddedStatement)iterationStatement.Body, table); }
static void Main231() { IterationStatement iterationStatement = new IterationStatement(); iterationStatement.LearnForLoop(); }
// Pascal casing : IterationStatement for method and class // camel Case: iterationStatement for variable static void Main1() { IterationStatement interationStatement = new IterationStatement(); interationStatement.LearnWhileLoops(); }
// [40] IterationStatement = 'while' '(' Expression ')' Statement | // 'do' Statement 'while' '(' Expression ')' ';' | 'for' '(' ExpressionStatement ExpressionStatement [Expression] ')' Statement. private bool IsIterationStatement(out IterationStatement iterationStatement) { iterationStatement = new IterationStatement(); if (CheckToken(SyntaxKind.WhileKeyword)) { if (!CheckToken(SyntaxKind.OpenBraceToken)) { return(false); } if (!IsExpression(out var expression)) { return(false); } if (!CheckToken(SyntaxKind.ClosingBraceToken)) { return(false); } if (!IsStatement(out var statement)) { return(false); } return(true); } else if (CheckToken(SyntaxKind.DoKeyword)) { if (!IsStatement(out var statement)) { return(false); } if (!CheckToken(SyntaxKind.WhileKeyword)) { return(false); } if (!CheckToken(SyntaxKind.OpenBraceToken)) { return(false); } if (!IsExpression(out var expression)) { return(false); } if (!CheckToken(SyntaxKind.ClosingBraceToken)) { return(false); } if (!CheckToken(SyntaxKind.SemiColonToken)) { return(false); } return(true); } else if (CheckToken(SyntaxKind.ForKeyword)) { if (!CheckToken(SyntaxKind.OpenBraceToken)) { return(false); } if (!IsExpressionStatement(out var expressionStatement)) { return(false); } if (!IsExpressionStatement(out var expressionStatement1)) { return(false); } if (IsExpression(out var expression)) { ; } if (!CheckToken(SyntaxKind.ClosingBraceToken)) { return(false); } if (!IsStatement(out var statement)) { return(false); } return(true); } return(false); }
static void Main2() { IterationStatement i1 = new IterationStatement(); i1.LearnForLoop(); }