Ejemplo n.º 1
0
 private StmtIf.StmtIfTrue ParseTruePart()
 {
     StmtIf.StmtIfTrue eistmt = new StmtIf.StmtIfTrue();
     eistmt.KeyToken = tape.Current;
     tape.MoveNext();//跳过否则如果
     eistmt.Condition = ParseRawExpLine();
     eistmt.Body      = ParseStmtBlock(eistmt.KeyToken.Position);
     return(eistmt);
 }
Ejemplo n.º 2
0
        private Stmt ParseIf()
        {
            StmtIf ifStmt = new StmtIf();

            ifStmt.IfToken = tape.Current;

            StmtIf.StmtIfTrue ifPart = ParseTruePart();
            ifStmt.Parts.Add(ifPart);
            while (tape.CurrentKind == TokenKind.ELSEIF)
            {
                StmtIf.StmtIfTrue elseifPart = ParseTruePart();
                ifStmt.Parts.Add(elseifPart);
            }
            if (tape.CurrentKind == TokenKind.ELSE)
            {
                CodePosition pos = tape.Current.Position;
                tape.MoveNext();
                ifStmt.ElsePart = ParseStmtBlock(pos);
            }
            return(ifStmt);
        }