繁体   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