2015-11-03 58 views
0

我上一段代碼的工作,同時創造我自己的編譯器。我設置了一個分辨器,用於識別dim a [10],b [12]和令牌:a,b,10和12如何捕獲令牌編譯器

我試圖讓函數識別a,10,b和12爲用下面的代碼的標記:

while (startPos < line.length()) { 
    if (line[startPos] == '[' || line[startPos] == ']' || line[startPos] == ',') { 
     token[tokenNumber] = temp; 
     temp = ""; 
     tokenNumber++; 
    } 
    else { 
     temp += line[startPos]; 
    } 
    startPos++; 
    } 

    if (temp != "") { 
    token[tokenNumber] = temp; 
    tokenNumber++; 
    } 

    return tokenNumber; 
} 

目前,我得到令牌是正確的,但是,我得到一個空白令牌的[10],b之間[12]儘管我的預處理器取出所有空白。

我怎麼會需要在一個右括號和逗號發現來調整我的代碼,以有括號匹配,並接受令牌?

回答

0

很容易明白爲什麼你會得到一個逗號的空白標記:在a[10]的右方括號中,添加一個標記,將temp變量設置爲空白,然後在','處添加剛纔的毯子temp變量作爲一個新的令牌。

爲什麼不只是添加同一後衛對溫度是空的,因爲你有進一步下跌的循環?