-1
다음과 같은 yacc/bison 파일의 규칙 섹션 중괄호에 사용 된 언어와 이에 대한 좋은 참조가 무엇인지 궁금합니다. 이 $<stmt>$2
를 작성하는 이유를 예를 들어 bison/yacc 파일에 사용 된 언어
stmts : stmt { $$ = new NBlock(); $$->statements.push_back($<stmt>1); }
| stmts stmt { $1->statements.push_back($<stmt>2); }
;
및 위의 코드에서
는 단지$2
나는이 참고 문헌을 읽을 것이다. 두 번째 부분에 대답 해 주시겠습니까? {$ 1-> statements.push_back ($ 2); } 및 {$ 1-> statements.push_back ($ 2); }. 내가 본 많은 코드에서 그들은 다르게 사용합니다. –
이것은 필자가 제공 한 Bison의 문서에 자세히 설명되어 있습니다. 다른 웹 사이트의 내용을 stackoverflow.com에 복사하여 붙여 넣기 만해도 아무 것도 유용하지 않습니다. –
"사용자 정의 매크로 프로세서"가 프로세스에 대한 최상의 설명이라고 확신하지 못합니다. Bison은 매크로 프로세서로'm4'를 사용합니다 (또는 아마도 템플릿 언어를 말하는 것이 낫습니다). 'm4'는 다소 표준적인 매크로 언어입니다. '$ '와'@'토큰을 적절한 매크로로 대체하는 것은 코드의 어휘 스캔 중에 수행된다.'scan-code.l'의'handle_action_dollar' 함수를 참조하십시오. 당신이 매크로 대체라고 부를 수 있다고 생각합니다.하지만 그것은 제게는 마치 필름처럼 보입니다. 어쨌든, upvoted. – rici