나는 프로세스를 자동화하기 위해 사용자 정의 스크립트를 사용하고 있습니다. (실제로 배우기). 이것은 스크립트입니다.스크립트에서 선언되지 않은 변수 감지
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
그런 경우조차 얻으려고 노력하십시오. –
중복을 삭제하려면 distinct를 사용하십시오. – Vincenzo