version 1.1.1.1, 2020/06/03 09:46:44
|
version 1.1.1.2, 2021/03/17 00:20:08
|
Line 58
|
Line 58
|
/* Pull parsers. */ |
/* Pull parsers. */ |
#define YYPULL 1 |
#define YYPULL 1 |
|
|
| /* Substitute the type names. */ |
| #define YYSTYPE SETTINGS_PARSER_STYPE |
/* Substitute the variable and function names. */ |
/* Substitute the variable and function names. */ |
#define yyparse settings_parser_parse |
#define yyparse settings_parser_parse |
#define yylex settings_parser_lex |
#define yylex settings_parser_lex |
Line 126 static void add_references(parser_helper_t *ctx, array
|
Line 127 static void add_references(parser_helper_t *ctx, array
|
* Make sure to call lexer with the proper context |
* Make sure to call lexer with the proper context |
*/ |
*/ |
#undef yylex |
#undef yylex |
static int yylex(YYSTYPE *lvalp, parser_helper_t *ctx) | static int yylex(SETTINGS_PARSER_STYPE *yylval, parser_helper_t *ctx) |
{ |
{ |
return settings_parser_lex(lvalp, ctx->scanner); | return settings_parser_lex(yylval, ctx->scanner); |
} |
} |
|
|
|
|
#line 136 "settings/settings_parser.c" /* yacc.c:339 */ | #line 137 "settings/settings_parser.c" /* yacc.c:339 */ |
|
|
# ifndef YY_NULLPTR |
# ifndef YY_NULLPTR |
# if defined __cplusplus && 201103L <= __cplusplus |
# if defined __cplusplus && 201103L <= __cplusplus |
Line 155 static int yylex(YYSTYPE *lvalp, parser_helper_t *ctx)
|
Line 156 static int yylex(YYSTYPE *lvalp, parser_helper_t *ctx)
|
#ifndef YY_SETTINGS_PARSER_SETTINGS_SETTINGS_PARSER_H_INCLUDED |
#ifndef YY_SETTINGS_PARSER_SETTINGS_SETTINGS_PARSER_H_INCLUDED |
# define YY_SETTINGS_PARSER_SETTINGS_SETTINGS_PARSER_H_INCLUDED |
# define YY_SETTINGS_PARSER_SETTINGS_SETTINGS_PARSER_H_INCLUDED |
/* Debug traces. */ |
/* Debug traces. */ |
#ifndef YYDEBUG | #ifndef SETTINGS_PARSER_DEBUG |
# define YYDEBUG 1 | # if defined YYDEBUG |
#endif | |
#if YYDEBUG |
#if YYDEBUG |
|
# define SETTINGS_PARSER_DEBUG 1 |
|
# else |
|
# define SETTINGS_PARSER_DEBUG 0 |
|
# endif |
|
# else /* ! defined YYDEBUG */ |
|
# define SETTINGS_PARSER_DEBUG 1 |
|
# endif /* ! defined YYDEBUG */ |
|
#endif /* ! defined SETTINGS_PARSER_DEBUG */ |
|
#if SETTINGS_PARSER_DEBUG |
extern int settings_parser_debug; |
extern int settings_parser_debug; |
#endif |
#endif |
|
|
/* Token type. */ |
/* Token type. */ |
#ifndef YYTOKENTYPE | #ifndef SETTINGS_PARSER_TOKENTYPE |
# define YYTOKENTYPE | # define SETTINGS_PARSER_TOKENTYPE |
enum yytokentype | enum settings_parser_tokentype |
{ |
{ |
NAME = 258, |
NAME = 258, |
STRING = 259, |
STRING = 259, |
Line 186 extern int settings_parser_debug;
|
Line 195 extern int settings_parser_debug;
|
#define STRING_ERROR 264 |
#define STRING_ERROR 264 |
|
|
/* Value type. */ |
/* Value type. */ |
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED | #if ! defined SETTINGS_PARSER_STYPE && ! defined SETTINGS_PARSER_STYPE_IS_DECLARED |
|
|
union YYSTYPE | union SETTINGS_PARSER_STYPE |
{ |
{ |
#line 78 "settings/settings_parser.y" /* yacc.c:355 */ | #line 85 "settings/settings_parser.y" /* yacc.c:355 */ |
|
|
char *s; |
char *s; |
struct section_t *sec; |
struct section_t *sec; |
struct kv_t *kv; |
struct kv_t *kv; |
array_t *refs; |
array_t *refs; |
|
|
#line 201 "settings/settings_parser.c" /* yacc.c:355 */ | #line 210 "settings/settings_parser.c" /* yacc.c:355 */ |
}; |
}; |
|
|
typedef union YYSTYPE YYSTYPE; | typedef union SETTINGS_PARSER_STYPE SETTINGS_PARSER_STYPE; |
# define YYSTYPE_IS_TRIVIAL 1 | # define SETTINGS_PARSER_STYPE_IS_TRIVIAL 1 |
# define YYSTYPE_IS_DECLARED 1 | # define SETTINGS_PARSER_STYPE_IS_DECLARED 1 |
#endif |
#endif |
|
|
|
|
|
|
int settings_parser_parse (parser_helper_t *ctx); |
int settings_parser_parse (parser_helper_t *ctx); |
|
/* "%code provides" blocks. */ |
|
#line 74 "settings/settings_parser.y" /* yacc.c:355 */ |
|
|
|
#define YY_DECL \ |
|
int settings_parser_lex(SETTINGS_PARSER_STYPE *yylval, void *yyscanner) |
|
YY_DECL; |
|
|
|
#line 228 "settings/settings_parser.c" /* yacc.c:355 */ |
|
|
#endif /* !YY_SETTINGS_PARSER_SETTINGS_SETTINGS_PARSER_H_INCLUDED */ |
#endif /* !YY_SETTINGS_PARSER_SETTINGS_SETTINGS_PARSER_H_INCLUDED */ |
|
|
/* Copy the second part of user declarations. */ |
/* Copy the second part of user declarations. */ |
|
|
#line 217 "settings/settings_parser.c" /* yacc.c:358 */ | #line 234 "settings/settings_parser.c" /* yacc.c:358 */ |
|
|
#ifdef short |
#ifdef short |
# undef short |
# undef short |
Line 394 void free (void *); /* INFRINGES ON USER NAME SPACE */
|
Line 411 void free (void *); /* INFRINGES ON USER NAME SPACE */
|
|
|
#if (! defined yyoverflow \ |
#if (! defined yyoverflow \ |
&& (! defined __cplusplus \ |
&& (! defined __cplusplus \ |
|| (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) | || (defined SETTINGS_PARSER_STYPE_IS_TRIVIAL && SETTINGS_PARSER_STYPE_IS_TRIVIAL))) |
|
|
/* A type that is properly aligned for any stack member. */ |
/* A type that is properly aligned for any stack member. */ |
union yyalloc |
union yyalloc |
Line 507 static const yytype_uint8 yytranslate[] =
|
Line 524 static const yytype_uint8 yytranslate[] =
|
5, 6, 7, 8, 9 |
5, 6, 7, 8, 9 |
}; |
}; |
|
|
#if YYDEBUG | #if SETTINGS_PARSER_DEBUG |
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ |
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ |
static const yytype_uint8 yyrline[] = |
static const yytype_uint8 yyrline[] = |
{ |
{ |
0, 112, 112, 114, 115, 119, 123, 130, 138, 143, | 0, 119, 119, 121, 122, 126, 130, 137, 145, 150, |
152, 157, 165, 170, 177, 178, 192, 193 | 159, 164, 172, 177, 184, 185, 199, 200 |
}; |
}; |
#endif |
#endif |
|
|
#if YYDEBUG || YYERROR_VERBOSE || 1 | #if SETTINGS_PARSER_DEBUG || YYERROR_VERBOSE || 1 |
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. |
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. |
First, the terminals, then, starting at YYNTOKENS, nonterminals. */ |
First, the terminals, then, starting at YYNTOKENS, nonterminals. */ |
static const char *const yytname[] = |
static const char *const yytname[] = |
Line 654 while (0)
|
Line 671 while (0)
|
|
|
|
|
/* Enable debugging if requested. */ |
/* Enable debugging if requested. */ |
#if YYDEBUG | #if SETTINGS_PARSER_DEBUG |
|
|
# ifndef YYFPRINTF |
# ifndef YYFPRINTF |
# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ |
# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ |
Line 776 do { \
|
Line 793 do { \
|
/* Nonzero means print parse trace. It is left uninitialized so that |
/* Nonzero means print parse trace. It is left uninitialized so that |
multiple parsers can coexist. */ |
multiple parsers can coexist. */ |
int yydebug; |
int yydebug; |
#else /* !YYDEBUG */ | #else /* !SETTINGS_PARSER_DEBUG */ |
# define YYDPRINTF(Args) |
# define YYDPRINTF(Args) |
# define YY_SYMBOL_PRINT(Title, Type, Value, Location) |
# define YY_SYMBOL_PRINT(Title, Type, Value, Location) |
# define YY_STACK_PRINT(Bottom, Top) |
# define YY_STACK_PRINT(Bottom, Top) |
# define YY_REDUCE_PRINT(Rule) |
# define YY_REDUCE_PRINT(Rule) |
#endif /* !YYDEBUG */ | #endif /* !SETTINGS_PARSER_DEBUG */ |
|
|
|
|
/* YYINITDEPTH -- initial size of the parser's stacks. */ |
/* YYINITDEPTH -- initial size of the parser's stacks. */ |
Line 1040 yydestruct (const char *yymsg, int yytype, YYSTYPE *yy
|
Line 1057 yydestruct (const char *yymsg, int yytype, YYSTYPE *yy
|
switch (yytype) |
switch (yytype) |
{ |
{ |
case 3: /* NAME */ |
case 3: /* NAME */ |
#line 97 "settings/settings_parser.y" /* yacc.c:1257 */ | #line 104 "settings/settings_parser.y" /* yacc.c:1257 */ |
{ free(((*yyvaluep).s)); } |
{ free(((*yyvaluep).s)); } |
#line 1046 "settings/settings_parser.c" /* yacc.c:1257 */ | #line 1063 "settings/settings_parser.c" /* yacc.c:1257 */ |
break; |
break; |
|
|
case 4: /* STRING */ |
case 4: /* STRING */ |
#line 97 "settings/settings_parser.y" /* yacc.c:1257 */ | #line 104 "settings/settings_parser.y" /* yacc.c:1257 */ |
{ free(((*yyvaluep).s)); } |
{ free(((*yyvaluep).s)); } |
#line 1052 "settings/settings_parser.c" /* yacc.c:1257 */ | #line 1069 "settings/settings_parser.c" /* yacc.c:1257 */ |
break; |
break; |
|
|
case 16: /* section */ |
case 16: /* section */ |
#line 99 "settings/settings_parser.y" /* yacc.c:1257 */ | #line 106 "settings/settings_parser.y" /* yacc.c:1257 */ |
{ pop_section(ctx); settings_section_destroy(((*yyvaluep).sec), NULL); } |
{ pop_section(ctx); settings_section_destroy(((*yyvaluep).sec), NULL); } |
#line 1058 "settings/settings_parser.c" /* yacc.c:1257 */ | #line 1075 "settings/settings_parser.c" /* yacc.c:1257 */ |
break; |
break; |
|
|
case 17: /* section_start */ |
case 17: /* section_start */ |
#line 99 "settings/settings_parser.y" /* yacc.c:1257 */ | #line 106 "settings/settings_parser.y" /* yacc.c:1257 */ |
{ pop_section(ctx); settings_section_destroy(((*yyvaluep).sec), NULL); } |
{ pop_section(ctx); settings_section_destroy(((*yyvaluep).sec), NULL); } |
#line 1064 "settings/settings_parser.c" /* yacc.c:1257 */ | #line 1081 "settings/settings_parser.c" /* yacc.c:1257 */ |
break; |
break; |
|
|
case 18: /* references */ |
case 18: /* references */ |
#line 101 "settings/settings_parser.y" /* yacc.c:1257 */ | #line 108 "settings/settings_parser.y" /* yacc.c:1257 */ |
{ array_destroy_function(((*yyvaluep).refs), (void*)free, NULL); } |
{ array_destroy_function(((*yyvaluep).refs), (void*)free, NULL); } |
#line 1070 "settings/settings_parser.c" /* yacc.c:1257 */ | #line 1087 "settings/settings_parser.c" /* yacc.c:1257 */ |
break; |
break; |
|
|
case 19: /* setting */ |
case 19: /* setting */ |
#line 100 "settings/settings_parser.y" /* yacc.c:1257 */ | #line 107 "settings/settings_parser.y" /* yacc.c:1257 */ |
{ settings_kv_destroy(((*yyvaluep).kv), NULL); } |
{ settings_kv_destroy(((*yyvaluep).kv), NULL); } |
#line 1076 "settings/settings_parser.c" /* yacc.c:1257 */ | #line 1093 "settings/settings_parser.c" /* yacc.c:1257 */ |
break; |
break; |
|
|
case 20: /* value */ |
case 20: /* value */ |
#line 97 "settings/settings_parser.y" /* yacc.c:1257 */ | #line 104 "settings/settings_parser.y" /* yacc.c:1257 */ |
{ free(((*yyvaluep).s)); } |
{ free(((*yyvaluep).s)); } |
#line 1082 "settings/settings_parser.c" /* yacc.c:1257 */ | #line 1099 "settings/settings_parser.c" /* yacc.c:1257 */ |
break; |
break; |
|
|
case 21: /* valuepart */ |
case 21: /* valuepart */ |
#line 97 "settings/settings_parser.y" /* yacc.c:1257 */ | #line 104 "settings/settings_parser.y" /* yacc.c:1257 */ |
{ free(((*yyvaluep).s)); } |
{ free(((*yyvaluep).s)); } |
#line 1088 "settings/settings_parser.c" /* yacc.c:1257 */ | #line 1105 "settings/settings_parser.c" /* yacc.c:1257 */ |
break; |
break; |
|
|
|
|
Line 1350 yyreduce:
|
Line 1367 yyreduce:
|
switch (yyn) |
switch (yyn) |
{ |
{ |
case 5: |
case 5: |
#line 120 "settings/settings_parser.y" /* yacc.c:1646 */ | #line 127 "settings/settings_parser.y" /* yacc.c:1646 */ |
{ |
{ |
add_section(ctx, (yyvsp[0].sec)); |
add_section(ctx, (yyvsp[0].sec)); |
} |
} |
#line 1358 "settings/settings_parser.c" /* yacc.c:1646 */ | #line 1375 "settings/settings_parser.c" /* yacc.c:1646 */ |
break; |
break; |
|
|
case 6: |
case 6: |
#line 124 "settings/settings_parser.y" /* yacc.c:1646 */ | #line 131 "settings/settings_parser.y" /* yacc.c:1646 */ |
{ |
{ |
add_setting(ctx, (yyvsp[0].kv)); |
add_setting(ctx, (yyvsp[0].kv)); |
} |
} |
#line 1366 "settings/settings_parser.c" /* yacc.c:1646 */ | #line 1383 "settings/settings_parser.c" /* yacc.c:1646 */ |
break; |
break; |
|
|
case 7: |
case 7: |
#line 131 "settings/settings_parser.y" /* yacc.c:1646 */ | #line 138 "settings/settings_parser.y" /* yacc.c:1646 */ |
{ |
{ |
pop_section(ctx); |
pop_section(ctx); |
(yyval.sec) = (yyvsp[-2].sec); |
(yyval.sec) = (yyvsp[-2].sec); |
} |
} |
#line 1375 "settings/settings_parser.c" /* yacc.c:1646 */ | #line 1392 "settings/settings_parser.c" /* yacc.c:1646 */ |
break; |
break; |
|
|
case 8: |
case 8: |
#line 139 "settings/settings_parser.y" /* yacc.c:1646 */ | #line 146 "settings/settings_parser.y" /* yacc.c:1646 */ |
{ |
{ |
(yyval.sec) = push_section(ctx, (yyvsp[-1].s)); |
(yyval.sec) = push_section(ctx, (yyvsp[-1].s)); |
} |
} |
#line 1383 "settings/settings_parser.c" /* yacc.c:1646 */ | #line 1400 "settings/settings_parser.c" /* yacc.c:1646 */ |
break; |
break; |
|
|
case 9: |
case 9: |
#line 144 "settings/settings_parser.y" /* yacc.c:1646 */ | #line 151 "settings/settings_parser.y" /* yacc.c:1646 */ |
{ |
{ |
(yyval.sec) = push_section(ctx, (yyvsp[-3].s)); |
(yyval.sec) = push_section(ctx, (yyvsp[-3].s)); |
add_references(ctx, (yyvsp[-1].refs)); |
add_references(ctx, (yyvsp[-1].refs)); |
array_destroy((yyvsp[-1].refs)); |
array_destroy((yyvsp[-1].refs)); |
} |
} |
#line 1393 "settings/settings_parser.c" /* yacc.c:1646 */ | #line 1410 "settings/settings_parser.c" /* yacc.c:1646 */ |
break; |
break; |
|
|
case 10: |
case 10: |
#line 153 "settings/settings_parser.y" /* yacc.c:1646 */ | #line 160 "settings/settings_parser.y" /* yacc.c:1646 */ |
{ |
{ |
(yyval.refs) = array_create(0, 0); |
(yyval.refs) = array_create(0, 0); |
array_insert((yyval.refs), ARRAY_TAIL, (yyvsp[0].s)); |
array_insert((yyval.refs), ARRAY_TAIL, (yyvsp[0].s)); |
} |
} |
#line 1402 "settings/settings_parser.c" /* yacc.c:1646 */ | #line 1419 "settings/settings_parser.c" /* yacc.c:1646 */ |
break; |
break; |
|
|
case 11: |
case 11: |
#line 158 "settings/settings_parser.y" /* yacc.c:1646 */ | #line 165 "settings/settings_parser.y" /* yacc.c:1646 */ |
{ |
{ |
array_insert((yyvsp[-2].refs), ARRAY_TAIL, (yyvsp[0].s)); |
array_insert((yyvsp[-2].refs), ARRAY_TAIL, (yyvsp[0].s)); |
(yyval.refs) = (yyvsp[-2].refs); |
(yyval.refs) = (yyvsp[-2].refs); |
} |
} |
#line 1411 "settings/settings_parser.c" /* yacc.c:1646 */ | #line 1428 "settings/settings_parser.c" /* yacc.c:1646 */ |
break; |
break; |
|
|
case 12: |
case 12: |
#line 166 "settings/settings_parser.y" /* yacc.c:1646 */ | #line 173 "settings/settings_parser.y" /* yacc.c:1646 */ |
{ |
{ |
(yyval.kv) = settings_kv_create((yyvsp[-2].s), (yyvsp[0].s)); |
(yyval.kv) = settings_kv_create((yyvsp[-2].s), (yyvsp[0].s)); |
} |
} |
#line 1419 "settings/settings_parser.c" /* yacc.c:1646 */ | #line 1436 "settings/settings_parser.c" /* yacc.c:1646 */ |
break; |
break; |
|
|
case 13: |
case 13: |
#line 171 "settings/settings_parser.y" /* yacc.c:1646 */ | #line 178 "settings/settings_parser.y" /* yacc.c:1646 */ |
{ |
{ |
(yyval.kv) = settings_kv_create((yyvsp[-1].s), NULL); |
(yyval.kv) = settings_kv_create((yyvsp[-1].s), NULL); |
} |
} |
#line 1427 "settings/settings_parser.c" /* yacc.c:1646 */ | #line 1444 "settings/settings_parser.c" /* yacc.c:1646 */ |
break; |
break; |
|
|
case 15: |
case 15: |
#line 179 "settings/settings_parser.y" /* yacc.c:1646 */ | #line 186 "settings/settings_parser.y" /* yacc.c:1646 */ |
{ /* just put a single space between them, use strings for more */ |
{ /* just put a single space between them, use strings for more */ |
if (asprintf(&(yyval.s), "%s %s", (yyvsp[-1].s), (yyvsp[0].s)) < 0) |
if (asprintf(&(yyval.s), "%s %s", (yyvsp[-1].s), (yyvsp[0].s)) < 0) |
{ |
{ |
Line 1438 yyreduce:
|
Line 1455 yyreduce:
|
free((yyvsp[-1].s)); |
free((yyvsp[-1].s)); |
free((yyvsp[0].s)); |
free((yyvsp[0].s)); |
} |
} |
#line 1442 "settings/settings_parser.c" /* yacc.c:1646 */ | #line 1459 "settings/settings_parser.c" /* yacc.c:1646 */ |
break; |
break; |
|
|
|
|
#line 1446 "settings/settings_parser.c" /* yacc.c:1646 */ | #line 1463 "settings/settings_parser.c" /* yacc.c:1646 */ |
default: break; |
default: break; |
} |
} |
/* User semantic actions sometimes alter yychar, and that requires |
/* User semantic actions sometimes alter yychar, and that requires |
Line 1670 yyreturn:
|
Line 1687 yyreturn:
|
#endif |
#endif |
return yyresult; |
return yyresult; |
} |
} |
#line 196 "settings/settings_parser.y" /* yacc.c:1906 */ | #line 203 "settings/settings_parser.y" /* yacc.c:1906 */ |
|
|
|
|
/** |
/** |