2

我正在使用自定义脚本来自动化流程。(实际学习)。这是脚本。

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);
}
4

1 回答 1

0

您可以将“结果”声明为字典(=哈希),而不是列表,

在这种情况下,它不能有重复。

或者,替换:

   result.Append(token.Value);

和:

if (!result.Contains(token.Value)) 
        result.Append(token.Value);
于 2013-04-21T10:31:59.850 回答