国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Barrior / 2168人閱讀

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

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

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

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

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

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 ? "