0
Yacc/Bison에서 인자리스트를 나타내는 벡터에 객체를 추가하고 싶습니다.벡터에 인수 추가하기 (Yacc/Bison)
argument_list: expression
{
//push back object representing expression onto arglist vector
}
|
expression ',' argument_list
{
//same here
};
난 당신이 유형 선언에서 벡터로 argument_list 선언 할 수 없기 때문에, 이것에 대해 이동하는 방법을 잘 모르겠어요 : 나는 다음과 같은 문법 규칙을 가지고있다. 이 벡터를 다음과 같은 규칙을 통해 메서드를 나타내는 AST 노드를 만드는 메서드에 전달하고자합니다.
arg_method_invocation: IDENT PERIOD IDENT LPAR argument_list RPAR
{
$$=new MethodCallStatement(yylineno,new MethodCallExpression(yylineno,$1,$3, $5));
if ($$==NULL)
fatal("method stmt: ", "error method stmt call");
}
이 경우조차도 가능합니까? 컴파일러 디자인에 익숙하지 않아이 접근법이 불가능할 수도 있습니다. 어떤 제안이라도 환영합니다. 당신이 vector
로 argument_list
를 선언 할 수없는 이유
argument_list: expression
{
$$ = new vector();
$$.add($1); // or whatever the API is
}
|
argument_list ',' expression
{
$1.add($3); // ditto
};
내가 볼 수 없습니다 :
타입 조합 선언문에 벡터를 설정하려고 시도했습니다. 벡터 선언문은 % union의 vector myVec과 타입 선언의 % type argument_list입니다. 규칙에서 벡터를 컴파일하고 사용할 때 "YYSTYPE에 myVec라는 멤버가 없습니다"라는 오류가 발생합니다. 뭐라 구요? –
Leif
@Leif YYSTYPE 선언에 * 무엇입니까? – EJP