我正在使用自定义脚本来自动执行这些过程。 (其实学习)。这是剧本。在脚本中检测未声明的变量
var a = 5;
var b = 55;
return a+b;
我只是将源代码转换为C#并使用CSharpCodeProvider类编译它。我目前正在转换成令牌,这里是我的令牌枚举
public enum Tokens
{
RETURN,
NEWLINE,
WHITESPACE,
VAR,
WORD,
SYMBOL,
INTEGER
}
和我顺利拿到这些令牌
VAR, WHITESPACE, WORD, WHITESPACE, INTEGER, SYMBOL
NEWLINE,
VAR, WHITESPACE, WORD, WHITESPACE, INTEGER, SYMBOL
NEWLINE
NEWLINE
RETURN, WHITESPACE, WORD, SYMBOL, WORD, SYMBOL
我正在试图找到未声明的变量,并宣布他们自己。我已经尝试将每个WORD
添加到变量列表并将其添加到脚本,但它会得到重复的声明。
我想这也验证
a = 5;
var b = 55;
return a+b;
即只加了东西的声明没有var关键字。
我该如何解决这个问题?
谢谢。
编辑:
这里是我如何解析源。
List<Token> tokensList;
List<string> variables;
for (int i=0; i<tokensList.Count; i++)
{
Token token = tokensList[i];
switch (token.TokenType)
{
case WORD:
variables.Add(token.Value);
break;
}
result.Append(token.Value);
}
你说的未声明的变量是什么意思?脚本中的所有变量都被声明。 – devdigital 2013-04-21 10:13:06
只是想获得这种情况。 – 2013-04-21 10:13:45
使用不同来删除重复? – Vincenzo 2013-04-21 10:16:32