2013-07-28 1 views
1

현재 프로그램에서 데이터를 입력 할 수있는 파서를 만들고 있습니다. 사용 된 구문은 C에서 크게 영향을 받았습니다.전처리 기와 같은 파서로의 대체

전 처리기 인라인 대체품을 다시 제작하는 것을 즐깁니다.

#define HELLO ((variable1 + variable2 + variable3)) 
int variable1 = 37; 
int variable2 = 82; 
int variable3 = 928; 

것입니다 예를 들어

... 사실 나는 또한 내 파일을 구문 분석 STDIO.H에서 표준 기능을 사용하고 C를 사용하고 있습니다. ...이 기술을 정확하고 효율적으로 사용하기 위해 어떤 기법을 사용할 수 있습니까?

표준 컴파일러는 스트림 버퍼를 다시 복사하여 텍스트를 대체하고 재 복사가 발생했거나 무엇 때문에 대체 할 수 있습니까? 더 효율적인 기법이 있습니까?

전 처리기는 preprocessor가 preprocessor가 없다면 (재귀 적 접근법은 아닐까?) 모든 것을 대체하고 나서 실제 컴파일 작업을 시작하기 때문에 말입니다.

실례합니다. 지식 부족!

감사합니다.

+4

정확하게 C 전처리 기가 필요한 경우 C 전처리기만 사용하십시오. – Mat

+0

나는 내 자신의 것을 좋아한다. 그것을 내 자신의 코드에 적용하는 데 덜 고통 스럽습니다. 진정한 컴파일러가 아니기 때문에 파서 (예 : 배열 등의 내부 데이터에 대한 텍스트 지시문을 변환하는 등)를 수행 할 때마다 문제가 발생한다는 것을 이미 알고 있습니다. 나는 여기에 와서 사람들에게 물어보고, 기존 코드를 분석하는 데 시간 낭비가 아닌 빠른 답변을 무료로 제공하기를 원했다. – Yannick

+1

다른 언어를 만드는 대신 Lua와 같은 스크립팅 언어를 프로그램에 추가하는 것을 고려해보십시오. – lhf

답변

0

네, 전처리 기가 맞습니다. 예를 들어, 프로그램 실행에 필요한 모든 파일을 1 개의 파일로 모으는 일이 있습니다. stdio.h. 그런 다음 컴파일러가 프로그램을 컴파일 할 수있게합니다. 컴파일하려는 파일은 컴파일러에 대한 인수로 제공되며 컴파일러에서 사용되는 기술은 운영 체제 및 컴파일러 자체에 따라 다를 수 있습니다.

0

C 사전 처리기는 텍스트가 아닌 토큰에서 작동합니다. 특히, 매크로 확장은 전 처리기 지시문을 포함 할 수 없습니다. m4와 같은 다른 전처리 기는 다르게 작동합니다.

2

현대의 C 컴파일러는 전처리기를 텍스트 프로세서로 구현하지 않지만 다른 컴파일러 단계 (전처리 중 하나)가 얽힌 상태입니다. 이는 컴파일러 자체의 효율성과 원본 소스 코드로 오류를 추적 할 수있게하는 데 특히 중요합니다.

또한 혼자서 전 처리기를 구현하는 것은 지루한 작업입니다. 그런 프로젝트를 시작하기 전에 두 번 생각하십시오.