亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

從零開(kāi)始寫(xiě)個(gè)編譯器吧 - 開(kāi)始寫(xiě)詞法分析器(3)

Barrior / 2225人閱讀

摘要:在之前的章節(jié)第章從零開(kāi)始寫(xiě)個(gè)編譯器吧開(kāi)始寫(xiě)詞法分析器中我有說(shuō),我將函數(shù)設(shè)計(jì)成主動(dòng)調(diào)用的形式,而則是被動(dòng)調(diào)用的形式。接下來(lái)本系列將進(jìn)入編寫(xiě)語(yǔ)法分析器的階段,不過(guò)在此之前,我將抽出一點(diǎn)時(shí)間介紹一下語(yǔ)言本身。

上周周末旅游去了,就沒(méi)更新了,雖然回到海拔0m的地區(qū),不過(guò)目前似乎還在缺氧,所以本次就少更點(diǎn)吧。

這章將結(jié)束詞法分析的部分。

在之前的章節(jié)(第7章從零開(kāi)始寫(xiě)個(gè)編譯器吧 - 開(kāi)始寫(xiě)詞法分析器(1))中我有說(shuō),我將 readChar(char c) 函數(shù)設(shè)計(jì)成主動(dòng)調(diào)用的形式,而 read() 則是被動(dòng)調(diào)用的形式。

那好,現(xiàn)在讓我們來(lái)填寫(xiě) read() 函數(shù)的 TODO 部分吧。首先,還得把構(gòu)造函數(shù)寫(xiě)完。

private final Reader reader;

public LexicalAnalysis(Reader reader) {
    this.reader = reader;
    this.state = State.Normal;
}

之后是 read() 函數(shù)。

private Token endToken = null;

Token read() throws IOException, LexicalAnalysisException {
    if(endToken != null) {
        return endToken;
    }
    while(tokenBuffer.isEmpty()) {
        int read = reader.read();
        char c = (read == -1 ? "