Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public StmtIf(StmtIfRaw raw, Stmt parentStmt)
 {
     Raw        = raw;
     ParentStmt = parentStmt;
 }