我正在使用自定義腳本來自動執行這些過程。 (其實學習)。這是劇本。在腳本中檢測未聲明的變量
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