%extra_argument {PSI_Parser *P}
/* TOKEN is defined inside syntax_error */
%syntax_error {
- PSI_ParserSyntaxError(P, P->fn, P->line, "Unexpected token '%s'", TOKEN->text);
+ PSI_ParserSyntaxError(P, P->psi.file.fn, P->line, "Unexpected token '%s'", TOKEN->text);
}
%nonassoc NAME.
block ::= COMMENT.
block ::= LIB(T) QUOTED_STRING(libname) EOS. {
- if (P->lib) {
- PSI_ParserSyntaxError(P, P->fn, T->line, "Extra 'lib %s' statement has no effect", libname->text);
+ if (P->psi.file.ln) {
+ PSI_ParserSyntaxError(P, P->psi.file.ln, T->line, "Extra 'lib %s' statement has no effect", libname->text);
} else {
- P->lib = strndup(libname->text + 1, libname->size - 2);
+ P->psi.file.ln = strndup(libname->text + 1, libname->size - 2);
}
free(libname);
free(T);
type_ = init_decl_type(T->type, T->text);
free(T);
}
-decl_type(type_) ::= CHAR(T). {
- type_ = init_decl_type(T->type, T->text);
- free(T);
-}
-decl_type(type_) ::= SHORT(T). {
- type_ = init_decl_type(T->type, T->text);
- free(T);
-}
-decl_type(type_) ::= INT(T). {
- type_ = init_decl_type(T->type, T->text);
- free(T);
-}
-decl_type(type_) ::= LONG(T). {
- type_ = init_decl_type(T->type, T->text);
- free(T);
-}
decl_type(type_) ::= FLOAT(T). {
type_ = init_decl_type(T->type, T->text);
free(T);
type_ = init_decl_type(T->type, T->text);
free(T);
}
-decl_type(type_) ::= SIZE_T(T). {
- type_ = init_decl_type(T->type, T->text);
+/* we have to support plain int here because we have it in our lexer rules */
+decl_type(type_) ::= INT(T). {
+ type_ = init_decl_type(PSI_T_NAME, T->text);
free(T);
}
decl_type(type_) ::= INT8(T). {