如何在文本中找到语法错​​误的坐标?

时间:2015-03-24 10:46:19

标签: algorithm syntax

我创建了语法分析器。如果发现语法错误,程序显示错误消息并停止运行。我还需要显示符号的行和列是什么导致错误。

分析器算法存在问题。它从文件中获取文本。将其拆分为语法结构列表(例如:int,bool,for)和单个符号。像:

"int[] foo = new int[5];"
"int" -> "[" -> "]" -> "f" -> "o" -> "o" -> "=" -> 
-> "new" -> "int" -> "[" -> "5" -> "]" -> ";"

Analyzer在发现语法错误或整篇文本之前逐个获取此列表的元素。

那么,如果发现sybtax的错误点是什么,在源文本中定义的简单方法是什么?

例如:

int[] foo = new int[5];
string[) foo; //syntax error in 2 line 8 column

我可以按符号读取源文本,并保存每个元素的位置。但这意味着对分析器代码进行了相当严格的修改。

也许这是一个更好的解决方案?

如果这很重要,我会使用c#。

1 个答案:

答案 0 :(得分:1)

你可能在线上有一个循环,然后你可以很容易地维护一个行计数器变量。

对于该列,您可以将当前行中的标记长度添加到检测到的错误中。