2010-04-22 4 views
-1

C# 코드를 입력 할 때이를 평가하려고합니다. 마치 IDE를 작성하려고하는 것처럼 생각합니다.C# 코드를 구문 분석하여 식을 계산합니다 (기본적으로 Intellisense 구현)

그래서 사람 유형 코드, 나는 코드는 그가 단지 쓰기 않았다 무엇인지 찾으려 :

String x = ""; 

내가 지금 X를 등록 할 문자열의 유형입니다. 이제 사용자가 x를 다시 입력 할 때마다 Visual Studio Intellisense와 같은 x로 할 수있는 모든 것을 보여주고 싶습니다.

이 경우 일부 렉서 또는 파서가 필요합니까? 윌이 쉽게 할 수 있을까요? VS 2010에 Microsoft가 출시 한 기능이 일부 있음을 알게되었습니다. 어떤 아이디어?

답변

0

DLR을 사용하여이 작업을 수행 할 수 있습니다. 예를 들어 DLRPad on codeplex을 참조하십시오.

C#에서 리플렉션을 사용하는 것보다 CLR에서 DLR 인게이지 유형을 사용하는 것이 더 쉽습니다. 지난 번 (약 9 개월 전에) 나는 인텔리 센스가이 기술을 사용하여 구현되었다고 생각했습니다. 우리가 똑같은 방식으로 그렇게하려고했기 때문입니다.

+0

DLRPad에서 정확히 무엇을 설명 할 수 있습니까? 조금 읽었을 때 IRonPython 등을 사용하는 것으로 보입니다. 어떻게 적용 할 수 있습니까? – halivingston

0

가능한 경우 직접 작성하지 않는 것이 좋습니다. SharpDevelop은 Intellisense와 같은 기능을 가진 오픈 소스 .NET IDE입니다. 나는 당신이 자신의 프로젝트에 자신의 편집자를 삽입 할 수 있다고 생각합니다. Wikipedia에 따르면 라이센스는 LGPL이므로 닫힌 소스 프로젝트에서도 사용할 수 있습니다. 물론 이렇게하기 전에 직접 확인해야합니다.

Actipro SyntaxEditor은 구입할 수있는 타사 컨트롤입니다. WinForms 및 WPF 버전의 컨트롤이 있습니다. 그것은 우리를 위해 잘 작동했습니다. 현재 LINQ 및 람다식이 포함 된 Intellisense는 지원하지 않습니다. 나는 SharpDevelop가 이것을 지원하는지 여부를 모른다.

+0

좋아, 그 아이디어는 실제로 IntelliSense가 아니라 다른 것입니다. 나는 그 말을 사용하여 그 요지를 알려 주었다. 정말 코드의 라인을 취할 수 있어야하고 타입이 반환 된 것과 같은 세부 사항을 파악할 수 있어야합니다. 기본적으로 표현식을 평가합니다. 이 표현식은 이전에 선언 된 변수에 따라 달라질 수 있지만 그게 바로 심볼 테이블을 만드는 것만큼이나 복잡합니다. 솔직히 .NET 4.0에는 이것을 할 수있는 인프라가 있습니다. – halivingston

0

.NET 4에는이 문제를 해결하는 데 도움이되는 내용이 없습니다. Mono REPL을보실 수 있습니다. 또한 실제로하고 싶은 것에 대한 자세한 내용을 제공하면 도움이 될 수 있습니다.

+0

목적은 유형에 대한 표현식과 인스턴스 또는 정적 태스 크와 같은 기타 세부 사항을 평가하는 것입니다. 예 : String x = String.Empty; 이제 x는 String 유형이며 인스턴스 변수이므로 인스턴스 관련 작업을 표시하고 싶습니다. 이제는 IntelliSense를 구현할 trynig 인 것처럼 보였습니다. 대부분은 그렇지만 동일한 UI가 아닌 다른 방법으로 코드 검색을 돕는 것 같습니다. 나는 대부분 사소한 일을 처리하고 있는데, 문제는 다음과 같은 것들에 해당한다. x.ToString(). ToUpper() // 복잡해지기 시작한다. 그래서 렉서/파서가 도움이 될 수 있습니다. – halivingston

+0

@halivingston 아직도 당신이하려는 것을 정말로 이해하지 못합니다. 코드를 사용하여 응용 프로그램을 사용하려는 사용자는 무엇입니까? 그들은 그것을 편집하고 실행할 것입니까? 아니면 기존 코드를 탐색하는 방법입니까? 코드베이스 검색과 관련이 있습니까? 이 코드를 리팩터링하는 도구입니까? –

관련 문제