private void GenWhile(AegisWhile aegisWhile) { if (aegisWhile.Exp.GetType() == typeof(ComposExpr)) { WriteNew("while "); Write(TranslateExpr(aegisWhile.Exp)); WriteLine(""); } else { WriteNew("while ("); Write(TranslateExpr(aegisWhile.Exp)); WriteLine(")"); } WriteNewLine("{0}", "{"); tabLevel++; GenBlock(aegisWhile.Items); tabLevel--; WriteNewLine("{0}", "}"); }
private AegisWhile MatchWhile() { Match(TokenType.While); Expr exp = MatchExpr(); MatchNewline(); var ai = new AegisWhile(); ai.Exp = exp; PushNode(ai); curNode.Items = MatchWhileBlock().Items; ai = (AegisWhile)PopNode(); Match(TokenType.EndWhile); Match(TokenType.NewLine); return(ai); }