c# - 使用 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
推荐阅读
- google-cloud-platform - Google Cloud Console - 通过克隆设置 VM 实例
- azure - Azure asp.net core 2.2 获得高 CPU 使用率
- java - 同步多个线程之间的状态
- spring-boot - Spring Boot & RabbitMQ:消息转换内容类型
- javascript - 将 React 添加到工作区失败,EACCES:权限被拒绝,mkdir '/home/mint/.cache/Cypress'
- foreign-keys - Javers - 外键约束因 mysql 而失败
- mysql - 将空白单元格更新为 NULL 会导致所有单元格为 NULL
- java - 如何解决 maven-formatter-plugin 的问题?
- python - 如何在部分文本中搜索字符串?
- php - 之间添加内容