나는 Bison과 파서를 쓰고 있는데 다음과 같은 경고가 나타납니다. 내가 방법을 검색하는 구글을 사용하고Bison 문법 경고
fol.y:42 parser name defined to default :"parse"
fol.y:61: warning: type clash ('' 'pred') on default action
는 그들을 제거,하지만 거의 그들은 내가 그들과 함께 발견 된 모든 포스트 때문에 (훨씬 적은 오류를 수정하는 방법) 무엇을 의미하는지에 빈 손으로 올라와있다 컴파일 오류가있어 경고 자체가 해결되지 않았습니다. 누군가가 그들이 의미하는 것과 그 문제를 해결하는 방법을 말할 수 있습니까? 관련 코드는 다음과 같습니다. 61 번째 줄은 마지막 세미콜론입니다. 믿을 수 없을만큼 장황하기 때문에 나머지 문법은 생략했습니다.
%union {
char* var;
char* name;
char* pred;
}
%token <var> VARIABLE
%token <name> NAME
%token <pred> PRED
%%
fol:
declines clauses {cout << "Done parsing with file" << endl;}
;
declines:
declines decline
|decline
;
decline:
PRED decs
;
% start 구문 분석을 사용하는 예제를 찾을 수 없습니다 (어디에 포함 시킬지 잘 모르겠다. 맨 위에 놓으면 glibc 오류가 발생 함). 다른 경고에는 다른 규칙이 있습니다. 거절하고 거절하지만 오류는 발생하지 않았습니다. – user381261
시작 규칙이 문법의 첫 번째 규칙 인 경우에는 필요하지 않지만 '% token' 행 다음에'% start'을 넣을 수 있습니다. 그러나 우리는 그 경고를 생성 한 것을 볼 수 없기 때문에 쉽게 해결할 수 없습니다. 마찬가지로, 다른 문제들; 당신은 문제를 보존하면서 문법을 자르기에 조금 열정적이었습니다. 위의 코드를 감안할 때'clauses'와'decs'가 모두 사용되지만 '토큰으로 정의되지 않았고 규칙이 없습니다'. 'decs : NAME;'과'clauses : VARIABLE;'규칙을 추가해도 문제를 진단하는 데 도움이되지 않습니다. '들소'는 경고없이 문법을 컴파일합니다. –