저는 파서 생성기에 Flex와 Bison을 사용하고 있지만 스캐너의 시작 상태에는 문제가 있습니다.Lex/Flex의 시작 상태
나는 주석 처리하는 전용 규칙을 사용하고 있지만,이 문법은 인용 토큰과 일치하지 않는 것 :이 간단한 예에서 라인
%x COMMENT
// { BEGIN(COMMENT); }
<COMMENT>[^\n] ;
<COMMENT>\n { BEGIN(INITIAL); }
"==" { return EQUALEQUAL; }
. ;
을 :
// a == b
ISN을 ' 이 규칙을 포함시키지 않는 한 전적으로 댓글로 매칭됩니다.
<COMMENT>"==" ;
어떻게해야합니까? 이 모든 토큰을 독점 규칙에 추가해야합니까? 렉스/플렉스 또는 어떤에서
많은 규칙이 있으므로 피할 수있는 경우 포괄적 인 상태를 사용하지 않아도됩니다. 문제는 '의견 입력'규칙이 두 개 이상의 문자 (예 : ==)가있는 토큰과 일치하지 않는 것입니다. – Dan
그러면 뭔가 잘못하고있는 것 같아요. 주석을위한 '하위 파서'를 만들어야합니다.이 토큰은 일반 토큰과 일치하지 않습니다. –
말하자면, 각 입력 행을 저장하고 싶다면 잘못된 행 번호를 줄 것입니까? –