簡體   English   中英

使用 C# VB.NET 編譯器構建中的符號表

[英]Symbol table in Compiler Construction using C# VB.NET

我正在為給定的輸入創建標記和符號表。 但是在將變量處理到符號表中時發生了空引用異常。 我已經在互聯網上搜索過,但找不到解決方案。 我是 CC 的完全新手。 特別感謝提供幫助的他/她。 出現錯誤的具體函數代碼如下,請修復...

for (int r = 1; r <= SymbolTable.GetLength(0);r++)
{
    //search in the symbol table if variable entry
    //  already exists
    if (SymbolTable[r, 2].Equals(finalArrayc[x].ToString()))
    {
        ind = SymbolTable[r, 1];
        ty = SymbolTable[r, 3];
        val = SymbolTable[r, 4];
        lin = SymbolTable[r, 5];
        tfTokens.AppendText("<var" + ind + ", " + ind + "> ");
        break;
    }
}

NullReferenceException 就行了:

if (SymbolTable[r, 2].Equals(finalArrayc[x].ToString()))

改成:

if (SymbolTable[r, 2] != null && finalArrayc[x] != null && SymbolTable[r, 2].Equals(finalArrayc[x].ToString()))

目前這兩者中的一個很可能為空,因此您需要在訪問之前進行檢查。

對於符號越界異常,您還需要檢查表的長度。

IE

   SymbolTable[r].Length > 3 &&  SymbolTable[r, 2] != null && finalArrayc.Length < x && finalArrayc[x] != null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM