parser: extern var support
[m6w6/ext-psi] / src / parser_proc.h
index e7f59614175c396ffd1b9805ce6a9a678bb1a360..27e6b18f49483a5b876f3d0889152f48dcc15943 100644 (file)
 extern int psi_parser_proc_debug;
 #endif
 /* "%code requires" blocks.  */
-#line 90 "src/parser_proc_grammar.y" /* glr.c:197  */
+#line 115 "src/parser_proc_grammar.y" /* glr.c:197  */
 
 #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;
 
 
-#line 52 "src/parser_proc.h" /* glr.c:197  */
+#line 57 "src/parser_proc.h" /* glr.c:197  */
 
 /* Token type.  */
 #ifndef YYTOKENTYPE
@@ -72,122 +77,127 @@ struct psi_parser;
     PSI_T_CALLABLE = 271,
     PSI_T_VOID = 272,
     PSI_T_ZVAL = 273,
-    PSI_T_INT8 = 274,
-    PSI_T_UINT8 = 275,
-    PSI_T_INT16 = 276,
-    PSI_T_UINT16 = 277,
-    PSI_T_INT32 = 278,
-    PSI_T_UINT32 = 279,
-    PSI_T_INT64 = 280,
-    PSI_T_UINT64 = 281,
-    PSI_T_NULL = 282,
-    PSI_T_TRUE = 283,
-    PSI_T_FALSE = 284,
-    PSI_T_NAME = 285,
-    PSI_T_NSNAME = 286,
-    PSI_T_DOLLAR_NAME = 287,
-    PSI_T_NUMBER = 288,
-    PSI_T_QUOTED_STRING = 289,
-    PSI_T_QUOTED_CHAR = 290,
-    PSI_T_SIZEOF = 291,
-    PSI_T_VOLATILE = 292,
-    PSI_T_EOL = 293,
-    PSI_T_EOS = 294,
-    PSI_T_LPAREN = 295,
-    PSI_T_RPAREN = 296,
-    PSI_T_COMMA = 297,
-    PSI_T_COLON = 298,
-    PSI_T_LBRACE = 299,
-    PSI_T_RBRACE = 300,
-    PSI_T_LBRACKET = 301,
-    PSI_T_RBRACKET = 302,
-    PSI_T_EQUALS = 303,
-    PSI_T_HASH = 304,
-    PSI_T_PIPE = 305,
-    PSI_T_CARET = 306,
-    PSI_T_AMPERSAND = 307,
-    PSI_T_LSHIFT = 308,
-    PSI_T_RSHIFT = 309,
-    PSI_T_PLUS = 310,
-    PSI_T_MINUS = 311,
-    PSI_T_ASTERISK = 312,
-    PSI_T_SLASH = 313,
-    PSI_T_MODULO = 314,
-    PSI_T_LCHEVR = 315,
-    PSI_T_RCHEVR = 316,
-    PSI_T_CMP_GE = 317,
-    PSI_T_CMP_LE = 318,
-    PSI_T_OR = 319,
-    PSI_T_AND = 320,
-    PSI_T_CMP_EQ = 321,
-    PSI_T_CMP_NE = 322,
-    PSI_T_TILDE = 323,
-    PSI_T_NOT = 324,
-    PSI_T_PERIOD = 325,
-    PSI_T_BACKSLASH = 326,
-    PSI_T_ELLIPSIS = 327,
-    PSI_T_IIF = 328,
-    PSI_T_PRAGMA = 329,
-    PSI_T_PRAGMA_ONCE = 330,
-    PSI_T_LINE = 331,
-    PSI_T_ERROR = 332,
-    PSI_T_WARNING = 333,
-    PSI_T_IF = 334,
-    PSI_T_IFDEF = 335,
-    PSI_T_IFNDEF = 336,
-    PSI_T_ELSE = 337,
-    PSI_T_ELIF = 338,
-    PSI_T_ENDIF = 339,
-    PSI_T_DEFINE = 340,
-    PSI_T_DEFINED = 341,
-    PSI_T_UNDEF = 342,
-    PSI_T_IMPORT = 343,
-    PSI_T_INCLUDE = 344,
-    PSI_T_INCLUDE_NEXT = 345,
-    PSI_T_TYPEDEF = 346,
-    PSI_T_STRUCT = 347,
-    PSI_T_UNION = 348,
-    PSI_T_ENUM = 349,
-    PSI_T_CONST = 350,
-    PSI_T_LIB = 351,
-    PSI_T_STATIC = 352,
-    PSI_T_CALLBACK = 353,
-    PSI_T_FUNCTION = 354,
-    PSI_T_LET = 355,
-    PSI_T_SET = 356,
-    PSI_T_TEMP = 357,
-    PSI_T_FREE = 358,
-    PSI_T_RETURN = 359,
-    PSI_T_PRE_ASSERT = 360,
-    PSI_T_POST_ASSERT = 361,
-    PSI_T_BOOLVAL = 362,
-    PSI_T_INTVAL = 363,
-    PSI_T_STRVAL = 364,
-    PSI_T_PATHVAL = 365,
-    PSI_T_STRLEN = 366,
-    PSI_T_FLOATVAL = 367,
-    PSI_T_ARRVAL = 368,
-    PSI_T_OBJVAL = 369,
-    PSI_T_COUNT = 370,
-    PSI_T_CALLOC = 371,
-    PSI_T_TO_BOOL = 372,
-    PSI_T_TO_INT = 373,
-    PSI_T_TO_STRING = 374,
-    PSI_T_TO_FLOAT = 375,
-    PSI_T_TO_ARRAY = 376,
-    PSI_T_TO_OBJECT = 377,
-    PSI_T_COMMENT = 378,
-    PSI_T_WHITESPACE = 379,
-    PSI_T_NO_WHITESPACE = 380,
-    PSI_T_CPP_HEADER = 381,
-    PSI_T_CPP_ATTRIBUTE = 382,
-    PSI_T_CPP_EXTENSION = 383,
-    PSI_T_CPP_PASTE = 384,
-    PSI_T_CPP_INLINE = 385,
-    PSI_T_CPP_RESTRICT = 386,
-    PSI_T_CPP_ASM = 387,
-    PSI_T_BINARY = 388,
-    PSI_T_UNARY = 389
+    PSI_T_NULL = 274,
+    PSI_T_TRUE = 275,
+    PSI_T_FALSE = 276,
+    PSI_T_NAME = 277,
+    PSI_T_NSNAME = 278,
+    PSI_T_DOLLAR_NAME = 279,
+    PSI_T_NUMBER = 280,
+    PSI_T_QUOTED_STRING = 281,
+    PSI_T_QUOTED_CHAR = 282,
+    PSI_T_SIZEOF = 283,
+    PSI_T_VOLATILE = 284,
+    PSI_T_EOL = 285,
+    PSI_T_EOS = 286,
+    PSI_T_LPAREN = 287,
+    PSI_T_RPAREN = 288,
+    PSI_T_COMMA = 289,
+    PSI_T_COLON = 290,
+    PSI_T_LBRACE = 291,
+    PSI_T_RBRACE = 292,
+    PSI_T_LBRACKET = 293,
+    PSI_T_RBRACKET = 294,
+    PSI_T_EQUALS = 295,
+    PSI_T_HASH = 296,
+    PSI_T_PIPE = 297,
+    PSI_T_CARET = 298,
+    PSI_T_AMPERSAND = 299,
+    PSI_T_LSHIFT = 300,
+    PSI_T_RSHIFT = 301,
+    PSI_T_PLUS = 302,
+    PSI_T_MINUS = 303,
+    PSI_T_ASTERISK = 304,
+    PSI_T_SLASH = 305,
+    PSI_T_MODULO = 306,
+    PSI_T_LCHEVR = 307,
+    PSI_T_RCHEVR = 308,
+    PSI_T_CMP_GE = 309,
+    PSI_T_CMP_LE = 310,
+    PSI_T_OR = 311,
+    PSI_T_AND = 312,
+    PSI_T_CMP_EQ = 313,
+    PSI_T_CMP_NE = 314,
+    PSI_T_TILDE = 315,
+    PSI_T_NOT = 316,
+    PSI_T_PERIOD = 317,
+    PSI_T_BACKSLASH = 318,
+    PSI_T_ELLIPSIS = 319,
+    PSI_T_IIF = 320,
+    PSI_T_PRAGMA = 321,
+    PSI_T_PRAGMA_ONCE = 322,
+    PSI_T_LINE = 323,
+    PSI_T_ERROR = 324,
+    PSI_T_WARNING = 325,
+    PSI_T_IF = 326,
+    PSI_T_IFDEF = 327,
+    PSI_T_IFNDEF = 328,
+    PSI_T_ELSE = 329,
+    PSI_T_ELIF = 330,
+    PSI_T_ENDIF = 331,
+    PSI_T_DEFINE = 332,
+    PSI_T_DEFINED = 333,
+    PSI_T_UNDEF = 334,
+    PSI_T_IMPORT = 335,
+    PSI_T_INCLUDE = 336,
+    PSI_T_INCLUDE_NEXT = 337,
+    PSI_T_TYPEDEF = 338,
+    PSI_T_STRUCT = 339,
+    PSI_T_UNION = 340,
+    PSI_T_ENUM = 341,
+    PSI_T_CONST = 342,
+    PSI_T_LIB = 343,
+    PSI_T_STATIC = 344,
+    PSI_T_CALLBACK = 345,
+    PSI_T_FUNCTION = 346,
+    PSI_T_LET = 347,
+    PSI_T_SET = 348,
+    PSI_T_TEMP = 349,
+    PSI_T_FREE = 350,
+    PSI_T_RETURN = 351,
+    PSI_T_AS = 352,
+    PSI_T_PRE_ASSERT = 353,
+    PSI_T_POST_ASSERT = 354,
+    PSI_T_BOOLVAL = 355,
+    PSI_T_INTVAL = 356,
+    PSI_T_STRVAL = 357,
+    PSI_T_PATHVAL = 358,
+    PSI_T_STRLEN = 359,
+    PSI_T_FLOATVAL = 360,
+    PSI_T_ARRVAL = 361,
+    PSI_T_OBJVAL = 362,
+    PSI_T_COUNT = 363,
+    PSI_T_CALLOC = 364,
+    PSI_T_TO_BOOL = 365,
+    PSI_T_TO_INT = 366,
+    PSI_T_TO_STRING = 367,
+    PSI_T_TO_FLOAT = 368,
+    PSI_T_TO_ARRAY = 369,
+    PSI_T_TO_OBJECT = 370,
+    PSI_T_COMMENT = 371,
+    PSI_T_WHITESPACE = 372,
+    PSI_T_NO_WHITESPACE = 373,
+    PSI_T_CPP_HEADER = 374,
+    PSI_T_CPP_ATTRIBUTE = 375,
+    PSI_T_CPP_EXTENSION = 376,
+    PSI_T_CPP_PASTE = 377,
+    PSI_T_CPP_INLINE = 378,
+    PSI_T_CPP_RESTRICT = 379,
+    PSI_T_CPP_ASM = 380,
+    PSI_T_BSLASH = 381,
+    PSI_T_LONG_DOUBLE = 382,
+    PSI_T_INT8 = 383,
+    PSI_T_UINT8 = 384,
+    PSI_T_INT16 = 385,
+    PSI_T_UINT16 = 386,
+    PSI_T_INT32 = 387,
+    PSI_T_UINT32 = 388,
+    PSI_T_INT64 = 389,
+    PSI_T_UINT64 = 390,
+    PSI_T_INT128 = 391,
+    PSI_T_UINT128 = 392,
+    PSI_T_BINARY = 393,
+    PSI_T_UNARY = 394
   };
 #endif
 
