private StmtRaw ParseIf() { StmtIfRaw ifStmt = new StmtIfRaw(); ifStmt.IfToken = (LexTokenText)currLineTokenTape.Current; StmtIfRaw.IfElseStmt ifPart = ParseTruePart(); ifStmt.ElseIfParts.Add(ifPart); while (currLineTokenTape.Current.IsKind(TokenKindKeyword.ELSEIF)) { StmtIfRaw.IfElseStmt elseifPart = ParseTruePart(); ifStmt.ElseIfParts.Add(elseifPart); } if (currLineTokenTape.Current.IsKind(TokenKindKeyword.ELSE)) { ifStmt.ElsePart = new StmtIfRaw.ElseStmt(); ifStmt.ElsePart.KeyToken = (LexTokenText)currLineTokenTape.Current; var pos = tape.Current.StartCol; TapeMoveNext(); ifStmt.ElsePart.Body = ParseStmtBlockRaw(pos); } return(ifStmt); }
public StmtIf(StmtIfRaw raw, Stmt parentStmt) { Raw = raw; ParentStmt = parentStmt; }