logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git
commit: 552014d4c5d8190ffc278c685402fd3d1f9bcc60
parent af0ae46f4e8789f0950414f9fa2152353fb42635
Author: Michael Forney <mforney@mforney.org>
Date:   Sat, 26 Oct 2019 01:06:23 -0700

libxkbcommon: Update to 0.9.1

Diffstat:

Mpkg/libxkbcommon/.gitignore2+-
Rpkg/libxkbcommon/patch/0002-Only-use-GCC-pragmas-with-gcc.patch -> pkg/libxkbcommon/patch/0001-Only-use-GCC-pragmas-with-gcc.patch0
Dpkg/libxkbcommon/patch/0001-Use-bitwise-test-for-power-of-2-instead-of-popcount.patch88-------------------------------------------------------------------------------
Apkg/libxkbcommon/patch/0002-Track-generated-xkbcomp-parser.patch3598+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpkg/libxkbcommon/sha2562+-
Mpkg/libxkbcommon/url2+-
Mpkg/libxkbcommon/ver2+-
7 files changed, 3602 insertions(+), 92 deletions(-)

diff --git a/pkg/libxkbcommon/.gitignore b/pkg/libxkbcommon/.gitignore @@ -1,2 +1,2 @@ -/libxkbcommon-0.8.4.tar.xz +/libxkbcommon-0.9.1.tar.xz /src diff --git a/pkg/libxkbcommon/patch/0002-Only-use-GCC-pragmas-with-gcc.patch b/pkg/libxkbcommon/patch/0001-Only-use-GCC-pragmas-with-gcc.patch diff --git a/pkg/libxkbcommon/patch/0001-Use-bitwise-test-for-power-of-2-instead-of-popcount.patch b/pkg/libxkbcommon/patch/0001-Use-bitwise-test-for-power-of-2-instead-of-popcount.patch @@ -1,88 +0,0 @@ -From a0c5a34683049641590bdda2ae11149e5265fd91 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Tue, 4 Jun 2019 14:01:02 -0700 -Subject: [PATCH] Use bitwise test for power-of-2 instead of popcount - -We don't need to determine the total number of bits set to determine if -at most one is set. - -Additionally, on x86_64 without any -march=* flag, __builtin_popcount -will get compiled to a function call to the compiler runtime (on gcc), -or a long sequence of bit operations (on clang). - -Signed-off-by: Michael Forney <mforney@mforney.org> ---- - configure.ac | 1 - - meson.build | 3 --- - src/state.c | 3 ++- - src/utils.h | 14 -------------- - 4 files changed, 2 insertions(+), 19 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 957da59..cd958b0 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -77,7 +77,6 @@ AS_IF([test "x$ac_cv_func_secure_getenv" = xno -a \ - ]) - - AX_GCC_BUILTIN(__builtin_expect) --AX_GCC_BUILTIN(__builtin_popcount) - - # Some tests use Linux-specific headers - AC_CHECK_HEADER([linux/input.h]) -diff --git a/meson.build b/meson.build -index 6f0b596..61ba681 100644 ---- a/meson.build -+++ b/meson.build -@@ -76,9 +76,6 @@ endif - if cc.links('int main(){if(__builtin_expect(1<0,0)){}}', name: '__builtin_expect') - configh_data.set('HAVE___BUILTIN_EXPECT', 1) - endif --if cc.links('int main(){__builtin_popcount(1);}', name: '__builtin_popcount') -- configh_data.set('HAVE___BUILTIN_POPCOUNT', 1) --endif - if cc.has_header_symbol('unistd.h', 'eaccess', prefix: '#define _GNU_SOURCE') - configh_data.set('HAVE_EACCESS', 1) - endif -diff --git a/src/state.c b/src/state.c -index 16a4caa..dc1c651 100644 ---- a/src/state.c -+++ b/src/state.c -@@ -1373,7 +1373,8 @@ key_get_consumed(struct xkb_state *state, const struct xkb_key *key, - if (XkbLevelsSameSyms(level, no_mods_level)) - continue; - -- if (entry == matching_entry || my_popcount(entry->mods.mask) == 1) -+ if (entry == matching_entry || -+ (entry->mods.mask & (entry->mods.mask - 1)) == 0) - consumed |= entry->mods.mask & ~entry->preserve.mask; - } - break; -diff --git a/src/utils.h b/src/utils.h -index cb98e8e..060f071 100644 ---- a/src/utils.h -+++ b/src/utils.h -@@ -186,20 +186,6 @@ msb_pos(uint32_t mask) - return pos; - } - --// Avoid conflict with other popcount()s. --static inline int --my_popcount(uint32_t x) --{ -- int count; --#if defined(HAVE___BUILTIN_POPCOUNT) -- count = __builtin_popcount(x); --#else -- for (count = 0; x; count++) -- x &= x - 1; --#endif -- return count; --} -- - bool - map_file(FILE *file, char **string_out, size_t *size_out); - --- -2.20.1 - diff --git a/pkg/libxkbcommon/patch/0002-Track-generated-xkbcomp-parser.patch b/pkg/libxkbcommon/patch/0002-Track-generated-xkbcomp-parser.patch @@ -0,0 +1,3598 @@ +From 5c37bf6dce675e30d17cc41181fc81a650cfff61 Mon Sep 17 00:00:00 2001 +From: Michael Forney <mforney@mforney.org> +Date: Sat, 26 Oct 2019 02:05:31 -0700 +Subject: [PATCH] Track generated xkbcomp parser + +--- + src/xkbcomp/.gitignore | 2 - + src/xkbcomp/parser.c | 3401 ++++++++++++++++++++++++++++++++++++++++ + src/xkbcomp/parser.h | 160 ++ + 3 files changed, 3561 insertions(+), 2 deletions(-) + delete mode 100644 src/xkbcomp/.gitignore + create mode 100644 src/xkbcomp/parser.c + create mode 100644 src/xkbcomp/parser.h + +diff --git a/src/xkbcomp/.gitignore b/src/xkbcomp/.gitignore +deleted file mode 100644 +index d7814e4..0000000 +--- a/src/xkbcomp/.gitignore ++++ /dev/null +@@ -1,2 +0,0 @@ +-parser.c +-parser.h +diff --git a/src/xkbcomp/parser.c b/src/xkbcomp/parser.c +new file mode 100644 +index 0000000..ce49e55 +--- /dev/null ++++ b/src/xkbcomp/parser.c +@@ -0,0 +1,3401 @@ ++/* A Bison parser, made by GNU Bison 3.4.1. */ ++ ++/* Bison implementation for Yacc-like parsers in C ++ ++ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, ++ Inc. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see <http://www.gnu.org/licenses/>. */ ++ ++/* As a special exception, you may create a larger work that contains ++ part or all of the Bison parser skeleton and distribute that work ++ under terms of your choice, so long as that work isn't itself a ++ parser generator using the skeleton or a modified version thereof ++ as a parser skeleton. Alternatively, if you modify or redistribute ++ the parser skeleton itself, you may (at your option) remove this ++ special exception, which will cause the skeleton and the resulting ++ Bison output files to be licensed under the GNU General Public ++ License without this special exception. ++ ++ This special exception was added by the Free Software Foundation in ++ version 2.2 of Bison. */ ++ ++/* C LALR(1) parser skeleton written by Richard Stallman, by ++ simplifying the original so-called "semantic" parser. */ ++ ++/* All symbols defined below should begin with yy or YY, to avoid ++ infringing on user name space. This should be done even for local ++ variables, as they might otherwise be expanded by user macros. ++ There are some unavoidable exceptions within include files to ++ define necessary library symbols; they are noted "INFRINGES ON ++ USER NAME SPACE" below. */ ++ ++/* Undocumented macros, especially those whose name start with YY_, ++ are private implementation details. Do not rely on them. */ ++ ++/* Identify Bison output. */ ++#define YYBISON 1 ++ ++/* Bison version. */ ++#define YYBISON_VERSION "3.4.1" ++ ++/* Skeleton name. */ ++#define YYSKELETON_NAME "yacc.c" ++ ++/* Pure parsers. */ ++#define YYPURE 1 ++ ++/* Push parsers. */ ++#define YYPUSH 0 ++ ++/* Pull parsers. */ ++#define YYPULL 1 ++ ++ ++/* Substitute the variable and function names. */ ++#define yyparse _xkbcommon_parse ++#define yylex _xkbcommon_lex ++#define yyerror _xkbcommon_error ++#define yydebug _xkbcommon_debug ++#define yynerrs _xkbcommon_nerrs ++ ++ ++/* First part of user prologue. */ ++#line 33 "../src/xkbcomp/parser.y" ++ ++#include "xkbcomp/xkbcomp-priv.h" ++#include "xkbcomp/ast-build.h" ++#include "xkbcomp/parser-priv.h" ++#include "scanner-utils.h" ++ ++struct parser_param { ++ struct xkb_context *ctx; ++ struct scanner *scanner; ++ XkbFile *rtrn; ++ bool more_maps; ++}; ++ ++#define parser_err(param, fmt, ...) \ ++ scanner_err((param)->scanner, fmt, ##__VA_ARGS__) ++ ++#define parser_warn(param, fmt, ...) \ ++ scanner_warn((param)->scanner, fmt, ##__VA_ARGS__) ++ ++static void ++_xkbcommon_error(struct parser_param *param, const char *msg) ++{ ++ parser_err(param, "%s", msg); ++} ++ ++static bool ++resolve_keysym(const char *name, xkb_keysym_t *sym_rtrn) ++{ ++ xkb_keysym_t sym; ++ ++ if (!name || istreq(name, "any") || istreq(name, "nosymbol")) { ++ *sym_rtrn = XKB_KEY_NoSymbol; ++ return true; ++ } ++ ++ if (istreq(name, "none") || istreq(name, "voidsymbol")) { ++ *sym_rtrn = XKB_KEY_VoidSymbol; ++ return true; ++ } ++ ++ sym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS); ++ if (sym != XKB_KEY_NoSymbol) { ++ *sym_rtrn = sym; ++ return true; ++ } ++ ++ return false; ++} ++ ++#define param_scanner param->scanner ++ ++#line 128 "xkbcommon@sha/parser.c" ++ ++# ifndef YY_NULLPTR ++# if defined __cplusplus ++# if 201103L <= __cplusplus ++# define YY_NULLPTR nullptr ++# else ++# define YY_NULLPTR 0 ++# endif ++# else ++# define YY_NULLPTR ((void*)0) ++# endif ++# endif ++ ++/* Enabling verbose error messages. */ ++#ifdef YYERROR_VERBOSE ++# undef YYERROR_VERBOSE ++# define YYERROR_VERBOSE 1 ++#else ++# define YYERROR_VERBOSE 0 ++#endif ++ ++/* Use api.header.include to #include this header ++ instead of duplicating it here. */ ++#ifndef YY__XKBCOMMON_XKBCOMMON_SHA_PARSER_H_INCLUDED ++# define YY__XKBCOMMON_XKBCOMMON_SHA_PARSER_H_INCLUDED ++/* Debug traces. */ ++#ifndef YYDEBUG ++# define YYDEBUG 0 ++#endif ++#if YYDEBUG ++extern int _xkbcommon_debug; ++#endif ++ ++/* Token type. */ ++#ifndef YYTOKENTYPE ++# define YYTOKENTYPE ++ enum yytokentype ++ { ++ END_OF_FILE = 0, ++ ERROR_TOK = 255, ++ XKB_KEYMAP = 1, ++ XKB_KEYCODES = 2, ++ XKB_TYPES = 3, ++ XKB_SYMBOLS = 4, ++ XKB_COMPATMAP = 5, ++ XKB_GEOMETRY = 6, ++ XKB_SEMANTICS = 7, ++ XKB_LAYOUT = 8, ++ INCLUDE = 10, ++ OVERRIDE = 11, ++ AUGMENT = 12, ++ REPLACE = 13, ++ ALTERNATE = 14, ++ VIRTUAL_MODS = 20, ++ TYPE = 21, ++ INTERPRET = 22, ++ ACTION_TOK = 23, ++ KEY = 24, ++ ALIAS = 25, ++ GROUP = 26, ++ MODIFIER_MAP = 27, ++ INDICATOR = 28, ++ SHAPE = 29, ++ KEYS = 30, ++ ROW = 31, ++ SECTION = 32, ++ OVERLAY = 33, ++ TEXT = 34, ++ OUTLINE = 35, ++ SOLID = 36, ++ LOGO = 37, ++ VIRTUAL = 38, ++ EQUALS = 40, ++ PLUS = 41, ++ MINUS = 42, ++ DIVIDE = 43, ++ TIMES = 44, ++ OBRACE = 45, ++ CBRACE = 46, ++ OPAREN = 47, ++ CPAREN = 48, ++ OBRACKET = 49, ++ CBRACKET = 50, ++ DOT = 51, ++ COMMA = 52, ++ SEMI = 53, ++ EXCLAM = 54, ++ INVERT = 55, ++ STRING = 60, ++ INTEGER = 61, ++ FLOAT = 62, ++ IDENT = 63, ++ KEYNAME = 64, ++ PARTIAL = 70, ++ DEFAULT = 71, ++ HIDDEN = 72, ++ ALPHANUMERIC_KEYS = 73, ++ MODIFIER_KEYS = 74, ++ KEYPAD_KEYS = 75, ++ FUNCTION_KEYS = 76, ++ ALTERNATE_GROUP = 77 ++ }; ++#endif ++ ++/* Value type. */ ++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED ++union YYSTYPE ++{ ++#line 162 "../src/xkbcomp/parser.y" ++ ++ int ival; ++ int64_t num; ++ enum xkb_file_type file_type; ++ char *str; ++ xkb_atom_t atom; ++ enum merge_mode merge; ++ enum xkb_map_flags mapFlags; ++ xkb_keysym_t keysym; ++ ParseCommon *any; ++ ExprDef *expr; ++ VarDef *var; ++ VModDef *vmod; ++ InterpDef *interp; ++ KeyTypeDef *keyType; ++ SymbolsDef *syms; ++ ModMapDef *modMask; ++ GroupCompatDef *groupCompat; ++ LedMapDef *ledMap; ++ LedNameDef *ledName; ++ KeycodeDef *keyCode; ++ KeyAliasDef *keyAlias; ++ void *geom; ++ XkbFile *file; ++ ++#line 263 "xkbcommon@sha/parser.c" ++ ++}; ++typedef union YYSTYPE YYSTYPE; ++# define YYSTYPE_IS_TRIVIAL 1 ++# define YYSTYPE_IS_DECLARED 1 ++#endif ++ ++ ++ ++int _xkbcommon_parse (struct parser_param *param); ++ ++#endif /* !YY__XKBCOMMON_XKBCOMMON_SHA_PARSER_H_INCLUDED */ ++ ++ ++ ++#ifdef short ++# undef short ++#endif ++ ++#ifdef YYTYPE_UINT8 ++typedef YYTYPE_UINT8 yytype_uint8; ++#else ++typedef unsigned char yytype_uint8; ++#endif ++ ++#ifdef YYTYPE_INT8 ++typedef YYTYPE_INT8 yytype_int8; ++#else ++typedef signed char yytype_int8; ++#endif ++ ++#ifdef YYTYPE_UINT16 ++typedef YYTYPE_UINT16 yytype_uint16; ++#else ++typedef unsigned short yytype_uint16; ++#endif ++ ++#ifdef YYTYPE_INT16 ++typedef YYTYPE_INT16 yytype_int16; ++#else ++typedef short yytype_int16; ++#endif ++ ++#ifndef YYSIZE_T ++# ifdef __SIZE_TYPE__ ++# define YYSIZE_T __SIZE_TYPE__ ++# elif defined size_t ++# define YYSIZE_T size_t ++# elif ! defined YYSIZE_T ++# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ ++# define YYSIZE_T size_t ++# else ++# define YYSIZE_T unsigned ++# endif ++#endif ++ ++#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) ++ ++#ifndef YY_ ++# if defined YYENABLE_NLS && YYENABLE_NLS ++# if ENABLE_NLS ++# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ ++# define YY_(Msgid) dgettext ("bison-runtime", Msgid) ++# endif ++# endif ++# ifndef YY_ ++# define YY_(Msgid) Msgid ++# endif ++#endif ++ ++#ifndef YY_ATTRIBUTE ++# if (defined __GNUC__ \ ++ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ ++ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C ++# define YY_ATTRIBUTE(Spec) __attribute__(Spec) ++# else ++# define YY_ATTRIBUTE(Spec) /* empty */ ++# endif ++#endif ++ ++#ifndef YY_ATTRIBUTE_PURE ++# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) ++#endif ++ ++#ifndef YY_ATTRIBUTE_UNUSED ++# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) ++#endif ++ ++/* Suppress unused-variable warnings by "using" E. */ ++#if ! defined lint || defined __GNUC__ ++# define YYUSE(E) ((void) (E)) ++#else ++# define YYUSE(E) /* empty */ ++#endif ++ ++#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ ++/* Suppress an incorrect diagnostic about yylval being uninitialized. */ ++# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ ++ _Pragma ("GCC diagnostic push") \ ++ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ ++ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") ++# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ ++ _Pragma ("GCC diagnostic pop") ++#else ++# define YY_INITIAL_VALUE(Value) Value ++#endif ++#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++# define YY_IGNORE_MAYBE_UNINITIALIZED_END ++#endif ++#ifndef YY_INITIAL_VALUE ++# define YY_INITIAL_VALUE(Value) /* Nothing. */ ++#endif ++ ++ ++#define YY_ASSERT(E) ((void) (0 && (E))) ++ ++#if ! defined yyoverflow || YYERROR_VERBOSE ++ ++/* The parser invokes alloca or malloc; define the necessary symbols. */ ++ ++# ifdef YYSTACK_USE_ALLOCA ++# if YYSTACK_USE_ALLOCA ++# ifdef __GNUC__ ++# define YYSTACK_ALLOC __builtin_alloca ++# elif defined __BUILTIN_VA_ARG_INCR ++# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ ++# elif defined _AIX ++# define YYSTACK_ALLOC __alloca ++# elif defined _MSC_VER ++# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ ++# define alloca _alloca ++# else ++# define YYSTACK_ALLOC alloca ++# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS ++# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ ++ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ ++# ifndef EXIT_SUCCESS ++# define EXIT_SUCCESS 0 ++# endif ++# endif ++# endif ++# endif ++# endif ++ ++# ifdef YYSTACK_ALLOC ++ /* Pacify GCC's 'empty if-body' warning. */ ++# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) ++# ifndef YYSTACK_ALLOC_MAXIMUM ++ /* The OS might guarantee only one guard page at the bottom of the stack, ++ and a page size can be as small as 4096 bytes. So we cannot safely ++ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number ++ to allow for a few compiler-allocated temporary stack slots. */ ++# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ ++# endif ++# else ++# define YYSTACK_ALLOC YYMALLOC ++# define YYSTACK_FREE YYFREE ++# ifndef YYSTACK_ALLOC_MAXIMUM ++# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM ++# endif ++# if (defined __cplusplus && ! defined EXIT_SUCCESS \ ++ && ! ((defined YYMALLOC || defined malloc) \ ++ && (defined YYFREE || defined free))) ++# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ ++# ifndef EXIT_SUCCESS ++# define EXIT_SUCCESS 0 ++# endif ++# endif ++# ifndef YYMALLOC ++# define YYMALLOC malloc ++# if ! defined malloc && ! defined EXIT_SUCCESS ++void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ ++# endif ++# endif ++# ifndef YYFREE ++# define YYFREE free ++# if ! defined free && ! defined EXIT_SUCCESS ++void free (void *); /* INFRINGES ON USER NAME SPACE */ ++# endif ++# endif ++# endif ++#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ ++ ++ ++#if (! defined yyoverflow \ ++ && (! defined __cplusplus \ ++ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) ++ ++/* A type that is properly aligned for any stack member. */ ++union yyalloc ++{ ++ yytype_int16 yyss_alloc; ++ YYSTYPE yyvs_alloc; ++}; ++ ++/* The size of the maximum gap between one aligned stack and the next. */ ++# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) ++ ++/* The size of an array large to enough to hold all stacks, each with ++ N elements. */ ++# define YYSTACK_BYTES(N) \ ++ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ ++ + YYSTACK_GAP_MAXIMUM) ++ ++# define YYCOPY_NEEDED 1 ++ ++/* Relocate STACK from its old location to the new one. The ++ local variables YYSIZE and YYSTACKSIZE give the old and new number of ++ elements in the stack, and YYPTR gives the new location of the ++ stack. Advance YYPTR to a properly aligned location for the next ++ stack. */ ++# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ ++ do \ ++ { \ ++ YYSIZE_T yynewbytes; \ ++ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ ++ Stack = &yyptr->Stack_alloc; \ ++ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ ++ yyptr += yynewbytes / sizeof (*yyptr); \ ++ } \ ++ while (0) ++ ++#endif ++ ++#if defined YYCOPY_NEEDED && YYCOPY_NEEDED ++/* Copy COUNT objects from SRC to DST. The source and destination do ++ not overlap. */ ++# ifndef YYCOPY ++# if defined __GNUC__ && 1 < __GNUC__ ++# define YYCOPY(Dst, Src, Count) \ ++ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) ++# else ++# define YYCOPY(Dst, Src, Count) \ ++ do \ ++ { \ ++ YYSIZE_T yyi; \ ++ for (yyi = 0; yyi < (Count); yyi++) \ ++ (Dst)[yyi] = (Src)[yyi]; \ ++ } \ ++ while (0) ++# endif ++# endif ++#endif /* !YYCOPY_NEEDED */ ++ ++/* YYFINAL -- State number of the termination state. */ ++#define YYFINAL 16 ++/* YYLAST -- Last index in YYTABLE. */ ++#define YYLAST 735 ++ ++/* YYNTOKENS -- Number of terminals. */ ++#define YYNTOKENS 65 ++/* YYNNTS -- Number of nonterminals. */ ++#define YYNNTS 72 ++/* YYNRULES -- Number of rules. */ ++#define YYNRULES 184 ++/* YYNSTATES -- Number of states. */ ++#define YYNSTATES 334 ++ ++#define YYUNDEFTOK 2 ++#define YYMAXUTOK 257 ++ ++/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM ++ as returned by yylex, with out-of-bounds checking. */ ++#define YYTRANSLATE(YYX) \ ++ ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) ++ ++/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM ++ as returned by yylex. */ ++static const yytype_uint8 yytranslate[] = ++{ ++ 0, 4, 5, 6, 7, 8, 9, 10, 11, 2, ++ 12, 13, 14, 15, 16, 2, 2, 2, 2, 2, ++ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, ++ 27, 28, 29, 30, 31, 32, 33, 34, 35, 2, ++ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, ++ 46, 47, 48, 49, 50, 51, 2, 2, 2, 2, ++ 52, 53, 54, 55, 56, 2, 2, 2, 2, 2, ++ 57, 58, 59, 60, 61, 62, 63, 64, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 3, 1, 2 ++}; ++ ++#if YYDEBUG ++ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ ++static const yytype_uint16 yyrline[] = ++{ ++ 0, 241, 241, 243, 245, 249, 255, 256, 257, 260, ++ 268, 272, 280, 281, 282, 283, 284, 287, 288, 291, ++ 292, 295, 296, 297, 298, 299, 300, 301, 302, 305, ++ 307, 310, 315, 320, 325, 330, 335, 340, 345, 350, ++ 355, 360, 365, 366, 367, 368, 375, 377, 379, 383, ++ 387, 391, 395, 398, 402, 404, 408, 414, 416, 420, ++ 423, 427, 433, 439, 442, 444, 447, 448, 449, 450, ++ 451, 454, 456, 460, 464, 468, 472, 474, 478, 480, ++ 484, 488, 489, 492, 494, 496, 498, 500, 504, 505, ++ 508, 509, 513, 514, 517, 519, 523, 527, 528, 531, ++ 534, 536, 540, 542, 544, 548, 550, 554, 558, 562, ++ 563, 564, 565, 568, 569, 572, 574, 576, 578, 580, ++ 582, 584, 586, 588, 590, 592, 596, 597, 600, 601, ++ 602, 603, 604, 614, 615, 618, 621, 625, 627, 629, ++ 631, 633, 635, 639, 641, 643, 645, 647, 649, 651, ++ 653, 657, 660, 664, 668, 670, 672, 674, 678, 680, ++ 682, 684, 688, 689, 692, 694, 696, 698, 702, 706, ++ 712, 713, 733, 734, 737, 738, 741, 744, 747, 750, ++ 751, 754, 757, 758, 761 ++}; ++#endif ++ ++#if YYDEBUG || YYERROR_VERBOSE || 0 ++/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. ++ First, the terminals, then, starting at YYNTOKENS, nonterminals. */ ++static const char *const yytname[] = ++{ ++ "END_OF_FILE", "error", "$undefined", "ERROR_TOK", "XKB_KEYMAP", ++ "XKB_KEYCODES", "XKB_TYPES", "XKB_SYMBOLS", "XKB_COMPATMAP", ++ "XKB_GEOMETRY", "XKB_SEMANTICS", "XKB_LAYOUT", "INCLUDE", "OVERRIDE", ++ "AUGMENT", "REPLACE", "ALTERNATE", "VIRTUAL_MODS", "TYPE", "INTERPRET", ++ "ACTION_TOK", "KEY", "ALIAS", "GROUP", "MODIFIER_MAP", "INDICATOR", ++ "SHAPE", "KEYS", "ROW", "SECTION", "OVERLAY", "TEXT", "OUTLINE", "SOLID", ++ "LOGO", "VIRTUAL", "EQUALS", "PLUS", "MINUS", "DIVIDE", "TIMES", ++ "OBRACE", "CBRACE", "OPAREN", "CPAREN", "OBRACKET", "CBRACKET", "DOT", ++ "COMMA", "SEMI", "EXCLAM", "INVERT", "STRING", "INTEGER", "FLOAT", ++ "IDENT", "KEYNAME", "PARTIAL", "DEFAULT", "HIDDEN", "ALPHANUMERIC_KEYS", ++ "MODIFIER_KEYS", "KEYPAD_KEYS", "FUNCTION_KEYS", "ALTERNATE_GROUP", ++ "$accept", "XkbFile", "XkbCompositeMap", "XkbCompositeType", ++ "XkbMapConfigList", "XkbMapConfig", "FileType", "OptFlags", "Flags", ++ "Flag", "DeclList", "Decl", "VarDecl", "KeyNameDecl", "KeyAliasDecl", ++ "VModDecl", "VModDefList", "VModDef", "InterpretDecl", "InterpretMatch", ++ "VarDeclList", "KeyTypeDecl", "SymbolsDecl", "SymbolsBody", ++ "SymbolsVarDecl", "ArrayInit", "GroupCompatDecl", "ModMapDecl", ++ "LedMapDecl", "LedNameDecl", "ShapeDecl", "SectionDecl", "SectionBody", ++ "SectionBodyItem", "RowBody", "RowBodyItem", "Keys", "Key", ++ "OverlayDecl", "OverlayKeyList", "OverlayKey", "OutlineList", ++ "OutlineInList", "CoordList", "Coord", "DoodadDecl", "DoodadType", ++ "FieldSpec", "Element", "OptMergeMode", "MergeMode", "OptExprList", ++ "ExprList", "Expr", "Term", "ActionList", "Action", "Lhs", "Terminal", ++ "OptKeySymList", "KeySymList", "KeySyms", "KeySym", "SignedNumber", ++ "Number", "Float", "Integer", "KeyCode", "Ident", "String", "OptMapName", ++ "MapName", YY_NULLPTR ++}; ++#endif ++ ++# ifdef YYPRINT ++/* YYTOKNUM[NUM] -- (External) token number corresponding to the ++ (internal) symbol number NUM (which must be that of a token). */ ++static const yytype_uint16 yytoknum[] = ++{ ++ 0, 256, 257, 255, 1, 2, 3, 4, 5, 6, ++ 7, 8, 10, 11, 12, 13, 14, 20, 21, 22, ++ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, ++ 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, ++ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, ++ 54, 55, 60, 61, 62, 63, 64, 70, 71, 72, ++ 73, 74, 75, 76, 77 ++}; ++# endif ++ ++#define YYPACT_NINF -182 ++ ++#define yypact_value_is_default(Yystate) \ ++ (!!((Yystate) == (-182))) ++ ++#define YYTABLE_NINF -180 ++ ++#define yytable_value_is_error(Yytable_value) \ ++ 0 ++ ++ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing ++ STATE-NUM. */ ++static const yytype_int16 yypact[] = ++{ ++ 176, -182, -182, -182, -182, -182, -182, -182, -182, -182, ++ 6, -182, -182, 271, 227, -182, -182, -182, -182, -182, ++ -182, -182, -182, -182, -182, -38, -38, -182, -182, -24, ++ -182, 33, 227, -182, 210, -182, 353, 44, 5, -182, ++ -182, -182, -182, -182, -182, 32, -182, 13, 41, -182, ++ -182, -48, 55, 11, -182, 79, 87, 58, -48, -2, ++ 55, -182, 55, 72, -182, -182, -182, 107, -48, -182, ++ 110, -182, -182, -182, -182, -182, -182, -182, -182, -182, ++ -182, -182, -182, -182, -182, -182, 55, -18, -182, 127, ++ 121, -182, 66, -182, 138, -182, 136, -182, -182, -182, ++ 144, 147, -182, 152, 180, 182, 178, 184, 187, 188, ++ 190, 58, 198, 201, 214, 367, 677, 367, -182, -48, ++ -182, 367, 663, 663, 367, 494, 200, 367, 367, 367, ++ 663, 68, 449, 223, -182, -182, 212, 663, -182, -182, ++ -182, -182, -182, -182, -182, -182, -182, 367, 367, 367, ++ 367, 367, -182, -182, 57, 157, -182, 224, -182, -182, ++ -182, -182, -182, 218, 91, -182, 333, -182, 509, 537, ++ 333, 552, -48, 1, -182, -182, 228, 40, 216, 143, ++ 70, 333, 150, 593, 247, -30, 97, -182, 105, -182, ++ 261, 55, 259, 55, -182, -182, 408, -182, -182, -182, ++ 367, -182, 608, -182, -182, -182, 287, -182, -182, 367, ++ 367, 367, 367, 367, -182, 367, 367, -182, 252, -182, ++ 253, 264, 24, 269, 272, 163, -182, 273, 270, -182, ++ -182, -182, 280, 494, 285, -182, -182, 283, 367, -182, ++ 284, 112, 8, -182, -182, 294, -182, 299, -36, 304, ++ 247, 326, 649, 279, 307, -182, 204, 316, -182, 322, ++ 320, 111, 111, -182, -182, 333, 211, -182, -182, 116, ++ 367, -182, 677, -182, 24, -182, -182, -182, 333, -182, ++ 333, -182, -182, -182, -30, -182, -182, -182, -182, 247, ++ 333, 334, -182, 466, -182, 318, -182, -182, -182, -182, ++ -182, -182, 339, -182, -182, -182, 343, 120, 14, 345, ++ -182, 361, 124, -182, -182, -182, -182, 367, -182, 131, ++ -182, -182, 344, 350, 318, 166, 352, 14, -182, -182, ++ -182, -182, -182, -182 ++}; ++ ++ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. ++ Performed when YYTABLE does not specify something else to do. Zero ++ means the default is an error. */ ++static const yytype_uint8 yydefact[] = ++{ ++ 18, 4, 21, 22, 23, 24, 25, 26, 27, 28, ++ 0, 2, 3, 0, 17, 20, 1, 6, 12, 13, ++ 15, 14, 16, 7, 8, 183, 183, 19, 184, 0, ++ 182, 0, 18, 30, 18, 10, 0, 127, 0, 9, ++ 128, 130, 129, 131, 132, 0, 29, 0, 126, 5, ++ 11, 0, 117, 116, 115, 118, 0, 119, 120, 121, ++ 122, 123, 124, 125, 110, 111, 112, 0, 0, 179, ++ 0, 180, 31, 34, 35, 32, 33, 36, 37, 39, ++ 38, 40, 41, 42, 43, 44, 0, 154, 114, 0, ++ 113, 45, 0, 53, 54, 181, 0, 170, 177, 169, ++ 0, 58, 171, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, ++ 51, 0, 0, 0, 0, 65, 0, 0, 0, 0, ++ 0, 0, 0, 0, 48, 178, 0, 0, 117, 116, ++ 118, 119, 120, 121, 122, 124, 125, 0, 0, 0, ++ 0, 0, 176, 161, 154, 0, 142, 147, 149, 160, ++ 159, 113, 158, 155, 0, 52, 55, 60, 0, 0, ++ 57, 163, 0, 0, 64, 70, 0, 113, 0, 0, ++ 0, 136, 0, 0, 0, 0, 0, 101, 0, 106, ++ 0, 121, 123, 0, 84, 86, 0, 82, 87, 85, ++ 0, 49, 0, 144, 147, 143, 0, 145, 146, 134, ++ 0, 0, 0, 0, 156, 0, 0, 46, 0, 59, ++ 0, 170, 0, 169, 0, 0, 152, 0, 162, 167, ++ 166, 69, 0, 0, 0, 50, 73, 0, 0, 76, ++ 0, 0, 0, 175, 174, 0, 173, 0, 0, 0, ++ 0, 0, 0, 0, 0, 81, 0, 0, 150, 0, ++ 133, 138, 139, 137, 140, 141, 0, 61, 56, 0, ++ 134, 72, 0, 71, 0, 62, 63, 67, 66, 74, ++ 135, 75, 102, 172, 0, 78, 100, 79, 105, 0, ++ 104, 0, 91, 0, 89, 0, 80, 77, 108, 148, ++ 157, 168, 0, 151, 165, 164, 0, 0, 0, 0, ++ 88, 0, 0, 98, 153, 107, 103, 0, 94, 0, ++ 93, 83, 0, 0, 0, 0, 0, 0, 99, 96, ++ 97, 95, 90, 92 ++}; ++ ++ /* YYPGOTO[NTERM-NUM]. */ ++static const yytype_int16 yypgoto[] = ++{ ++ -182, -182, -182, -182, -182, 181, -182, 402, -182, 389, ++ -182, -182, -35, -182, -182, -182, -182, 288, -182, -182, ++ -50, -182, -182, -182, 173, 174, -182, -182, 362, -182, ++ -182, -182, -182, 215, -182, 119, -182, 86, -182, -182, ++ 90, -182, 167, -181, 185, 369, -182, -27, -182, -182, ++ -182, 154, -126, 83, 76, -182, 158, -31, -182, -182, ++ 221, 170, -52, 161, 205, -182, -44, -182, -47, -34, ++ 420, -182 ++}; ++ ++ /* YYDEFGOTO[NTERM-NUM]. */ ++static const yytype_int16 yydefgoto[] = ++{ ++ -1, 10, 11, 25, 34, 12, 26, 36, 14, 15, ++ 37, 46, 167, 73, 74, 75, 92, 93, 76, 100, ++ 168, 77, 78, 173, 174, 175, 79, 80, 195, 82, ++ 83, 84, 196, 197, 293, 294, 319, 320, 198, 312, ++ 313, 186, 187, 188, 189, 199, 86, 154, 88, 47, ++ 48, 259, 260, 181, 156, 225, 226, 157, 158, 227, ++ 228, 229, 230, 245, 246, 159, 160, 136, 161, 162, ++ 29, 30 ++}; ++ ++ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If ++ positive, shift that token. If negative, reduce the rule whose ++ number is the opposite. If YYTABLE_NINF, syntax error. */ ++static const yytype_int16 yytable[] = ++{ ++ 90, 101, 180, 241, 94, 184, 16, 69, 242, 102, ++ 71, 106, 72, 105, 28, 107, 89, 32, 96, 69, ++ 87, 112, 71, 243, 244, 108, 109, 115, 110, 116, ++ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ++ 97, 61, 62, 232, 63, 64, 65, 66, 67, 233, ++ 95, 98, 114, 97, 49, 317, 40, 41, 42, 43, ++ 44, 243, 244, 68, 98, 222, 99, 133, 69, 70, ++ 318, 71, 94, 169, 33, 90, 90, 98, 177, 99, ++ 183, 50, -68, 90, 190, 90, 45, 202, -68, 163, ++ 90, 89, 89, 91, 176, 87, 87, 194, 87, 89, ++ 209, 89, 115, 87, 116, 87, 89, 95, 307, 184, ++ 87, 98, 237, 185, 119, 120, 204, 204, 238, 204, ++ 204, 90, 90, 69, -109, 231, 71, 102, 210, 211, ++ 212, 213, 111, 219, 219, 103, 90, 89, 89, 247, ++ 217, 87, 87, 104, 224, 248, 113, 249, 219, 90, ++ 212, 213, 89, 250, 282, 90, 87, 108, 301, 253, ++ 250, 194, 316, 117, 274, 89, 323, 219, 250, 87, ++ 118, 89, 324, 326, 121, 87, 1, 122, 102, 327, ++ 210, 211, 212, 213, 124, 123, 177, 210, 211, 212, ++ 213, 325, 236, 125, 210, 211, 212, 213, 155, 239, ++ 164, 190, 176, 214, 166, 90, 87, 170, 331, 271, ++ 179, 272, 182, 35, 238, 39, 126, 292, 127, 128, ++ 129, 89, 305, 203, 205, 87, 207, 208, 130, 131, ++ 102, 132, 206, 2, 3, 4, 5, 6, 7, 8, ++ 9, 210, 211, 212, 213, 224, 90, 134, 210, 211, ++ 212, 213, 38, 297, 135, 137, 178, 300, 292, 200, ++ 215, 201, 89, 216, 234, 235, 87, 2, 3, 4, ++ 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, ++ 22, 23, 24, 256, 2, 3, 4, 5, 6, 7, ++ 8, 9, 185, 261, 262, 263, 264, 251, 265, 266, ++ 252, 267, 268, 138, 139, 54, 140, -124, 141, 142, ++ 143, 144, -179, 61, 145, 270, 146, 278, 274, 273, ++ 295, 280, 147, 148, 210, 211, 212, 213, 149, 275, ++ 171, 258, 279, 281, 290, 150, 151, 95, 98, 152, ++ 69, 153, 284, 71, 138, 139, 54, 140, 285, 141, ++ 142, 143, 144, 287, 61, 145, 296, 146, 18, 19, ++ 20, 21, 22, 147, 148, 298, 299, 289, 238, 149, ++ 210, 211, 212, 213, 311, 308, 150, 151, 95, 98, ++ 152, 69, 153, 314, 71, 138, 139, 54, 140, 315, ++ 141, 142, 143, 144, 321, 61, 145, 322, 146, 329, ++ 328, 332, 13, 27, 147, 148, 276, 165, 277, 81, ++ 149, 255, 310, 333, 330, 286, 85, 150, 151, 95, ++ 98, 152, 69, 153, 302, 71, 138, 139, 54, 140, ++ 303, 141, 142, 191, 144, 288, 192, 145, 193, 63, ++ 64, 65, 66, 269, 304, 306, 31, 283, 0, 0, ++ 254, 0, 0, 0, 0, 0, 0, 0, 68, 0, ++ 0, 0, 0, 69, 0, 0, 71, 138, 139, 54, ++ 140, 0, 141, 142, 191, 144, 0, 192, 145, 193, ++ 63, 64, 65, 66, 138, 139, 54, 140, 0, 141, ++ 142, 143, 144, 291, 61, 145, 0, 146, 0, 68, ++ 0, 0, 0, 0, 69, 0, 0, 71, 309, 0, ++ 0, 0, 138, 139, 54, 140, 68, 141, 142, 143, ++ 144, 69, 61, 145, 71, 146, 0, 138, 139, 54, ++ 140, 0, 141, 142, 143, 144, 0, 61, 145, 171, ++ 146, 0, 0, 0, 172, 0, 0, 0, 0, 69, ++ 0, 218, 71, 0, 0, 138, 139, 54, 140, 68, ++ 141, 142, 143, 144, 69, 61, 145, 71, 146, 0, ++ 138, 139, 54, 140, 0, 141, 142, 143, 144, 220, ++ 61, 221, 0, 146, 0, 0, 0, 68, 0, 0, ++ 0, 0, 69, 222, 0, 71, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 98, 0, 223, 0, 0, ++ 71, 138, 139, 54, 140, 0, 141, 142, 143, 144, ++ 0, 61, 145, 0, 146, 0, 138, 139, 54, 140, ++ 0, 141, 142, 143, 144, 240, 61, 145, 0, 146, ++ 0, 0, 0, 68, 0, 0, 0, 0, 69, 0, ++ 257, 71, 0, 0, 0, 0, 0, 0, 68, 0, ++ 0, 0, 0, 69, 0, 0, 71, 138, 139, 54, ++ 140, 0, 141, 142, 143, 144, 291, 61, 145, 0, ++ 146, 138, 139, 54, 140, 0, 141, 142, 143, 144, ++ 0, 61, 145, 0, 146, 138, 139, 54, 140, 68, ++ 141, 142, 143, 144, 69, 61, 145, 71, 146, 0, ++ 0, 0, 0, 68, 0, 0, 0, 0, 69, 0, ++ 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 69, 0, 0, 71 ++}; ++ ++static const yytype_int16 yycheck[] = ++{ ++ 47, 53, 128, 184, 51, 41, 0, 55, 38, 53, ++ 58, 58, 47, 57, 52, 59, 47, 41, 52, 55, ++ 47, 68, 58, 53, 54, 59, 60, 45, 62, 47, ++ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, ++ 29, 28, 29, 42, 31, 32, 33, 34, 35, 48, ++ 52, 53, 86, 29, 49, 41, 12, 13, 14, 15, ++ 16, 53, 54, 50, 53, 41, 55, 111, 55, 56, ++ 56, 58, 119, 123, 41, 122, 123, 53, 125, 55, ++ 130, 49, 42, 130, 131, 132, 42, 137, 48, 116, ++ 137, 122, 123, 52, 125, 122, 123, 132, 125, 130, ++ 43, 132, 45, 130, 47, 132, 137, 52, 289, 41, ++ 137, 53, 42, 45, 48, 49, 147, 148, 48, 150, ++ 151, 168, 169, 55, 52, 172, 58, 171, 37, 38, ++ 39, 40, 25, 168, 169, 56, 183, 168, 169, 42, ++ 49, 168, 169, 56, 171, 48, 36, 42, 183, 196, ++ 39, 40, 183, 48, 42, 202, 183, 191, 42, 193, ++ 48, 196, 42, 36, 48, 196, 42, 202, 48, 196, ++ 49, 202, 48, 42, 36, 202, 0, 41, 222, 48, ++ 37, 38, 39, 40, 37, 41, 233, 37, 38, 39, ++ 40, 317, 49, 41, 37, 38, 39, 40, 115, 49, ++ 117, 248, 233, 46, 121, 252, 233, 124, 42, 46, ++ 127, 48, 129, 32, 48, 34, 36, 252, 36, 41, ++ 36, 252, 274, 147, 148, 252, 150, 151, 41, 41, ++ 274, 41, 149, 57, 58, 59, 60, 61, 62, 63, ++ 64, 37, 38, 39, 40, 272, 293, 49, 37, 38, ++ 39, 40, 42, 49, 53, 41, 56, 46, 293, 36, ++ 36, 49, 293, 45, 36, 49, 293, 57, 58, 59, ++ 60, 61, 62, 63, 64, 4, 5, 6, 7, 8, ++ 9, 10, 11, 200, 57, 58, 59, 60, 61, 62, ++ 63, 64, 45, 210, 211, 212, 213, 36, 215, 216, ++ 41, 49, 49, 18, 19, 20, 21, 43, 23, 24, ++ 25, 26, 43, 28, 29, 43, 31, 234, 48, 46, ++ 41, 238, 37, 38, 37, 38, 39, 40, 43, 49, ++ 45, 44, 49, 49, 251, 50, 51, 52, 53, 54, ++ 55, 56, 48, 58, 18, 19, 20, 21, 49, 23, ++ 24, 25, 26, 49, 28, 29, 49, 31, 5, 6, ++ 7, 8, 9, 37, 38, 49, 44, 41, 48, 43, ++ 37, 38, 39, 40, 56, 41, 50, 51, 52, 53, ++ 54, 55, 56, 44, 58, 18, 19, 20, 21, 46, ++ 23, 24, 25, 26, 49, 28, 29, 36, 31, 49, ++ 56, 49, 0, 14, 37, 38, 233, 119, 234, 47, ++ 43, 196, 293, 327, 324, 248, 47, 50, 51, 52, ++ 53, 54, 55, 56, 270, 58, 18, 19, 20, 21, ++ 272, 23, 24, 25, 26, 250, 28, 29, 30, 31, ++ 32, 33, 34, 222, 274, 284, 26, 242, -1, -1, ++ 42, -1, -1, -1, -1, -1, -1, -1, 50, -1, ++ -1, -1, -1, 55, -1, -1, 58, 18, 19, 20, ++ 21, -1, 23, 24, 25, 26, -1, 28, 29, 30, ++ 31, 32, 33, 34, 18, 19, 20, 21, -1, 23, ++ 24, 25, 26, 27, 28, 29, -1, 31, -1, 50, ++ -1, -1, -1, -1, 55, -1, -1, 58, 42, -1, ++ -1, -1, 18, 19, 20, 21, 50, 23, 24, 25, ++ 26, 55, 28, 29, 58, 31, -1, 18, 19, 20, ++ 21, -1, 23, 24, 25, 26, -1, 28, 29, 45, ++ 31, -1, -1, -1, 50, -1, -1, -1, -1, 55, ++ -1, 42, 58, -1, -1, 18, 19, 20, 21, 50, ++ 23, 24, 25, 26, 55, 28, 29, 58, 31, -1, ++ 18, 19, 20, 21, -1, 23, 24, 25, 26, 42, ++ 28, 29, -1, 31, -1, -1, -1, 50, -1, -1, ++ -1, -1, 55, 41, -1, 58, -1, -1, -1, -1, ++ -1, -1, -1, -1, -1, 53, -1, 55, -1, -1, ++ 58, 18, 19, 20, 21, -1, 23, 24, 25, 26, ++ -1, 28, 29, -1, 31, -1, 18, 19, 20, 21, ++ -1, 23, 24, 25, 26, 42, 28, 29, -1, 31, ++ -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, ++ 42, 58, -1, -1, -1, -1, -1, -1, 50, -1, ++ -1, -1, -1, 55, -1, -1, 58, 18, 19, 20, ++ 21, -1, 23, 24, 25, 26, 27, 28, 29, -1, ++ 31, 18, 19, 20, 21, -1, 23, 24, 25, 26, ++ -1, 28, 29, -1, 31, 18, 19, 20, 21, 50, ++ 23, 24, 25, 26, 55, 28, 29, 58, 31, -1, ++ -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, ++ -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, ++ -1, -1, 55, -1, -1, 58 ++}; ++ ++ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing ++ symbol of state STATE-NUM. */ ++static const yytype_uint8 yystos[] = ++{ ++ 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, ++ 66, 67, 70, 72, 73, 74, 0, 4, 5, 6, ++ 7, 8, 9, 10, 11, 68, 71, 74, 52, 135, ++ 136, 135, 41, 41, 69, 70, 72, 75, 42, 70, ++ 12, 13, 14, 15, 16, 42, 76, 114, 115, 49, ++ 49, 17, 18, 19, 20, 21, 22, 23, 24, 25, ++ 26, 28, 29, 31, 32, 33, 34, 35, 50, 55, ++ 56, 58, 77, 78, 79, 80, 83, 86, 87, 91, ++ 92, 93, 94, 95, 96, 110, 111, 112, 113, 122, ++ 133, 52, 81, 82, 133, 52, 134, 29, 53, 55, ++ 84, 127, 131, 56, 56, 131, 133, 131, 134, 134, ++ 134, 25, 133, 36, 134, 45, 47, 36, 49, 48, ++ 49, 36, 41, 41, 37, 41, 36, 36, 41, 36, ++ 41, 41, 41, 131, 49, 53, 132, 41, 18, 19, ++ 21, 23, 24, 25, 26, 29, 31, 37, 38, 43, ++ 50, 51, 54, 56, 112, 118, 119, 122, 123, 130, ++ 131, 133, 134, 112, 118, 82, 118, 77, 85, 85, ++ 118, 45, 50, 88, 89, 90, 122, 133, 56, 118, ++ 117, 118, 118, 85, 41, 45, 106, 107, 108, 109, ++ 133, 25, 28, 30, 77, 93, 97, 98, 103, 110, ++ 36, 49, 85, 119, 122, 119, 118, 119, 119, 43, ++ 37, 38, 39, 40, 46, 36, 45, 49, 42, 77, ++ 42, 29, 41, 55, 112, 120, 121, 124, 125, 126, ++ 127, 133, 42, 48, 36, 49, 49, 42, 48, 49, ++ 42, 108, 38, 53, 54, 128, 129, 42, 48, 42, ++ 48, 36, 41, 134, 42, 98, 118, 42, 44, 116, ++ 117, 118, 118, 118, 118, 118, 118, 49, 49, 125, ++ 43, 46, 48, 46, 48, 49, 89, 90, 118, 49, ++ 118, 49, 42, 129, 48, 49, 107, 49, 109, 41, ++ 118, 27, 77, 99, 100, 41, 49, 49, 49, 44, ++ 46, 42, 116, 121, 126, 127, 128, 108, 41, 42, ++ 100, 56, 104, 105, 44, 46, 42, 41, 56, 101, ++ 102, 49, 36, 42, 48, 117, 42, 48, 56, 49, ++ 105, 42, 49, 102 ++}; ++ ++ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ ++static const yytype_uint8 yyr1[] = ++{ ++ 0, 65, 66, 66, 66, 67, 68, 68, 68, 69, ++ 69, 70, 71, 71, 71, 71, 71, 72, 72, 73, ++ 73, 74, 74, 74, 74, 74, 74, 74, 74, 75, ++ 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, ++ 76, 76, 76, 76, 76, 76, 77, 77, 77, 78, ++ 79, 80, 81, 81, 82, 82, 83, 84, 84, 85, ++ 85, 86, 87, 88, 88, 88, 89, 89, 89, 89, ++ 89, 90, 90, 91, 92, 93, 94, 94, 95, 95, ++ 96, 97, 97, 98, 98, 98, 98, 98, 99, 99, ++ 100, 100, 101, 101, 102, 102, 103, 104, 104, 105, ++ 106, 106, 107, 107, 107, 108, 108, 109, 110, 111, ++ 111, 111, 111, 112, 112, 113, 113, 113, 113, 113, ++ 113, 113, 113, 113, 113, 113, 114, 114, 115, 115, ++ 115, 115, 115, 116, 116, 117, 117, 118, 118, 118, ++ 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, ++ 119, 120, 120, 121, 122, 122, 122, 122, 123, 123, ++ 123, 123, 124, 124, 125, 125, 125, 125, 126, 127, ++ 127, 127, 128, 128, 129, 129, 130, 131, 132, 133, ++ 133, 134, 135, 135, 136 ++}; ++ ++ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ ++static const yytype_uint8 yyr2[] = ++{ ++ 0, 2, 1, 1, 1, 7, 1, 1, 1, 2, ++ 1, 7, 1, 1, 1, 1, 1, 1, 0, 2, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, ++ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 4, 2, 3, 4, ++ 5, 3, 3, 1, 1, 3, 6, 3, 1, 2, ++ 1, 6, 6, 3, 1, 0, 3, 3, 1, 2, ++ 1, 3, 3, 5, 6, 6, 5, 6, 6, 6, ++ 6, 2, 1, 5, 1, 1, 1, 1, 2, 1, ++ 5, 1, 3, 1, 1, 3, 6, 3, 1, 3, ++ 3, 1, 3, 5, 3, 3, 1, 5, 6, 1, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, ++ 1, 1, 1, 1, 0, 3, 1, 3, 3, 3, ++ 3, 3, 1, 2, 2, 2, 2, 1, 4, 1, ++ 3, 3, 1, 4, 1, 3, 4, 6, 1, 1, ++ 1, 1, 1, 0, 3, 3, 1, 1, 3, 1, ++ 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 0, 1 ++}; ++ ++ ++#define yyerrok (yyerrstatus = 0) ++#define yyclearin (yychar = YYEMPTY) ++#define YYEMPTY (-2) ++#define YYEOF 0 ++ ++#define YYACCEPT goto yyacceptlab ++#define YYABORT goto yyabortlab ++#define YYERROR goto yyerrorlab ++ ++ ++#define YYRECOVERING() (!!yyerrstatus) ++ ++#define YYBACKUP(Token, Value) \ ++ do \ ++ if (yychar == YYEMPTY) \ ++ { \ ++ yychar = (Token); \ ++ yylval = (Value); \ ++ YYPOPSTACK (yylen); \ ++ yystate = *yyssp; \ ++ goto yybackup; \ ++ } \ ++ else \ ++ { \ ++ yyerror (param, YY_("syntax error: cannot back up")); \ ++ YYERROR; \ ++ } \ ++ while (0) ++ ++/* Error token number */ ++#define YYTERROR 1 ++#define YYERRCODE 256 ++ ++ ++ ++/* Enable debugging if requested. */ ++#if YYDEBUG ++ ++# ifndef YYFPRINTF ++# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ ++# define YYFPRINTF fprintf ++# endif ++ ++# define YYDPRINTF(Args) \ ++do { \ ++ if (yydebug) \ ++ YYFPRINTF Args; \ ++} while (0) ++ ++/* This macro is provided for backward compatibility. */ ++#ifndef YY_LOCATION_PRINT ++# define YY_LOCATION_PRINT(File, Loc) ((void) 0) ++#endif ++ ++ ++# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ ++do { \ ++ if (yydebug) \ ++ { \ ++ YYFPRINTF (stderr, "%s ", Title); \ ++ yy_symbol_print (stderr, \ ++ Type, Value, param); \ ++ YYFPRINTF (stderr, "\n"); \ ++ } \ ++} while (0) ++ ++ ++/*-----------------------------------. ++| Print this symbol's value on YYO. | ++`-----------------------------------*/ ++ ++static void ++yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, struct parser_param *param) ++{ ++ FILE *yyoutput = yyo; ++ YYUSE (yyoutput); ++ YYUSE (param); ++ if (!yyvaluep) ++ return; ++# ifdef YYPRINT ++ if (yytype < YYNTOKENS) ++ YYPRINT (yyo, yytoknum[yytype], *yyvaluep); ++# endif ++ YYUSE (yytype); ++} ++ ++ ++/*---------------------------. ++| Print this symbol on YYO. | ++`---------------------------*/ ++ ++static void ++yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, struct parser_param *param) ++{ ++ YYFPRINTF (yyo, "%s %s (", ++ yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); ++ ++ yy_symbol_value_print (yyo, yytype, yyvaluep, param); ++ YYFPRINTF (yyo, ")"); ++} ++ ++/*------------------------------------------------------------------. ++| yy_stack_print -- Print the state stack from its BOTTOM up to its | ++| TOP (included). | ++`------------------------------------------------------------------*/ ++ ++static void ++yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) ++{ ++ YYFPRINTF (stderr, "Stack now"); ++ for (; yybottom <= yytop; yybottom++) ++ { ++ int yybot = *yybottom; ++ YYFPRINTF (stderr, " %d", yybot); ++ } ++ YYFPRINTF (stderr, "\n"); ++} ++ ++# define YY_STACK_PRINT(Bottom, Top) \ ++do { \ ++ if (yydebug) \ ++ yy_stack_print ((Bottom), (Top)); \ ++} while (0) ++ ++ ++/*------------------------------------------------. ++| Report that the YYRULE is going to be reduced. | ++`------------------------------------------------*/ ++ ++static void ++yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, struct parser_param *param) ++{ ++ unsigned long yylno = yyrline[yyrule]; ++ int yynrhs = yyr2[yyrule]; ++ int yyi; ++ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", ++ yyrule - 1, yylno); ++ /* The symbols being reduced. */ ++ for (yyi = 0; yyi < yynrhs; yyi++) ++ { ++ YYFPRINTF (stderr, " $%d = ", yyi + 1); ++ yy_symbol_print (stderr, ++ yystos[yyssp[yyi + 1 - yynrhs]], ++ &yyvsp[(yyi + 1) - (yynrhs)] ++ , param); ++ YYFPRINTF (stderr, "\n"); ++ } ++} ++ ++# define YY_REDUCE_PRINT(Rule) \ ++do { \ ++ if (yydebug) \ ++ yy_reduce_print (yyssp, yyvsp, Rule, param); \ ++} while (0) ++ ++/* Nonzero means print parse trace. It is left uninitialized so that ++ multiple parsers can coexist. */ ++int yydebug; ++#else /* !YYDEBUG */ ++# define YYDPRINTF(Args) ++# define YY_SYMBOL_PRINT(Title, Type, Value, Location) ++# define YY_STACK_PRINT(Bottom, Top) ++# define YY_REDUCE_PRINT(Rule) ++#endif /* !YYDEBUG */ ++ ++ ++/* YYINITDEPTH -- initial size of the parser's stacks. */ ++#ifndef YYINITDEPTH ++# define YYINITDEPTH 200 ++#endif ++ ++/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only ++ if the built-in stack extension method is used). ++ ++ Do not make this value too large; the results are undefined if ++ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) ++ evaluated with infinite-precision integer arithmetic. */ ++ ++#ifndef YYMAXDEPTH ++# define YYMAXDEPTH 10000 ++#endif ++ ++ ++#if YYERROR_VERBOSE ++ ++# ifndef yystrlen ++# if defined __GLIBC__ && defined _STRING_H ++# define yystrlen strlen ++# else ++/* Return the length of YYSTR. */ ++static YYSIZE_T ++yystrlen (const char *yystr) ++{ ++ YYSIZE_T yylen; ++ for (yylen = 0; yystr[yylen]; yylen++) ++ continue; ++ return yylen; ++} ++# endif ++# endif ++ ++# ifndef yystpcpy ++# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE ++# define yystpcpy stpcpy ++# else ++/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in ++ YYDEST. */ ++static char * ++yystpcpy (char *yydest, const char *yysrc) ++{ ++ char *yyd = yydest; ++ const char *yys = yysrc; ++ ++ while ((*yyd++ = *yys++) != '\0') ++ continue; ++ ++ return yyd - 1; ++} ++# endif ++# endif ++ ++# ifndef yytnamerr ++/* Copy to YYRES the contents of YYSTR after stripping away unnecessary ++ quotes and backslashes, so that it's suitable for yyerror. The ++ heuristic is that double-quoting is unnecessary unless the string ++ contains an apostrophe, a comma, or backslash (other than ++ backslash-backslash). YYSTR is taken from yytname. If YYRES is ++ null, do not copy; instead, return the length of what the result ++ would have been. */ ++static YYSIZE_T ++yytnamerr (char *yyres, const char *yystr) ++{ ++ if (*yystr == '"') ++ { ++ YYSIZE_T yyn = 0; ++ char const *yyp = yystr; ++ ++ for (;;) ++ switch (*++yyp) ++ { ++ case '\'': ++ case ',': ++ goto do_not_strip_quotes; ++ ++ case '\\': ++ if (*++yyp != '\\') ++ goto do_not_strip_quotes; ++ else ++ goto append; ++ ++ append: ++ default: ++ if (yyres) ++ yyres[yyn] = *yyp; ++ yyn++; ++ break; ++ ++ case '"': ++ if (yyres) ++ yyres[yyn] = '\0'; ++ return yyn; ++ } ++ do_not_strip_quotes: ; ++ } ++ ++ if (! yyres) ++ return yystrlen (yystr); ++ ++ return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); ++} ++# endif ++ ++/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message ++ about the unexpected token YYTOKEN for the state stack whose top is ++ YYSSP. ++ ++ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is ++ not large enough to hold the message. In that case, also set ++ *YYMSG_ALLOC to the required number of bytes. Return 2 if the ++ required number of bytes is too large to store. */ ++static int ++yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, ++ yytype_int16 *yyssp, int yytoken) ++{ ++ YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); ++ YYSIZE_T yysize = yysize0; ++ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; ++ /* Internationalized format string. */ ++ const char *yyformat = YY_NULLPTR; ++ /* Arguments of yyformat. */ ++ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; ++ /* Number of reported tokens (one for the "unexpected", one per ++ "expected"). */ ++ int yycount = 0; ++ ++ /* There are many possibilities here to consider: ++ - If this state is a consistent state with a default action, then ++ the only way this function was invoked is if the default action ++ is an error action. In that case, don't check for expected ++ tokens because there are none. ++ - The only way there can be no lookahead present (in yychar) is if ++ this state is a consistent state with a default action. Thus, ++ detecting the absence of a lookahead is sufficient to determine ++ that there is no unexpected or expected token to report. In that ++ case, just report a simple "syntax error". ++ - Don't assume there isn't a lookahead just because this state is a ++ consistent state with a default action. There might have been a ++ previous inconsistent state, consistent state with a non-default ++ action, or user semantic action that manipulated yychar. ++ - Of course, the expected token list depends on states to have ++ correct lookahead information, and it depends on the parser not ++ to perform extra reductions after fetching a lookahead from the ++ scanner and before detecting a syntax error. Thus, state merging ++ (from LALR or IELR) and default reductions corrupt the expected ++ token list. However, the list is correct for canonical LR with ++ one exception: it will still contain any token that will not be ++ accepted due to an error action in a later state. ++ */ ++ if (yytoken != YYEMPTY) ++ { ++ int yyn = yypact[*yyssp]; ++ yyarg[yycount++] = yytname[yytoken]; ++ if (!yypact_value_is_default (yyn)) ++ { ++ /* Start YYX at -YYN if negative to avoid negative indexes in ++ YYCHECK. In other words, skip the first -YYN actions for ++ this state because they are default actions. */ ++ int yyxbegin = yyn < 0 ? -yyn : 0; ++ /* Stay within bounds of both yycheck and yytname. */ ++ int yychecklim = YYLAST - yyn + 1; ++ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; ++ int yyx; ++ ++ for (yyx = yyxbegin; yyx < yyxend; ++yyx) ++ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR ++ && !yytable_value_is_error (yytable[yyx + yyn])) ++ { ++ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) ++ { ++ yycount = 1; ++ yysize = yysize0; ++ break; ++ } ++ yyarg[yycount++] = yytname[yyx]; ++ { ++ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); ++ if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) ++ yysize = yysize1; ++ else ++ return 2; ++ } ++ } ++ } ++ } ++ ++ switch (yycount) ++ { ++# define YYCASE_(N, S) \ ++ case N: \ ++ yyformat = S; \ ++ break ++ default: /* Avoid compiler warnings. */ ++ YYCASE_(0, YY_("syntax error")); ++ YYCASE_(1, YY_("syntax error, unexpected %s")); ++ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); ++ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); ++ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); ++ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); ++# undef YYCASE_ ++ } ++ ++ { ++ YYSIZE_T yysize1 = yysize + yystrlen (yyformat); ++ if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) ++ yysize = yysize1; ++ else ++ return 2; ++ } ++ ++ if (*yymsg_alloc < yysize) ++ { ++ *yymsg_alloc = 2 * yysize; ++ if (! (yysize <= *yymsg_alloc ++ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) ++ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; ++ return 1; ++ } ++ ++ /* Avoid sprintf, as that infringes on the user's name space. ++ Don't have undefined behavior even if the translation ++ produced a string with the wrong number of "%s"s. */ ++ { ++ char *yyp = *yymsg; ++ int yyi = 0; ++ while ((*yyp = *yyformat) != '\0') ++ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) ++ { ++ yyp += yytnamerr (yyp, yyarg[yyi++]); ++ yyformat += 2; ++ } ++ else ++ { ++ yyp++; ++ yyformat++; ++ } ++ } ++ return 0; ++} ++#endif /* YYERROR_VERBOSE */ ++ ++/*-----------------------------------------------. ++| Release the memory associated to this symbol. | ++`-----------------------------------------------*/ ++ ++static void ++yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct parser_param *param) ++{ ++ YYUSE (yyvaluep); ++ YYUSE (param); ++ if (!yymsg) ++ yymsg = "Deleting"; ++ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); ++ ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ switch (yytype) ++ { ++ case 52: /* STRING */ ++#line 225 "../src/xkbcomp/parser.y" ++ { free(((*yyvaluep).str)); } ++#line 1432 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 55: /* IDENT */ ++#line 225 "../src/xkbcomp/parser.y" ++ { free(((*yyvaluep).str)); } ++#line 1438 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 66: /* XkbFile */ ++#line 224 "../src/xkbcomp/parser.y" ++ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } ++#line 1444 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 67: /* XkbCompositeMap */ ++#line 224 "../src/xkbcomp/parser.y" ++ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } ++#line 1450 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 69: /* XkbMapConfigList */ ++#line 224 "../src/xkbcomp/parser.y" ++ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } ++#line 1456 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 70: /* XkbMapConfig */ ++#line 224 "../src/xkbcomp/parser.y" ++ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } ++#line 1462 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 75: /* DeclList */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).any)); } ++#line 1468 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 76: /* Decl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).any)); } ++#line 1474 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 77: /* VarDecl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } ++#line 1480 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 78: /* KeyNameDecl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).keyCode)); } ++#line 1486 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 79: /* KeyAliasDecl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).keyAlias)); } ++#line 1492 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 80: /* VModDecl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } ++#line 1498 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 81: /* VModDefList */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } ++#line 1504 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 82: /* VModDef */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } ++#line 1510 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 83: /* InterpretDecl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } ++#line 1516 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 84: /* InterpretMatch */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } ++#line 1522 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 85: /* VarDeclList */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } ++#line 1528 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 86: /* KeyTypeDecl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).keyType)); } ++#line 1534 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 87: /* SymbolsDecl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).syms)); } ++#line 1540 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 88: /* SymbolsBody */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } ++#line 1546 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 89: /* SymbolsVarDecl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } ++#line 1552 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 90: /* ArrayInit */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1558 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 91: /* GroupCompatDecl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).groupCompat)); } ++#line 1564 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 92: /* ModMapDecl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).modMask)); } ++#line 1570 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 93: /* LedMapDecl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).ledMap)); } ++#line 1576 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 94: /* LedNameDecl */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).ledName)); } ++#line 1582 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 108: /* CoordList */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1588 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 109: /* Coord */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1594 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 116: /* OptExprList */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1600 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 117: /* ExprList */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1606 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 118: /* Expr */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1612 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 119: /* Term */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1618 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 120: /* ActionList */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1624 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 121: /* Action */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1630 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 122: /* Lhs */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1636 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 123: /* Terminal */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1642 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 124: /* OptKeySymList */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1648 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 125: /* KeySymList */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1654 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 126: /* KeySyms */ ++#line 219 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1660 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 135: /* OptMapName */ ++#line 225 "../src/xkbcomp/parser.y" ++ { free(((*yyvaluep).str)); } ++#line 1666 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 136: /* MapName */ ++#line 225 "../src/xkbcomp/parser.y" ++ { free(((*yyvaluep).str)); } ++#line 1672 "xkbcommon@sha/parser.c" ++ break; ++ ++ default: ++ break; ++ } ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++} ++ ++ ++ ++ ++/*----------. ++| yyparse. | ++`----------*/ ++ ++int ++yyparse (struct parser_param *param) ++{ ++/* The lookahead symbol. */ ++int yychar; ++ ++ ++/* The semantic value of the lookahead symbol. */ ++/* Default value used for initialization, for pacifying older GCCs ++ or non-GCC compilers. */ ++YY_INITIAL_VALUE (static YYSTYPE yyval_default;) ++YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++ ++ /* Number of syntax errors so far. */ ++ int yynerrs; ++ ++ int yystate; ++ /* Number of tokens to shift before error messages enabled. */ ++ int yyerrstatus; ++ ++ /* The stacks and their tools: ++ 'yyss': related to states. ++ 'yyvs': related to semantic values. ++ ++ Refer to the stacks through separate pointers, to allow yyoverflow ++ to reallocate them elsewhere. */ ++ ++ /* The state stack. */ ++ yytype_int16 yyssa[YYINITDEPTH]; ++ yytype_int16 *yyss; ++ yytype_int16 *yyssp; ++ ++ /* The semantic value stack. */ ++ YYSTYPE yyvsa[YYINITDEPTH]; ++ YYSTYPE *yyvs; ++ YYSTYPE *yyvsp; ++ ++ YYSIZE_T yystacksize; ++ ++ int yyn; ++ int yyresult; ++ /* Lookahead token as an internal (translated) token number. */ ++ int yytoken = 0; ++ /* The variables used to return semantic value and location from the ++ action routines. */ ++ YYSTYPE yyval; ++ ++#if YYERROR_VERBOSE ++ /* Buffer for error messages, and its allocated size. */ ++ char yymsgbuf[128]; ++ char *yymsg = yymsgbuf; ++ YYSIZE_T yymsg_alloc = sizeof yymsgbuf; ++#endif ++ ++#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) ++ ++ /* The number of symbols on the RHS of the reduced rule. ++ Keep to zero when no symbol should be popped. */ ++ int yylen = 0; ++ ++ yyssp = yyss = yyssa; ++ yyvsp = yyvs = yyvsa; ++ yystacksize = YYINITDEPTH; ++ ++ YYDPRINTF ((stderr, "Starting parse\n")); ++ ++ yystate = 0; ++ yyerrstatus = 0; ++ yynerrs = 0; ++ yychar = YYEMPTY; /* Cause a token to be read. */ ++ goto yysetstate; ++ ++ ++/*------------------------------------------------------------. ++| yynewstate -- push a new state, which is found in yystate. | ++`------------------------------------------------------------*/ ++yynewstate: ++ /* In all cases, when you get here, the value and location stacks ++ have just been pushed. So pushing a state here evens the stacks. */ ++ yyssp++; ++ ++ ++/*--------------------------------------------------------------------. ++| yynewstate -- set current state (the top of the stack) to yystate. | ++`--------------------------------------------------------------------*/ ++yysetstate: ++ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); ++ YY_ASSERT (0 <= yystate && yystate < YYNSTATES); ++ *yyssp = (yytype_int16) yystate; ++ ++ if (yyss + yystacksize - 1 <= yyssp) ++#if !defined yyoverflow && !defined YYSTACK_RELOCATE ++ goto yyexhaustedlab; ++#else ++ { ++ /* Get the current used size of the three stacks, in elements. */ ++ YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); ++ ++# if defined yyoverflow ++ { ++ /* Give user a chance to reallocate the stack. Use copies of ++ these so that the &'s don't force the real ones into ++ memory. */ ++ YYSTYPE *yyvs1 = yyvs; ++ yytype_int16 *yyss1 = yyss; ++ ++ /* Each stack pointer address is followed by the size of the ++ data in use in that stack, in bytes. This used to be a ++ conditional around just the two extra args, but that might ++ be undefined if yyoverflow is a macro. */ ++ yyoverflow (YY_("memory exhausted"), ++ &yyss1, yysize * sizeof (*yyssp), ++ &yyvs1, yysize * sizeof (*yyvsp), ++ &yystacksize); ++ yyss = yyss1; ++ yyvs = yyvs1; ++ } ++# else /* defined YYSTACK_RELOCATE */ ++ /* Extend the stack our own way. */ ++ if (YYMAXDEPTH <= yystacksize) ++ goto yyexhaustedlab; ++ yystacksize *= 2; ++ if (YYMAXDEPTH < yystacksize) ++ yystacksize = YYMAXDEPTH; ++ ++ { ++ yytype_int16 *yyss1 = yyss; ++ union yyalloc *yyptr = ++ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); ++ if (! yyptr) ++ goto yyexhaustedlab; ++ YYSTACK_RELOCATE (yyss_alloc, yyss); ++ YYSTACK_RELOCATE (yyvs_alloc, yyvs); ++# undef YYSTACK_RELOCATE ++ if (yyss1 != yyssa) ++ YYSTACK_FREE (yyss1); ++ } ++# endif ++ ++ yyssp = yyss + yysize - 1; ++ yyvsp = yyvs + yysize - 1; ++ ++ YYDPRINTF ((stderr, "Stack size increased to %lu\n", ++ (unsigned long) yystacksize)); ++ ++ if (yyss + yystacksize - 1 <= yyssp) ++ YYABORT; ++ } ++#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ ++ ++ if (yystate == YYFINAL) ++ YYACCEPT; ++ ++ goto yybackup; ++ ++ ++/*-----------. ++| yybackup. | ++`-----------*/ ++yybackup: ++ /* Do appropriate processing given the current state. Read a ++ lookahead token if we need one and don't already have one. */ ++ ++ /* First try to decide what to do without reference to lookahead token. */ ++ yyn = yypact[yystate]; ++ if (yypact_value_is_default (yyn)) ++ goto yydefault; ++ ++ /* Not known => get a lookahead token if don't already have one. */ ++ ++ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ ++ if (yychar == YYEMPTY) ++ { ++ YYDPRINTF ((stderr, "Reading a token: ")); ++ yychar = yylex (&yylval, param_scanner); ++ } ++ ++ if (yychar <= YYEOF) ++ { ++ yychar = yytoken = YYEOF; ++ YYDPRINTF ((stderr, "Now at end of input.\n")); ++ } ++ else ++ { ++ yytoken = YYTRANSLATE (yychar); ++ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); ++ } ++ ++ /* If the proper action on seeing token YYTOKEN is to reduce or to ++ detect an error, take that action. */ ++ yyn += yytoken; ++ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) ++ goto yydefault; ++ yyn = yytable[yyn]; ++ if (yyn <= 0) ++ { ++ if (yytable_value_is_error (yyn)) ++ goto yyerrlab; ++ yyn = -yyn; ++ goto yyreduce; ++ } ++ ++ /* Count tokens shifted since error; after three, turn off error ++ status. */ ++ if (yyerrstatus) ++ yyerrstatus--; ++ ++ /* Shift the lookahead token. */ ++ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); ++ ++ /* Discard the shifted token. */ ++ yychar = YYEMPTY; ++ ++ yystate = yyn; ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ *++yyvsp = yylval; ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++ goto yynewstate; ++ ++ ++/*-----------------------------------------------------------. ++| yydefault -- do the default action for the current state. | ++`-----------------------------------------------------------*/ ++yydefault: ++ yyn = yydefact[yystate]; ++ if (yyn == 0) ++ goto yyerrlab; ++ goto yyreduce; ++ ++ ++/*-----------------------------. ++| yyreduce -- do a reduction. | ++`-----------------------------*/ ++yyreduce: ++ /* yyn is the number of a rule to reduce with. */ ++ yylen = yyr2[yyn]; ++ ++ /* If YYLEN is nonzero, implement the default value of the action: ++ '$$ = $1'. ++ ++ Otherwise, the following line sets YYVAL to garbage. ++ This behavior is undocumented and Bison ++ users should not rely upon it. Assigning to YYVAL ++ unconditionally makes the parser a bit smaller, and it avoids a ++ GCC warning that YYVAL may be used uninitialized. */ ++ yyval = yyvsp[1-yylen]; ++ ++ ++ YY_REDUCE_PRINT (yyn); ++ switch (yyn) ++ { ++ case 2: ++#line 242 "../src/xkbcomp/parser.y" ++ { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = !!param->rtrn; } ++#line 1942 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 3: ++#line 244 "../src/xkbcomp/parser.y" ++ { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = !!param->rtrn; YYACCEPT; } ++#line 1948 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 4: ++#line 246 "../src/xkbcomp/parser.y" ++ { (yyval.file) = param->rtrn = NULL; param->more_maps = false; } ++#line 1954 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 5: ++#line 252 "../src/xkbcomp/parser.y" ++ { (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (ParseCommon *) (yyvsp[-2].file), (yyvsp[-6].mapFlags)); } ++#line 1960 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 6: ++#line 255 "../src/xkbcomp/parser.y" ++ { (yyval.file_type) = FILE_TYPE_KEYMAP; } ++#line 1966 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 7: ++#line 256 "../src/xkbcomp/parser.y" ++ { (yyval.file_type) = FILE_TYPE_KEYMAP; } ++#line 1972 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 8: ++#line 257 "../src/xkbcomp/parser.y" ++ { (yyval.file_type) = FILE_TYPE_KEYMAP; } ++#line 1978 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 9: ++#line 261 "../src/xkbcomp/parser.y" ++ { ++ if (!(yyvsp[0].file)) ++ (yyval.file) = (yyvsp[-1].file); ++ else ++ (yyval.file) = (XkbFile *) AppendStmt((ParseCommon *) (yyvsp[-1].file), ++ (ParseCommon *) (yyvsp[0].file)); ++ } ++#line 1990 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 10: ++#line 269 "../src/xkbcomp/parser.y" ++ { (yyval.file) = (yyvsp[0].file); } ++#line 1996 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 11: ++#line 275 "../src/xkbcomp/parser.y" ++ { ++ (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (yyvsp[-2].any), (yyvsp[-6].mapFlags)); ++ } ++#line 2004 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 12: ++#line 280 "../src/xkbcomp/parser.y" ++ { (yyval.file_type) = FILE_TYPE_KEYCODES; } ++#line 2010 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 13: ++#line 281 "../src/xkbcomp/parser.y" ++ { (yyval.file_type) = FILE_TYPE_TYPES; } ++#line 2016 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 14: ++#line 282 "../src/xkbcomp/parser.y" ++ { (yyval.file_type) = FILE_TYPE_COMPAT; } ++#line 2022 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 15: ++#line 283 "../src/xkbcomp/parser.y" ++ { (yyval.file_type) = FILE_TYPE_SYMBOLS; } ++#line 2028 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 16: ++#line 284 "../src/xkbcomp/parser.y" ++ { (yyval.file_type) = FILE_TYPE_GEOMETRY; } ++#line 2034 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 17: ++#line 287 "../src/xkbcomp/parser.y" ++ { (yyval.mapFlags) = (yyvsp[0].mapFlags); } ++#line 2040 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 18: ++#line 288 "../src/xkbcomp/parser.y" ++ { (yyval.mapFlags) = 0; } ++#line 2046 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 19: ++#line 291 "../src/xkbcomp/parser.y" ++ { (yyval.mapFlags) = ((yyvsp[-1].mapFlags) | (yyvsp[0].mapFlags)); } ++#line 2052 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 20: ++#line 292 "../src/xkbcomp/parser.y" ++ { (yyval.mapFlags) = (yyvsp[0].mapFlags); } ++#line 2058 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 21: ++#line 295 "../src/xkbcomp/parser.y" ++ { (yyval.mapFlags) = MAP_IS_PARTIAL; } ++#line 2064 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 22: ++#line 296 "../src/xkbcomp/parser.y" ++ { (yyval.mapFlags) = MAP_IS_DEFAULT; } ++#line 2070 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 23: ++#line 297 "../src/xkbcomp/parser.y" ++ { (yyval.mapFlags) = MAP_IS_HIDDEN; } ++#line 2076 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 24: ++#line 298 "../src/xkbcomp/parser.y" ++ { (yyval.mapFlags) = MAP_HAS_ALPHANUMERIC; } ++#line 2082 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 25: ++#line 299 "../src/xkbcomp/parser.y" ++ { (yyval.mapFlags) = MAP_HAS_MODIFIER; } ++#line 2088 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 26: ++#line 300 "../src/xkbcomp/parser.y" ++ { (yyval.mapFlags) = MAP_HAS_KEYPAD; } ++#line 2094 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 27: ++#line 301 "../src/xkbcomp/parser.y" ++ { (yyval.mapFlags) = MAP_HAS_FN; } ++#line 2100 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 28: ++#line 302 "../src/xkbcomp/parser.y" ++ { (yyval.mapFlags) = MAP_IS_ALTGR; } ++#line 2106 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 29: ++#line 306 "../src/xkbcomp/parser.y" ++ { (yyval.any) = AppendStmt((yyvsp[-1].any), (yyvsp[0].any)); } ++#line 2112 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 30: ++#line 307 "../src/xkbcomp/parser.y" ++ { (yyval.any) = NULL; } ++#line 2118 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 31: ++#line 311 "../src/xkbcomp/parser.y" ++ { ++ (yyvsp[0].var)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].var); ++ } ++#line 2127 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 32: ++#line 316 "../src/xkbcomp/parser.y" ++ { ++ (yyvsp[0].vmod)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].vmod); ++ } ++#line 2136 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 33: ++#line 321 "../src/xkbcomp/parser.y" ++ { ++ (yyvsp[0].interp)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].interp); ++ } ++#line 2145 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 34: ++#line 326 "../src/xkbcomp/parser.y" ++ { ++ (yyvsp[0].keyCode)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].keyCode); ++ } ++#line 2154 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 35: ++#line 331 "../src/xkbcomp/parser.y" ++ { ++ (yyvsp[0].keyAlias)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].keyAlias); ++ } ++#line 2163 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 36: ++#line 336 "../src/xkbcomp/parser.y" ++ { ++ (yyvsp[0].keyType)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].keyType); ++ } ++#line 2172 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 37: ++#line 341 "../src/xkbcomp/parser.y" ++ { ++ (yyvsp[0].syms)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].syms); ++ } ++#line 2181 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 38: ++#line 346 "../src/xkbcomp/parser.y" ++ { ++ (yyvsp[0].modMask)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].modMask); ++ } ++#line 2190 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 39: ++#line 351 "../src/xkbcomp/parser.y" ++ { ++ (yyvsp[0].groupCompat)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].groupCompat); ++ } ++#line 2199 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 40: ++#line 356 "../src/xkbcomp/parser.y" ++ { ++ (yyvsp[0].ledMap)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].ledMap); ++ } ++#line 2208 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 41: ++#line 361 "../src/xkbcomp/parser.y" ++ { ++ (yyvsp[0].ledName)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].ledName); ++ } ++#line 2217 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 42: ++#line 365 "../src/xkbcomp/parser.y" ++ { (yyval.any) = NULL; } ++#line 2223 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 43: ++#line 366 "../src/xkbcomp/parser.y" ++ { (yyval.any) = NULL; } ++#line 2229 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 44: ++#line 367 "../src/xkbcomp/parser.y" ++ { (yyval.any) = NULL; } ++#line 2235 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 45: ++#line 369 "../src/xkbcomp/parser.y" ++ { ++ (yyval.any) = (ParseCommon *) IncludeCreate(param->ctx, (yyvsp[0].str), (yyvsp[-1].merge)); ++ free((yyvsp[0].str)); ++ } ++#line 2244 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 46: ++#line 376 "../src/xkbcomp/parser.y" ++ { (yyval.var) = VarCreate((yyvsp[-3].expr), (yyvsp[-1].expr)); } ++#line 2250 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 47: ++#line 378 "../src/xkbcomp/parser.y" ++ { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), true); } ++#line 2256 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 48: ++#line 380 "../src/xkbcomp/parser.y" ++ { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), false); } ++#line 2262 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 49: ++#line 384 "../src/xkbcomp/parser.y" ++ { (yyval.keyCode) = KeycodeCreate((yyvsp[-3].atom), (yyvsp[-1].num)); } ++#line 2268 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 50: ++#line 388 "../src/xkbcomp/parser.y" ++ { (yyval.keyAlias) = KeyAliasCreate((yyvsp[-3].atom), (yyvsp[-1].atom)); } ++#line 2274 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 51: ++#line 392 "../src/xkbcomp/parser.y" ++ { (yyval.vmod) = (yyvsp[-1].vmod); } ++#line 2280 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 52: ++#line 396 "../src/xkbcomp/parser.y" ++ { (yyval.vmod) = (VModDef *) AppendStmt((ParseCommon *) (yyvsp[-2].vmod), ++ (ParseCommon *) (yyvsp[0].vmod)); } ++#line 2287 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 53: ++#line 399 "../src/xkbcomp/parser.y" ++ { (yyval.vmod) = (yyvsp[0].vmod); } ++#line 2293 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 54: ++#line 403 "../src/xkbcomp/parser.y" ++ { (yyval.vmod) = VModCreate((yyvsp[0].atom), NULL); } ++#line 2299 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 55: ++#line 405 "../src/xkbcomp/parser.y" ++ { (yyval.vmod) = VModCreate((yyvsp[-2].atom), (yyvsp[0].expr)); } ++#line 2305 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 56: ++#line 411 "../src/xkbcomp/parser.y" ++ { (yyvsp[-4].interp)->def = (yyvsp[-2].var); (yyval.interp) = (yyvsp[-4].interp); } ++#line 2311 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 57: ++#line 415 "../src/xkbcomp/parser.y" ++ { (yyval.interp) = InterpCreate((yyvsp[-2].keysym), (yyvsp[0].expr)); } ++#line 2317 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 58: ++#line 417 "../src/xkbcomp/parser.y" ++ { (yyval.interp) = InterpCreate((yyvsp[0].keysym), NULL); } ++#line 2323 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 59: ++#line 421 "../src/xkbcomp/parser.y" ++ { (yyval.var) = (VarDef *) AppendStmt((ParseCommon *) (yyvsp[-1].var), ++ (ParseCommon *) (yyvsp[0].var)); } ++#line 2330 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 60: ++#line 424 "../src/xkbcomp/parser.y" ++ { (yyval.var) = (yyvsp[0].var); } ++#line 2336 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 61: ++#line 430 "../src/xkbcomp/parser.y" ++ { (yyval.keyType) = KeyTypeCreate((yyvsp[-4].atom), (yyvsp[-2].var)); } ++#line 2342 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 62: ++#line 436 "../src/xkbcomp/parser.y" ++ { (yyval.syms) = SymbolsCreate((yyvsp[-4].atom), (yyvsp[-2].var)); } ++#line 2348 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 63: ++#line 440 "../src/xkbcomp/parser.y" ++ { (yyval.var) = (VarDef *) AppendStmt((ParseCommon *) (yyvsp[-2].var), ++ (ParseCommon *) (yyvsp[0].var)); } ++#line 2355 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 64: ++#line 443 "../src/xkbcomp/parser.y" ++ { (yyval.var) = (yyvsp[0].var); } ++#line 2361 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 65: ++#line 444 "../src/xkbcomp/parser.y" ++ { (yyval.var) = NULL; } ++#line 2367 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 66: ++#line 447 "../src/xkbcomp/parser.y" ++ { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2373 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 67: ++#line 448 "../src/xkbcomp/parser.y" ++ { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2379 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 68: ++#line 449 "../src/xkbcomp/parser.y" ++ { (yyval.var) = BoolVarCreate((yyvsp[0].atom), true); } ++#line 2385 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 69: ++#line 450 "../src/xkbcomp/parser.y" ++ { (yyval.var) = BoolVarCreate((yyvsp[0].atom), false); } ++#line 2391 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 70: ++#line 451 "../src/xkbcomp/parser.y" ++ { (yyval.var) = VarCreate(NULL, (yyvsp[0].expr)); } ++#line 2397 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 71: ++#line 455 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = (yyvsp[-1].expr); } ++#line 2403 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 72: ++#line 457 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_ACTION_LIST, EXPR_TYPE_ACTION, (yyvsp[-1].expr)); } ++#line 2409 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 73: ++#line 461 "../src/xkbcomp/parser.y" ++ { (yyval.groupCompat) = GroupCompatCreate((yyvsp[-3].ival), (yyvsp[-1].expr)); } ++#line 2415 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 74: ++#line 465 "../src/xkbcomp/parser.y" ++ { (yyval.modMask) = ModMapCreate((yyvsp[-4].atom), (yyvsp[-2].expr)); } ++#line 2421 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 75: ++#line 469 "../src/xkbcomp/parser.y" ++ { (yyval.ledMap) = LedMapCreate((yyvsp[-4].atom), (yyvsp[-2].var)); } ++#line 2427 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 76: ++#line 473 "../src/xkbcomp/parser.y" ++ { (yyval.ledName) = LedNameCreate((yyvsp[-3].ival), (yyvsp[-1].expr), false); } ++#line 2433 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 77: ++#line 475 "../src/xkbcomp/parser.y" ++ { (yyval.ledName) = LedNameCreate((yyvsp[-3].ival), (yyvsp[-1].expr), true); } ++#line 2439 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 78: ++#line 479 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2445 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 79: ++#line 481 "../src/xkbcomp/parser.y" ++ { (void) (yyvsp[-2].expr); (yyval.geom) = NULL; } ++#line 2451 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 80: ++#line 485 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2457 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 81: ++#line 488 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL;} ++#line 2463 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 82: ++#line 489 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2469 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 83: ++#line 493 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2475 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 84: ++#line 495 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } ++#line 2481 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 85: ++#line 497 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2487 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 86: ++#line 499 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[0].ledMap)); (yyval.geom) = NULL; } ++#line 2493 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 87: ++#line 501 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2499 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 88: ++#line 504 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL;} ++#line 2505 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 89: ++#line 505 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2511 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 90: ++#line 508 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2517 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 91: ++#line 510 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } ++#line 2523 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 92: ++#line 513 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2529 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 93: ++#line 514 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2535 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 94: ++#line 518 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2541 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 95: ++#line 520 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[-1].expr)); (yyval.geom) = NULL; } ++#line 2547 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 96: ++#line 524 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2553 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 97: ++#line 527 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2559 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 98: ++#line 528 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2565 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 99: ++#line 531 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2571 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 100: ++#line 535 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL;} ++#line 2577 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 101: ++#line 537 "../src/xkbcomp/parser.y" ++ { (yyval.geom) = NULL; } ++#line 2583 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 102: ++#line 541 "../src/xkbcomp/parser.y" ++ { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } ++#line 2589 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 103: ++#line 543 "../src/xkbcomp/parser.y" ++ { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } ++#line 2595 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 104: ++#line 545 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[0].expr)); (yyval.geom) = NULL; } ++#line 2601 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 105: ++#line 549 "../src/xkbcomp/parser.y" ++ { (void) (yyvsp[-2].expr); (void) (yyvsp[0].expr); (yyval.expr) = NULL; } ++#line 2607 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 106: ++#line 551 "../src/xkbcomp/parser.y" ++ { (void) (yyvsp[0].expr); (yyval.expr) = NULL; } ++#line 2613 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 107: ++#line 555 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = NULL; } ++#line 2619 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 108: ++#line 559 "../src/xkbcomp/parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[-2].var)); (yyval.geom) = NULL; } ++#line 2625 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 109: ++#line 562 "../src/xkbcomp/parser.y" ++ { (yyval.ival) = 0; } ++#line 2631 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 110: ++#line 563 "../src/xkbcomp/parser.y" ++ { (yyval.ival) = 0; } ++#line 2637 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 111: ++#line 564 "../src/xkbcomp/parser.y" ++ { (yyval.ival) = 0; } ++#line 2643 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 112: ++#line 565 "../src/xkbcomp/parser.y" ++ { (yyval.ival) = 0; } ++#line 2649 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 113: ++#line 568 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = (yyvsp[0].atom); } ++#line 2655 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 114: ++#line 569 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = (yyvsp[0].atom); } ++#line 2661 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 115: ++#line 573 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "action"); } ++#line 2667 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 116: ++#line 575 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "interpret"); } ++#line 2673 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 117: ++#line 577 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "type"); } ++#line 2679 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 118: ++#line 579 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "key"); } ++#line 2685 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 119: ++#line 581 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "group"); } ++#line 2691 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 120: ++#line 583 "../src/xkbcomp/parser.y" ++ {(yyval.atom) = xkb_atom_intern_literal(param->ctx, "modifier_map");} ++#line 2697 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 121: ++#line 585 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "indicator"); } ++#line 2703 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 122: ++#line 587 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "shape"); } ++#line 2709 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 123: ++#line 589 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "row"); } ++#line 2715 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 124: ++#line 591 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "section"); } ++#line 2721 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 125: ++#line 593 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "text"); } ++#line 2727 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 126: ++#line 596 "../src/xkbcomp/parser.y" ++ { (yyval.merge) = (yyvsp[0].merge); } ++#line 2733 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 127: ++#line 597 "../src/xkbcomp/parser.y" ++ { (yyval.merge) = MERGE_DEFAULT; } ++#line 2739 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 128: ++#line 600 "../src/xkbcomp/parser.y" ++ { (yyval.merge) = MERGE_DEFAULT; } ++#line 2745 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 129: ++#line 601 "../src/xkbcomp/parser.y" ++ { (yyval.merge) = MERGE_AUGMENT; } ++#line 2751 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 130: ++#line 602 "../src/xkbcomp/parser.y" ++ { (yyval.merge) = MERGE_OVERRIDE; } ++#line 2757 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 131: ++#line 603 "../src/xkbcomp/parser.y" ++ { (yyval.merge) = MERGE_REPLACE; } ++#line 2763 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 132: ++#line 605 "../src/xkbcomp/parser.y" ++ { ++ /* ++ * This used to be MERGE_ALT_FORM. This functionality was ++ * unused and has been removed. ++ */ ++ (yyval.merge) = MERGE_DEFAULT; ++ } ++#line 2775 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 133: ++#line 614 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2781 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 134: ++#line 615 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = NULL; } ++#line 2787 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 135: ++#line 619 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = (ExprDef *) AppendStmt((ParseCommon *) (yyvsp[-2].expr), ++ (ParseCommon *) (yyvsp[0].expr)); } ++#line 2794 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 136: ++#line 622 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2800 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 137: ++#line 626 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_DIVIDE, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2806 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 138: ++#line 628 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2812 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 139: ++#line 630 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_SUBTRACT, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2818 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 140: ++#line 632 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_MULTIPLY, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2824 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 141: ++#line 634 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_ASSIGN, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2830 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 142: ++#line 636 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2836 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 143: ++#line 640 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_NEGATE, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } ++#line 2842 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 144: ++#line 642 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_UNARY_PLUS, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } ++#line 2848 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 145: ++#line 644 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_NOT, EXPR_TYPE_BOOLEAN, (yyvsp[0].expr)); } ++#line 2854 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 146: ++#line 646 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_INVERT, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } ++#line 2860 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 147: ++#line 648 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2866 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 148: ++#line 650 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].expr)); } ++#line 2872 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 149: ++#line 652 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2878 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 150: ++#line 654 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = (yyvsp[-1].expr); } ++#line 2884 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 151: ++#line 658 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = (ExprDef *) AppendStmt((ParseCommon *) (yyvsp[-2].expr), ++ (ParseCommon *) (yyvsp[0].expr)); } ++#line 2891 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 152: ++#line 661 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2897 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 153: ++#line 665 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].expr)); } ++#line 2903 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 154: ++#line 669 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateIdent((yyvsp[0].atom)); } ++#line 2909 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 155: ++#line 671 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateFieldRef((yyvsp[-2].atom), (yyvsp[0].atom)); } ++#line 2915 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 156: ++#line 673 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateArrayRef(XKB_ATOM_NONE, (yyvsp[-3].atom), (yyvsp[-1].expr)); } ++#line 2921 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 157: ++#line 675 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateArrayRef((yyvsp[-5].atom), (yyvsp[-3].atom), (yyvsp[-1].expr)); } ++#line 2927 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 158: ++#line 679 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateString((yyvsp[0].atom)); } ++#line 2933 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 159: ++#line 681 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateInteger((yyvsp[0].ival)); } ++#line 2939 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 160: ++#line 683 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateFloat(/* Discard $1 */); } ++#line 2945 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 161: ++#line 685 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateKeyName((yyvsp[0].atom)); } ++#line 2951 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 162: ++#line 688 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2957 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 163: ++#line 689 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = NULL; } ++#line 2963 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 164: ++#line 693 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprAppendKeysymList((yyvsp[-2].expr), (yyvsp[0].keysym)); } ++#line 2969 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 165: ++#line 695 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprAppendMultiKeysymList((yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2975 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 166: ++#line 697 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateKeysymList((yyvsp[0].keysym)); } ++#line 2981 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 167: ++#line 699 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = ExprCreateMultiKeysymList((yyvsp[0].expr)); } ++#line 2987 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 168: ++#line 703 "../src/xkbcomp/parser.y" ++ { (yyval.expr) = (yyvsp[-1].expr); } ++#line 2993 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 169: ++#line 707 "../src/xkbcomp/parser.y" ++ { ++ if (!resolve_keysym((yyvsp[0].str), &(yyval.keysym))) ++ parser_warn(param, "unrecognized keysym \"%s\"", (yyvsp[0].str)); ++ free((yyvsp[0].str)); ++ } ++#line 3003 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 170: ++#line 712 "../src/xkbcomp/parser.y" ++ { (yyval.keysym) = XKB_KEY_section; } ++#line 3009 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 171: ++#line 714 "../src/xkbcomp/parser.y" ++ { ++ if ((yyvsp[0].ival) < 0) { ++ parser_warn(param, "unrecognized keysym \"%d\"", (yyvsp[0].ival)); ++ (yyval.keysym) = XKB_KEY_NoSymbol; ++ } ++ else if ((yyvsp[0].ival) < 10) { /* XKB_KEY_0 .. XKB_KEY_9 */ ++ (yyval.keysym) = XKB_KEY_0 + (xkb_keysym_t) (yyvsp[0].ival); ++ } ++ else { ++ char buf[17]; ++ snprintf(buf, sizeof(buf), "0x%x", (yyvsp[0].ival)); ++ if (!resolve_keysym(buf, &(yyval.keysym))) { ++ parser_warn(param, "unrecognized keysym \"%s\"", buf); ++ (yyval.keysym) = XKB_KEY_NoSymbol; ++ } ++ } ++ } ++#line 3031 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 172: ++#line 733 "../src/xkbcomp/parser.y" ++ { (yyval.ival) = -(yyvsp[0].ival); } ++#line 3037 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 173: ++#line 734 "../src/xkbcomp/parser.y" ++ { (yyval.ival) = (yyvsp[0].ival); } ++#line 3043 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 174: ++#line 737 "../src/xkbcomp/parser.y" ++ { (yyval.ival) = (yyvsp[0].num); } ++#line 3049 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 175: ++#line 738 "../src/xkbcomp/parser.y" ++ { (yyval.ival) = (yyvsp[0].num); } ++#line 3055 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 176: ++#line 741 "../src/xkbcomp/parser.y" ++ { (yyval.ival) = 0; } ++#line 3061 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 177: ++#line 744 "../src/xkbcomp/parser.y" ++ { (yyval.ival) = (yyvsp[0].num); } ++#line 3067 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 178: ++#line 747 "../src/xkbcomp/parser.y" ++ { (yyval.num) = (yyvsp[0].num); } ++#line 3073 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 179: ++#line 750 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_steal(param->ctx, (yyvsp[0].str)); } ++#line 3079 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 180: ++#line 751 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "default"); } ++#line 3085 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 181: ++#line 754 "../src/xkbcomp/parser.y" ++ { (yyval.atom) = xkb_atom_steal(param->ctx, (yyvsp[0].str)); } ++#line 3091 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 182: ++#line 757 "../src/xkbcomp/parser.y" ++ { (yyval.str) = (yyvsp[0].str); } ++#line 3097 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 183: ++#line 758 "../src/xkbcomp/parser.y" ++ { (yyval.str) = NULL; } ++#line 3103 "xkbcommon@sha/parser.c" ++ break; ++ ++ case 184: ++#line 761 "../src/xkbcomp/parser.y" ++ { (yyval.str) = (yyvsp[0].str); } ++#line 3109 "xkbcommon@sha/parser.c" ++ break; ++ ++ ++#line 3113 "xkbcommon@sha/parser.c" ++ ++ default: break; ++ } ++ /* User semantic actions sometimes alter yychar, and that requires ++ that yytoken be updated with the new translation. We take the ++ approach of translating immediately before every use of yytoken. ++ One alternative is translating here after every semantic action, ++ but that translation would be missed if the semantic action invokes ++ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or ++ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an ++ incorrect destructor might then be invoked immediately. In the ++ case of YYERROR or YYBACKUP, subsequent parser actions might lead ++ to an incorrect destructor call or verbose syntax error message ++ before the lookahead is translated. */ ++ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); ++ ++ YYPOPSTACK (yylen); ++ yylen = 0; ++ YY_STACK_PRINT (yyss, yyssp); ++ ++ *++yyvsp = yyval; ++ ++ /* Now 'shift' the result of the reduction. Determine what state ++ that goes to, based on the state we popped back to and the rule ++ number reduced by. */ ++ { ++ const int yylhs = yyr1[yyn] - YYNTOKENS; ++ const int yyi = yypgoto[yylhs] + *yyssp; ++ yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp ++ ? yytable[yyi] ++ : yydefgoto[yylhs]); ++ } ++ ++ goto yynewstate; ++ ++ ++/*--------------------------------------. ++| yyerrlab -- here on detecting error. | ++`--------------------------------------*/ ++yyerrlab: ++ /* Make sure we have latest lookahead translation. See comments at ++ user semantic actions for why this is necessary. */ ++ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); ++ ++ /* If not already recovering from an error, report this error. */ ++ if (!yyerrstatus) ++ { ++ ++yynerrs; ++#if ! YYERROR_VERBOSE ++ yyerror (param, YY_("syntax error")); ++#else ++# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ ++ yyssp, yytoken) ++ { ++ char const *yymsgp = YY_("syntax error"); ++ int yysyntax_error_status; ++ yysyntax_error_status = YYSYNTAX_ERROR; ++ if (yysyntax_error_status == 0) ++ yymsgp = yymsg; ++ else if (yysyntax_error_status == 1) ++ { ++ if (yymsg != yymsgbuf) ++ YYSTACK_FREE (yymsg); ++ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); ++ if (!yymsg) ++ { ++ yymsg = yymsgbuf; ++ yymsg_alloc = sizeof yymsgbuf; ++ yysyntax_error_status = 2; ++ } ++ else ++ { ++ yysyntax_error_status = YYSYNTAX_ERROR; ++ yymsgp = yymsg; ++ } ++ } ++ yyerror (param, yymsgp); ++ if (yysyntax_error_status == 2) ++ goto yyexhaustedlab; ++ } ++# undef YYSYNTAX_ERROR ++#endif ++ } ++ ++ ++ ++ if (yyerrstatus == 3) ++ { ++ /* If just tried and failed to reuse lookahead token after an ++ error, discard it. */ ++ ++ if (yychar <= YYEOF) ++ { ++ /* Return failure if at end of input. */ ++ if (yychar == YYEOF) ++ YYABORT; ++ } ++ else ++ { ++ yydestruct ("Error: discarding", ++ yytoken, &yylval, param); ++ yychar = YYEMPTY; ++ } ++ } ++ ++ /* Else will try to reuse lookahead token after shifting the error ++ token. */ ++ goto yyerrlab1; ++ ++ ++/*---------------------------------------------------. ++| yyerrorlab -- error raised explicitly by YYERROR. | ++`---------------------------------------------------*/ ++yyerrorlab: ++ /* Pacify compilers when the user code never invokes YYERROR and the ++ label yyerrorlab therefore never appears in user code. */ ++ if (0) ++ YYERROR; ++ ++ /* Do not reclaim the symbols of the rule whose action triggered ++ this YYERROR. */ ++ YYPOPSTACK (yylen); ++ yylen = 0; ++ YY_STACK_PRINT (yyss, yyssp); ++ yystate = *yyssp; ++ goto yyerrlab1; ++ ++ ++/*-------------------------------------------------------------. ++| yyerrlab1 -- common code for both syntax error and YYERROR. | ++`-------------------------------------------------------------*/ ++yyerrlab1: ++ yyerrstatus = 3; /* Each real token shifted decrements this. */ ++ ++ for (;;) ++ { ++ yyn = yypact[yystate]; ++ if (!yypact_value_is_default (yyn)) ++ { ++ yyn += YYTERROR; ++ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) ++ { ++ yyn = yytable[yyn]; ++ if (0 < yyn) ++ break; ++ } ++ } ++ ++ /* Pop the current state because it cannot handle the error token. */ ++ if (yyssp == yyss) ++ YYABORT; ++ ++ ++ yydestruct ("Error: popping", ++ yystos[yystate], yyvsp, param); ++ YYPOPSTACK (1); ++ yystate = *yyssp; ++ YY_STACK_PRINT (yyss, yyssp); ++ } ++ ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ *++yyvsp = yylval; ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++ ++ ++ /* Shift the error token. */ ++ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); ++ ++ yystate = yyn; ++ goto yynewstate; ++ ++ ++/*-------------------------------------. ++| yyacceptlab -- YYACCEPT comes here. | ++`-------------------------------------*/ ++yyacceptlab: ++ yyresult = 0; ++ goto yyreturn; ++ ++ ++/*-----------------------------------. ++| yyabortlab -- YYABORT comes here. | ++`-----------------------------------*/ ++yyabortlab: ++ yyresult = 1; ++ goto yyreturn; ++ ++ ++#if !defined yyoverflow || YYERROR_VERBOSE ++/*-------------------------------------------------. ++| yyexhaustedlab -- memory exhaustion comes here. | ++`-------------------------------------------------*/ ++yyexhaustedlab: ++ yyerror (param, YY_("memory exhausted")); ++ yyresult = 2; ++ /* Fall through. */ ++#endif ++ ++ ++/*-----------------------------------------------------. ++| yyreturn -- parsing is finished, return the result. | ++`-----------------------------------------------------*/ ++yyreturn: ++ if (yychar != YYEMPTY) ++ { ++ /* Make sure we have latest lookahead translation. See comments at ++ user semantic actions for why this is necessary. */ ++ yytoken = YYTRANSLATE (yychar); ++ yydestruct ("Cleanup: discarding lookahead", ++ yytoken, &yylval, param); ++ } ++ /* Do not reclaim the symbols of the rule whose action triggered ++ this YYABORT or YYACCEPT. */ ++ YYPOPSTACK (yylen); ++ YY_STACK_PRINT (yyss, yyssp); ++ while (yyssp != yyss) ++ { ++ yydestruct ("Cleanup: popping", ++ yystos[*yyssp], yyvsp, param); ++ YYPOPSTACK (1); ++ } ++#ifndef yyoverflow ++ if (yyss != yyssa) ++ YYSTACK_FREE (yyss); ++#endif ++#if YYERROR_VERBOSE ++ if (yymsg != yymsgbuf) ++ YYSTACK_FREE (yymsg); ++#endif ++ return yyresult; ++} ++#line 764 "../src/xkbcomp/parser.y" ++ ++ ++XkbFile * ++parse(struct xkb_context *ctx, struct scanner *scanner, const char *map) ++{ ++ int ret; ++ XkbFile *first = NULL; ++ struct parser_param param = { ++ .scanner = scanner, ++ .ctx = ctx, ++ .rtrn = NULL, ++ .more_maps = false, ++ }; ++ ++ /* ++ * If we got a specific map, we look for it exclusively and return ++ * immediately upon finding it. Otherwise, we need to get the ++ * default map. If we find a map marked as default, we return it ++ * immediately. If there are no maps marked as default, we return ++ * the first map in the file. ++ */ ++ ++ while ((ret = yyparse(&param)) == 0 && param.more_maps) { ++ if (map) { ++ if (streq_not_null(map, param.rtrn->name)) ++ return param.rtrn; ++ else ++ FreeXkbFile(param.rtrn); ++ } ++ else { ++ if (param.rtrn->flags & MAP_IS_DEFAULT) { ++ FreeXkbFile(first); ++ return param.rtrn; ++ } ++ else if (!first) { ++ first = param.rtrn; ++ } ++ else { ++ FreeXkbFile(param.rtrn); ++ } ++ } ++ param.rtrn = NULL; ++ } ++ ++ if (ret != 0) { ++ FreeXkbFile(first); ++ return NULL; ++ } ++ ++ if (first) ++ log_vrb(ctx, 5, ++ "No map in include statement, but \"%s\" contains several; " ++ "Using first defined map, \"%s\"\n", ++ scanner->file_name, first->name); ++ ++ return first; ++} +diff --git a/src/xkbcomp/parser.h b/src/xkbcomp/parser.h +new file mode 100644 +index 0000000..a5ba362 +--- /dev/null ++++ b/src/xkbcomp/parser.h +@@ -0,0 +1,160 @@ ++/* A Bison parser, made by GNU Bison 3.4.1. */ ++ ++/* Bison interface for Yacc-like parsers in C ++ ++ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, ++ Inc. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see <http://www.gnu.org/licenses/>. */ ++ ++/* As a special exception, you may create a larger work that contains ++ part or all of the Bison parser skeleton and distribute that work ++ under terms of your choice, so long as that work isn't itself a ++ parser generator using the skeleton or a modified version thereof ++ as a parser skeleton. Alternatively, if you modify or redistribute ++ the parser skeleton itself, you may (at your option) remove this ++ special exception, which will cause the skeleton and the resulting ++ Bison output files to be licensed under the GNU General Public ++ License without this special exception. ++ ++ This special exception was added by the Free Software Foundation in ++ version 2.2 of Bison. */ ++ ++/* Undocumented macros, especially those whose name start with YY_, ++ are private implementation details. Do not rely on them. */ ++ ++#ifndef YY__XKBCOMMON_XKBCOMMON_SHA_PARSER_H_INCLUDED ++# define YY__XKBCOMMON_XKBCOMMON_SHA_PARSER_H_INCLUDED ++/* Debug traces. */ ++#ifndef YYDEBUG ++# define YYDEBUG 0 ++#endif ++#if YYDEBUG ++extern int _xkbcommon_debug; ++#endif ++ ++/* Token type. */ ++#ifndef YYTOKENTYPE ++# define YYTOKENTYPE ++ enum yytokentype ++ { ++ END_OF_FILE = 0, ++ ERROR_TOK = 255, ++ XKB_KEYMAP = 1, ++ XKB_KEYCODES = 2, ++ XKB_TYPES = 3, ++ XKB_SYMBOLS = 4, ++ XKB_COMPATMAP = 5, ++ XKB_GEOMETRY = 6, ++ XKB_SEMANTICS = 7, ++ XKB_LAYOUT = 8, ++ INCLUDE = 10, ++ OVERRIDE = 11, ++ AUGMENT = 12, ++ REPLACE = 13, ++ ALTERNATE = 14, ++ VIRTUAL_MODS = 20, ++ TYPE = 21, ++ INTERPRET = 22, ++ ACTION_TOK = 23, ++ KEY = 24, ++ ALIAS = 25, ++ GROUP = 26, ++ MODIFIER_MAP = 27, ++ INDICATOR = 28, ++ SHAPE = 29, ++ KEYS = 30, ++ ROW = 31, ++ SECTION = 32, ++ OVERLAY = 33, ++ TEXT = 34, ++ OUTLINE = 35, ++ SOLID = 36, ++ LOGO = 37, ++ VIRTUAL = 38, ++ EQUALS = 40, ++ PLUS = 41, ++ MINUS = 42, ++ DIVIDE = 43, ++ TIMES = 44, ++ OBRACE = 45, ++ CBRACE = 46, ++ OPAREN = 47, ++ CPAREN = 48, ++ OBRACKET = 49, ++ CBRACKET = 50, ++ DOT = 51, ++ COMMA = 52, ++ SEMI = 53, ++ EXCLAM = 54, ++ INVERT = 55, ++ STRING = 60, ++ INTEGER = 61, ++ FLOAT = 62, ++ IDENT = 63, ++ KEYNAME = 64, ++ PARTIAL = 70, ++ DEFAULT = 71, ++ HIDDEN = 72, ++ ALPHANUMERIC_KEYS = 73, ++ MODIFIER_KEYS = 74, ++ KEYPAD_KEYS = 75, ++ FUNCTION_KEYS = 76, ++ ALTERNATE_GROUP = 77 ++ }; ++#endif ++ ++/* Value type. */ ++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED ++union YYSTYPE ++{ ++#line 162 "../src/xkbcomp/parser.y" ++ ++ int ival; ++ int64_t num; ++ enum xkb_file_type file_type; ++ char *str; ++ xkb_atom_t atom; ++ enum merge_mode merge; ++ enum xkb_map_flags mapFlags; ++ xkb_keysym_t keysym; ++ ParseCommon *any; ++ ExprDef *expr; ++ VarDef *var; ++ VModDef *vmod; ++ InterpDef *interp; ++ KeyTypeDef *keyType; ++ SymbolsDef *syms; ++ ModMapDef *modMask; ++ GroupCompatDef *groupCompat; ++ LedMapDef *ledMap; ++ LedNameDef *ledName; ++ KeycodeDef *keyCode; ++ KeyAliasDef *keyAlias; ++ void *geom; ++ XkbFile *file; ++ ++#line 149 "xkbcommon@sha/parser.h" ++ ++}; ++typedef union YYSTYPE YYSTYPE; ++# define YYSTYPE_IS_TRIVIAL 1 ++# define YYSTYPE_IS_DECLARED 1 ++#endif ++ ++ ++ ++int _xkbcommon_parse (struct parser_param *param); ++ ++#endif /* !YY__XKBCOMMON_XKBCOMMON_SHA_PARSER_H_INCLUDED */ +-- +2.23.0 + diff --git a/pkg/libxkbcommon/sha256 b/pkg/libxkbcommon/sha256 @@ -1 +1 @@ -60ddcff932b7fd352752d51a5c4f04f3d0403230a584df9a2e0d5ed87c486c8b libxkbcommon-0.8.4.tar.xz +d4c6aabf0a5c1fc616f8a6a65c8a818c03773b9a87da9fbc434da5acd1199be0 libxkbcommon-0.9.1.tar.xz diff --git a/pkg/libxkbcommon/url b/pkg/libxkbcommon/url @@ -1 +1 @@ -url = "https://xkbcommon.org/download/libxkbcommon-0.8.4.tar.xz" +url = "https://xkbcommon.org/download/libxkbcommon-0.9.1.tar.xz" diff --git a/pkg/libxkbcommon/ver b/pkg/libxkbcommon/ver @@ -1 +1 @@ -0.8.4 r2 +0.9.1 r0