@@ -321,10 +331,16 @@ union YYSTYPE
   struct psi_plist * PSI_T_cpp_macro_call_args;
   /* cpp_macro_call_arg_list  */
   struct psi_plist * PSI_T_cpp_macro_call_arg_list;
+  /* decl_extvar_stmt  */
+  struct psi_plist * PSI_T_decl_extvar_stmt;
+  /* decl_extvar_list  */
+  struct psi_plist * PSI_T_decl_extvar_list;
   /* decl_vars  */
   struct psi_plist * PSI_T_decl_vars;
   /* decl_args  */
   struct psi_plist * PSI_T_decl_args;
+  /* decl_arg_list  */
+  struct psi_plist * PSI_T_decl_arg_list;
   /* decl_struct_args  */
   struct psi_plist * PSI_T_decl_struct_args;
   /* struct_args_block  */
@@ -349,12 +365,16 @@ union YYSTYPE
   struct psi_plist * PSI_T_callback_arg_list;
   /* callback_args  */
   struct psi_plist * PSI_T_callback_args;
+  /* call_decl_vars  */
+  struct psi_plist * PSI_T_call_decl_vars;
   /* set_func_exps  */
   struct psi_plist * PSI_T_set_func_exps;
   /* set_exps  */
   struct psi_plist * PSI_T_set_exps;
   /* free_exps  */
   struct psi_plist * PSI_T_free_exps;
