2012-04-15 6 views
0

사용자 정의 언어를 개발 중이며 모든 것이 잘 작동하지만 getchar(), fopen() 등의 표준 기능을 추가하는 것을 중단했습니다. 제 생각 중 하나는 구문 분석하는 것입니다. 시각적 인 .lib 파일이지만 엄청난 작업입니다 (예 : 사양 부족). 다른 아이디어가 있습니까? 어떻게 D와 같은 언어로 만들어 졌습니까?사용자 정의 언어로 표준 C 라이브러리 지원

편집 : 달성하고자하는 것은 시스템 기능 (예 : 소켓을 사용하여 파일 열기)을 사용할 수 있지만 처음부터 쓰지 않아도됩니다. 이미 작성된 libs/dll에 액세스 할 수있는 방법이 필요합니다.

가장 간단한 해결책은로드하는 것입니다. C 표준 라이브러리 및 이러한 함수 (전에 스택 설정) 호출 할 수 있지만이 코드를 얻을 수있는 방법이 필요합니다().

+1

당신이 무엇을 요구하는지 이해하기가 어렵습니다. 게시물을 수정하고 자세히 설명하십시오. – pzanoni

답변

1

일반적으로 C 표준 라이브러리를 사용하는 대신 자신의 언어에 맞는 표준 라이브러리를 만들 수 있습니다. 왜 당신은 자신의 언어를 쓰고 있습니까? 그렇다고해서 표준 라이브러리의 설계에 적응해서는 안됩니까?

일반적으로 C 라이브러리와의 호환성을 위해 가장 일반적인 방법은 다른 언어로 된 인터페이스를 라이브러리에 다시 표현하는 것입니다. 파이썬은이를 위해 ctypes 모듈을 제공합니다. .NET에서는 P/Invokes를 사용합니다. 인터페이스를 번역 할 때 약간의 수동 작업과 오류가 발생할 수 있지만 자동화 된 프로세스보다 훨씬 간단하고 강력합니다.

또한 .NET은 라이브러리 및 언어가 올바르게 설계되어있는 한 .NET의 모든 언어 구현에서 .NET 라이브러리에 액세스 할 수 있도록 설계되었습니다. 특정 언어는 자신의 표준 라이브러리로 채워진 자신 만의 필요를 가질 수 있지만 콘솔 I/O와 같은 것은 한 곳에서 이루어 지므로 각 언어별로 재발 명할 필요가 없습니다.

관련 문제