2009-12-03 4 views
0

는 :yacc에서 정의를 변수에 넣는 방법은 무엇입니까? 나는 다음과 같은 코드가 내 Yacc에 파일에서

fun_declaration : type_specifier ID '(' params ')' 
        {$2->type = "function"; 
        $2->args = params; } 

params : param_list | VOID ; 

당신은 내가 할 노력하고있어 볼 수 있나요?

args는 문자열입니다. 이 문자열에 함수 매개 변수를 넣으려고합니다. 그렇게하는 방법?

+0

yacc의 설명서를 보았습니까? 당신이 묻는이 질문들은 나에게 거의 믿을 수 없다. –

답변

0

$n 규칙의 의미 값 구성 요소를 참조하면됩니다. 이런 식으로 뭔가 :

$2->args = strdup($4); 
+0

시도 할 때 "'fun_declaration '에 선언 된 유형이 없습니다."라는 오류 메시지가 나타납니다. – neuromancer

1

당신은 더 ID처럼 'PARAMS'이 당신이 $$에서 원하는 문자열을 반환 할 필요가 '형'과 '인수'필드 일부 구조체에 대한 포인터를 반환합니다. 즉, % union의 어떤 요소를 사용할 것인지를 나타내는 % type 선언이 필요합니다.

yacc을 사용하는 방법에 대한 책과 온라인 자습서가 많이 있습니다.