+  /* return_exp  */
+  struct psi_return_exp * PSI_T_return_exp;
   /* return_stmt  */
   struct psi_return_stmt * PSI_T_return_stmt;
   /* set_exp  */
@@ -397,22 +417,6 @@ union YYSTYPE
   struct psi_token * PSI_T_VOID;
   /* ZVAL  */
   struct psi_token * PSI_T_ZVAL;
-  /* INT8  */
-  struct psi_token * PSI_T_INT8;
-  /* UINT8  */
-  struct psi_token * PSI_T_UINT8;
-  /* INT16  */
-  struct psi_token * PSI_T_INT16;
-  /* UINT16  */
-  struct psi_token * PSI_T_UINT16;
-  /* INT32  */
-  struct psi_token * PSI_T_INT32;
-  /* UINT32  */
-  struct psi_token * PSI_T_UINT32;
-  /* INT64  */
-  struct psi_token * PSI_T_INT64;
-  /* UINT64  */
-  struct psi_token * PSI_T_UINT64;
   /* NULL  */
   struct psi_token * PSI_T_NULL;
   /* TRUE  */
@@ -569,6 +573,8 @@ union YYSTYPE
   struct psi_token * PSI_T_FREE;
   /* RETURN  */
   struct psi_token * PSI_T_RETURN;
