yacc/bison을 사용하여 #define
매크로를 구현하려면 어떻게해야합니까?yacc/bison lex에서 매크로 정의 #
나는 모든 정의 된 문자가 일반 변수와 일치해야한다고 생각했습니다. 변수는 [a-zA-Z_][a-zA-Z0-9_]*
으로 정의되었으므로 변수가 정의되어 있는지 확인하기 위해 거기에 수표를 넣을 수 있습니다. 그런 다음 텍스트를 대체해야합니다.
어떻게 할 수 있습니까? 지금 나는 완전히 불의 단어를 무시하고 싶다. 내가 C로 #define BAD
으로 정의한 것 같다. 아래는 그 렉스 규칙에 대한 코드이지만 잘못된 것이다. 또한 lex는 스트림에있는 "BA"에 대해 불평합니다. 나는 아래 내가 2)에서 검출의 정의 정의) 내가
if(strcmp(yytext, "BAD")==0) {
int i, l = strlen(yytext);
for(i=0; i<l; i++) { REJECT }
return;
}
return VAR; }
내가 주요 단계 1 알고 플로트처럼 무언가로 대체 어떻게 다음 BAD 무시하고 어떻게 그렇게 완전히 잘못하고 비논리적 알고 소스 3) make lex가 매크로 문자를 잊어 버린다. 4) 새로운 올바른 문자를 삽입한다.