gpt4 book ai didi

c# - 检测脚本中未声明的变量

转载 作者:太空宇宙 更新时间:2023-11-03 16:14:29 25 4
gpt4 key购买 nike

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

var a = 5;
var b = 55;

return a+b;

我只是将源代码转换为 C# 并使用 CSharpCodeProvider 类对其进行编译。我目前正在将它转换成 token ,这是我的 token 枚举

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

最佳答案

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

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

或者,替换:

   result.Append(token.Value);

与:

if (!result.Contains(token.Value)) 
result.Append(token.Value);

关于c# - 检测脚本中未声明的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16130051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com