#include "plist.h"
#include "types/layout.h"
+#define yytokentype psi_token_type
+
+#define PSI_T_CAST PSI_T_EQUALS
+#define PSI_T_POINTER PSI_T_ASTERISK
+
struct psi_parser;
}
%token <struct psi_token *> CPP_RESTRICT
%token <struct psi_token *> CPP_ASM
+/* virtual tokens */
+%token <struct psi_token *> BSLASH
+%token <struct psi_token *> LONG_DOUBLE
+%token <struct psi_token *> INT8
+%token <struct psi_token *> UINT8
+%token <struct psi_token *> INT16
+%token <struct psi_token *> UINT16
+%token <struct psi_token *> INT32
+%token <struct psi_token *> UINT32
+%token <struct psi_token *> INT64
+%token <struct psi_token *> UINT64
+%token <struct psi_token *> INT128
+%token <struct psi_token *> UINT128
+
+
%precedence IIF COLON
%precedence OR
%precedence AND
;
typedef_anon_decl[def]:
- typedef_decl
-| qualified_decl_type[type] {
+ typedef_decl %dprec 2
+| qualified_decl_type[type] %dprec 1 {
$def = psi_decl_arg_init($type, psi_decl_var_init(NULL, 0, 0));
$def->var->token = psi_token_copy($type->token);
}
%empty {
$type = NULL;
}
+| NAME {
+ $type = psi_token_copy($NAME);
+}
| CHAR {
$type = psi_token_copy($CHAR);
}
decl_anon_arg[arg]:
/* FIXME decl_functor_body_anon */
- decl_arg {
+ decl_arg %dprec 2 {
$arg = $decl_arg;
}
-| qualified_decl_type[type] indirection {
+| qualified_decl_type[type] indirection %dprec 1 {
$arg = psi_decl_arg_init(
$type,
psi_decl_var_init(NULL, $indirection, 0)