+  /* AS  */
+  struct psi_token * PSI_T_AS;
   /* PRE_ASSERT  */
   struct psi_token * PSI_T_PRE_ASSERT;
   /* POST_ASSERT  */
@@ -625,6 +631,30 @@ union YYSTYPE
   struct psi_token * PSI_T_CPP_RESTRICT;
   /* CPP_ASM  */
   struct psi_token * PSI_T_CPP_ASM;
+  /* BSLASH  */
+  struct psi_token * PSI_T_BSLASH;
+  /* LONG_DOUBLE  */
+  struct psi_token * PSI_T_LONG_DOUBLE;
+  /* INT8  */
+  struct psi_token * PSI_T_INT8;
+  /* UINT8  */
+  struct psi_token * PSI_T_UINT8;
+  /* INT16  */
+  struct psi_token * PSI_T_INT16;
+  /* UINT16  */
+  struct psi_token * PSI_T_UINT16;
+  /* INT32  */
+  struct psi_token * PSI_T_INT32;
+  /* UINT32  */
+  struct psi_token * PSI_T_UINT32;
+  /* INT64  */
+  struct psi_token * PSI_T_INT64;
+  /* UINT64  */
+  struct psi_token * PSI_T_UINT64;
+  /* INT128  */
+  struct psi_token * PSI_T_INT128;
+  /* UINT128  */
+  struct psi_token * PSI_T_UINT128;
   /* binary_op_token  */
   struct psi_token * PSI_T_binary_op_token;
   /* unary_op_token  */
@@ -657,8 +687,6 @@ union YYSTYPE
   struct psi_token * PSI_T_decl_type_simple;
   /* decl_real_type  */
   struct psi_token * PSI_T_decl_real_type;
-  /* decl_stdint_type  */
-  struct psi_token * PSI_T_decl_stdint_type;
   /* int_signed  */
   struct psi_token * PSI_T_int_signed;
   /* int_width  */
@@ -693,7 +721,7 @@ union YYSTYPE
   struct psi_token * PSI_T_assert_stmt_token;
   /* impl_stmt  */
   struct psi_token ** PSI_T_impl_stmt;
-#line 697 "src/parser_proc.h" /* glr.c:197  */
+#line 725 "src/parser_proc.h" /* glr.c:197  */
 };
 
 typedef union YYSTYPE YYSTYPE;