중요합니다
Visual Studio 2015에서는 식 계산기를 구현하는 이러한 방법이 더 이상 사용되지 않습니다. CLR 식 계산기 구현에 대한 자세한 내용은 CLR 식 계산기 및 관리 식 계산기 샘플을 참조하세요.
CLR(공용 언어 런타임)을 대상으로 하는 Visual Basic 및 C#(C-sharp로 발음)과 같은 컴파일러는 나중에 네이티브 코드로 컴파일되는 MSIL(Microsoft Intermediate Language)을 생성합니다. CLR은 결과 코드를 디버그하는 디버그 엔진(DE)을 제공합니다. 독점 프로그래밍 언어를 Visual Studio IDE에 통합하려는 경우 MSIL로 컴파일하도록 선택할 수 있으므로 고유한 DE를 작성할 필요가 없습니다. 그러나 프로그래밍 언어의 컨텍스트 내에서 식을 평가할 수 있는 EE(식 계산기)를 작성해야 합니다.
토론(Discussion)
컴퓨터 언어 식은 일반적으로 데이터 개체 집합과 이를 조작하는 데 사용되는 연산자 집합을 생성하기 위해 구문 분석됩니다. 예를 들어 "A+B" 식을 구문 분석하여 데이터 개체 "A" 및 "B"에 더하기 연산자(+)를 적용하면 다른 데이터 개체가 발생할 수 있습니다. 데이터 개체, 연산자 및 해당 연결의 총 집합은 트리 노드의 연산자와 분기의 데이터 개체를 사용하여 프로그램에서 트리로 가장 자주 표현됩니다. 트리 형식으로 세분화된 식을 구문 분석된 트리라고도 합니다.
식이 구문 분석되면 각 데이터 개체를 평가하기 위해 SP(기호 공급자)가 호출됩니다. 예를 들어 둘 이상의 메서드에서 "A"가 둘 다 정의된 경우 A 값을 확인할 수 있기 전에 "어떤 A?"라는 질문에 대답해야 합니다. SP에서 반환하는 대답은 "다섯 번째 스택 프레임의 세 번째 항목" 또는 "이 메서드에 할당된 정적 메모리의 시작 이후 50바이트 이상인 A"와 같습니다.
CLR 컴파일러는 프로그램 자체에 대해 MSIL을 생성하는 것 외에도 Program DataBase(.pdb) 파일에 기록되는 매우 설명적인 디버깅 정보를 생성할 수 있습니다. 독점 언어 컴파일러가 CLR 컴파일러와 동일한 형식으로 디버그 정보를 생성하는 한 CLR의 SP는 해당 언어의 명명된 데이터 개체를 식별할 수 있습니다. 명명된 데이터 개체가 식별되면 EE는 바인더 개체를 사용하여 해당 개체의 값을 보유하는 메모리 영역에 데이터 개체를 연결(또는 바인딩)합니다. 그런 다음 DE는 데이터 개체에 대한 새 값을 얻거나 설정할 수 있습니다.
독점 컴파일러는 .NET Framework의 네임스페이스에 정의된 ISymbolWriter 인터페이스를 호출하여 CLR 디버깅 정보를 제공할 수 있습니다 System.Diagnostics.SymbolStore. MSIL로 컴파일하고 이러한 인터페이스를 통해 디버그 정보를 작성하면 독점 컴파일러에서 CLR DE 및 SP를 사용할 수 있습니다. 이렇게 하면 독점 언어를 Visual Studio IDE에 통합하는 것이 크게 간소화됩니다.
CLR DE가 식을 평가하기 위해 독점 EE를 호출하면 DE는 SP 및 바인더 개체에 대한 인터페이스를 EE에 제공합니다. 따라서 CLR 기반 디버그 엔진을 작성하면 적절한 식 계산기 인터페이스를 구현하기만 하면 됩니다. CLR은 바인딩 및 기호 처리를 처리합니다.