Переглянути джерело

libconfig 1.4.9 followUp

Removing, yacc and bison file causing issues.
preconpiled .c and .h would suffice.
Lighta 10 роки тому
батько
коміт
3625aaaf55

+ 0 - 395
3rdparty/libconfig/grammar.y

@@ -1,395 +0,0 @@
-/* -*- mode: C -*- */
-/* ----------------------------------------------------------------------------
-   libconfig - A library for processing structured configuration files
-   Copyright (C) 2005-2010  Mark A Lindner
-
-   This file is part of libconfig.
-
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public License
-   as published by the Free Software Foundation; either version 2.1 of
-   the License, or (at your option) any later version.
-
-   This library 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with this library; if not, see
-   <http://www.gnu.org/licenses/>.
-   ----------------------------------------------------------------------------
-*/
-
-%defines
-%output="y.tab.c"
-%pure-parser
-%lex-param{void *scanner}
-%parse-param{void *scanner}
-%parse-param{struct parse_context *ctx}
-%parse-param{struct scan_context *scan_ctx}
-
-%{
-#include <string.h>
-#include <stdlib.h>
-#include "libconfig.h"
-#ifdef WIN32
-#include "wincompat.h"
-
-/* prevent warnings about redefined malloc/free in generated code: */
-#ifndef _STDLIB_H
-#define _STDLIB_H
-#endif
-
-#include <malloc.h>
-#endif
-#include "parsectx.h"
-#include "scanctx.h"
-
-/* these delcarations are provided to suppress compiler warnings */
-extern int libconfig_yylex();
-extern int libconfig_yyget_lineno();
-
-static const char *err_array_elem_type = "mismatched element type in array";
-static const char *err_duplicate_setting = "duplicate setting name";
-
-#define _delete(P) free((void *)(P))
-
-#define IN_ARRAY() \
-  (ctx->parent && (ctx->parent->type == CONFIG_TYPE_ARRAY))
-
-#define IN_LIST() \
-  (ctx->parent && (ctx->parent->type == CONFIG_TYPE_LIST))
-
-static void capture_parse_pos(void *scanner, struct scan_context *scan_ctx,
-                              config_setting_t *setting)
-{
-  setting->line = (unsigned int)libconfig_yyget_lineno(scanner);
-  setting->file = scanctx_current_filename(scan_ctx);
-}
-
-#define CAPTURE_PARSE_POS(S) \
-  capture_parse_pos(scanner, scan_ctx, (S))
-
-void libconfig_yyerror(void *scanner, struct parse_context *ctx,
-                       struct scan_context *scan_ctx, char const *s)
-{
-  if(ctx->config->error_text) return;
-  ctx->config->error_line = libconfig_yyget_lineno(scanner);
-  ctx->config->error_text = s;
-}
-
-%}
-
-%union
-{
-  int ival;
-  long long llval;
-  double fval;
-  char *sval;
-}
-
-%token <ival> TOK_BOOLEAN TOK_INTEGER TOK_HEX
-%token <llval> TOK_INTEGER64 TOK_HEX64
-%token <fval> TOK_FLOAT
-%token <sval> TOK_STRING TOK_NAME
-%token TOK_EQUALS TOK_NEWLINE TOK_ARRAY_START TOK_ARRAY_END TOK_LIST_START TOK_LIST_END TOK_COMMA TOK_GROUP_START TOK_GROUP_END TOK_SEMICOLON TOK_GARBAGE TOK_ERROR
-
-%%
-
-configuration:
-    /* empty */
-  | setting_list
-  ;
-
-setting_list:
-    setting
-  | setting_list setting
-  ;
-
-setting_list_optional:
-    /* empty */
-  | setting_list
-  ;
-
-setting_terminator:
-    /* empty */
-  | TOK_SEMICOLON
-  | TOK_COMMA
-  ;
-
-setting:
-  TOK_NAME
-  {
-    ctx->setting = config_setting_add(ctx->parent, $1, CONFIG_TYPE_NONE);
-
-    if(ctx->setting == NULL)
-    {
-      libconfig_yyerror(scanner, ctx, scan_ctx, err_duplicate_setting);
-      YYABORT;
-    }
-    else
-    {
-      CAPTURE_PARSE_POS(ctx->setting);
-    }
-  }
-
-  TOK_EQUALS value setting_terminator
-  ;
-
-array:
-  TOK_ARRAY_START
-  {
-    if(IN_LIST())
-    {
-      ctx->parent = config_setting_add(ctx->parent, NULL, CONFIG_TYPE_ARRAY);
-      CAPTURE_PARSE_POS(ctx->parent);
-    }
-    else
-    {
-      ctx->setting->type = CONFIG_TYPE_ARRAY;
-      ctx->parent = ctx->setting;
-      ctx->setting = NULL;
-    }
-  }
-  simple_value_list_optional
-  TOK_ARRAY_END
-  {
-    if(ctx->parent)
-      ctx->parent = ctx->parent->parent;
-  }
-  ;
-
-list:
-  TOK_LIST_START
-  {
-    if(IN_LIST())
-    {
-      ctx->parent = config_setting_add(ctx->parent, NULL, CONFIG_TYPE_LIST);
-      CAPTURE_PARSE_POS(ctx->parent);
-    }
-    else
-    {
-      ctx->setting->type = CONFIG_TYPE_LIST;
-      ctx->parent = ctx->setting;
-      ctx->setting = NULL;
-    }
-  }
-  value_list_optional
-  TOK_LIST_END
-  {
-    if(ctx->parent)
-      ctx->parent = ctx->parent->parent;
-  }
-  ;
-
-value:
-    simple_value
-  | array
-  | list
-  | group
-  ;
-
-string:
-  TOK_STRING { parsectx_append_string(ctx, $1); free($1); }
-  | string TOK_STRING { parsectx_append_string(ctx, $2); free($2); }
-  ;
-
-simple_value:
-    TOK_BOOLEAN
-  {
-    if(IN_ARRAY() || IN_LIST())
-    {
-      config_setting_t *e = config_setting_set_bool_elem(ctx->parent, -1,
-                                                         (int)$1);
-
-      if(! e)
-      {
-        libconfig_yyerror(scanner, ctx, scan_ctx, err_array_elem_type);
-        YYABORT;
-      }
-      else
-      {
-        CAPTURE_PARSE_POS(e);
-      }
-    }
-    else
-      config_setting_set_bool(ctx->setting, (int)$1);
-  }
-  | TOK_INTEGER
-  {
-    if(IN_ARRAY() || IN_LIST())
-    {
-      config_setting_t *e = config_setting_set_int_elem(ctx->parent, -1, $1);
-      if(! e)
-      {
-        libconfig_yyerror(scanner, ctx, scan_ctx, err_array_elem_type);
-        YYABORT;
-      }
-      else
-      {
-        config_setting_set_format(e, CONFIG_FORMAT_DEFAULT);
-        CAPTURE_PARSE_POS(e);
-      }
-    }
-    else
-    {
-      config_setting_set_int(ctx->setting, $1);
-      config_setting_set_format(ctx->setting, CONFIG_FORMAT_DEFAULT);
-    }
-  }
-  | TOK_INTEGER64
-  {
-    if(IN_ARRAY() || IN_LIST())
-    {
-      config_setting_t *e = config_setting_set_int64_elem(ctx->parent, -1, $1);
-      if(! e)
-      {
-        libconfig_yyerror(scanner, ctx, scan_ctx, err_array_elem_type);
-        YYABORT;
-      }
-      else
-      {
-        config_setting_set_format(e, CONFIG_FORMAT_DEFAULT);
-        CAPTURE_PARSE_POS(e);
-      }
-    }
-    else
-    {
-      config_setting_set_int64(ctx->setting, $1);
-      config_setting_set_format(ctx->setting, CONFIG_FORMAT_DEFAULT);
-    }
-  }
-  | TOK_HEX
-  {
-    if(IN_ARRAY() || IN_LIST())
-    {
-      config_setting_t *e = config_setting_set_int_elem(ctx->parent, -1, $1);
-      if(! e)
-      {
-        libconfig_yyerror(scanner, ctx, scan_ctx, err_array_elem_type);
-        YYABORT;
-      }
-      else
-      {
-        config_setting_set_format(e, CONFIG_FORMAT_HEX);
-        CAPTURE_PARSE_POS(e);
-      }
-    }
-    else
-    {
-      config_setting_set_int(ctx->setting, $1);
-      config_setting_set_format(ctx->setting, CONFIG_FORMAT_HEX);
-    }
-  }
-  | TOK_HEX64
-  {
-    if(IN_ARRAY() || IN_LIST())
-    {
-      config_setting_t *e = config_setting_set_int64_elem(ctx->parent, -1, $1);
-      if(! e)
-      {
-        libconfig_yyerror(scanner, ctx, scan_ctx, err_array_elem_type);
-        YYABORT;
-      }
-      else
-      {
-        config_setting_set_format(e, CONFIG_FORMAT_HEX);
-        CAPTURE_PARSE_POS(e);
-      }
-    }
-    else
-    {
-      config_setting_set_int64(ctx->setting, $1);
-      config_setting_set_format(ctx->setting, CONFIG_FORMAT_HEX);
-    }
-  }
-  | TOK_FLOAT
-  {
-    if(IN_ARRAY() || IN_LIST())
-    {
-      config_setting_t *e = config_setting_set_float_elem(ctx->parent, -1, $1);
-      if(! e)
-      {
-        libconfig_yyerror(scanner, ctx, scan_ctx, err_array_elem_type);
-        YYABORT;
-      }
-      else
-      {
-        CAPTURE_PARSE_POS(e);
-      }
-    }
-    else
-      config_setting_set_float(ctx->setting, $1);
-  }
-  | string
-  {
-    if(IN_ARRAY() || IN_LIST())
-    {
-      const char *s = parsectx_take_string(ctx);
-      config_setting_t *e = config_setting_set_string_elem(ctx->parent, -1, s);
-      _delete(s);
-
-      if(! e)
-      {
-        libconfig_yyerror(scanner, ctx, scan_ctx, err_array_elem_type);
-        YYABORT;
-      }
-      else
-      {
-        CAPTURE_PARSE_POS(e);
-      }
-    }
-    else
-    {
-      const char *s = parsectx_take_string(ctx);
-      config_setting_set_string(ctx->setting, s);
-      _delete(s);
-    }
-  }
-  ;
-
-value_list:
-    value
-  | value_list TOK_COMMA value
-  ;
-
-value_list_optional:
-    /* empty */
-  | value_list
-  ;
-
-simple_value_list:
-    simple_value
-  | simple_value_list TOK_COMMA simple_value
-  ;
-
-simple_value_list_optional:
-    /* empty */
-  | simple_value_list
-  ;
-
-group:
-  TOK_GROUP_START
-  {
-    if(IN_LIST())
-    {
-      ctx->parent = config_setting_add(ctx->parent, NULL, CONFIG_TYPE_GROUP);
-      CAPTURE_PARSE_POS(ctx->parent);
-    }
-    else
-    {
-      ctx->setting->type = CONFIG_TYPE_GROUP;
-      ctx->parent = ctx->setting;
-      ctx->setting = NULL;
-    }
-  }
-  setting_list_optional
-  TOK_GROUP_END
-  {
-    if(ctx->parent)
-      ctx->parent = ctx->parent->parent;
-  }
-  ;
-
-%%

+ 0 - 0
3rdparty/libconfig/libconfig-1.4.8


+ 0 - 191
3rdparty/libconfig/scanner.l

@@ -1,191 +0,0 @@
-/* -*- mode: C -*- */
-/* --------------------------------------------------------------------------
-   libconfig - A library for processing structured configuration files
-   Copyright (C) 2005-2010  Mark A Lindner
-
-   This file is part of libconfig.
-
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public License
-   as published by the Free Software Foundation; either version 2.1 of
-   the License, or (at your option) any later version.
-
-   This library 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with this library; if not, see
-   <http://www.gnu.org/licenses/>.
-   ----------------------------------------------------------------------------
-*/
-
-%option nounistd
-%option reentrant
-%option noyywrap
-%option yylineno
-%option nounput
-%option bison-bridge
-%option header-file="scanner.h"
-%option outfile="lex.yy.c"
-%option extra-type="struct scan_context *"
-
-%{
-
-#ifdef _MSC_VER
-#pragma warning (disable: 4996)
-#endif
-
-#include <stdlib.h>
-#include <ctype.h>
-#include <string.h>
-#include "grammar.h"
-#include "wincompat.h"
-#include "parsectx.h"
-#include "scanctx.h"
-
-#define YY_NO_INPUT // Suppress generation of useless input() function
-
-static unsigned long long fromhex(const char *s)
-{
-#ifdef __MINGW32__
-
-  /* MinGW's strtoull() seems to be broken; it only returns the lower
-   * 32 bits...
-   */
-
-  const char *p = s;
-  unsigned long long val = 0;
-
-  if(*p != '0')
-    return(0);
-
-  ++p;
-
-  if(*p != 'x' && *p != 'X')
-    return(0);
-
-  for(++p; isxdigit(*p); ++p)
-  {
-    val <<= 4;
-    val |= ((*p < 'A') ? (*p & 0xF) : (9 + (*p & 0x7)));
-  }
-
-  return(val);
-
-#else /* ! __MINGW32__ */
-
-  return(strtoull(s, NULL, 16));
-
-#endif /* __MINGW32__ */
-}
-
-%}
-
-true              [Tt][Rr][Uu][Ee]
-false             [Ff][Aa][Ll][Ss][Ee]
-name              [A-Za-z\*][-A-Za-z0-9_\*]*
-integer           [-+]?[0-9]+
-integer64         [-+]?[0-9]+L(L)?
-hex               0[Xx][0-9A-Fa-f]+
-hex64             0[Xx][0-9A-Fa-f]+L(L)?
-hexchar           \\[Xx][0-9A-Fa-f]{2}
-float             ([-+]?([0-9]*)?\.[0-9]*([eE][-+]?[0-9]+)?)|([-+]?([0-9]+)(\.[0-9]*)?[eE][-+]?[0-9]+)
-comment           (#|\/\/).*$
-include_open      ^[ \t]*@include[ \t]+\"
-
-%x COMMENT STRING INCLUDE
-
-%%
-
-\/\*              { BEGIN COMMENT; }
-<COMMENT>\*\/     { BEGIN INITIAL; }
-<COMMENT>.        { /* ignore */ }
-<COMMENT>\n       { /* ignore */ }
-
-\"                { BEGIN STRING; }
-<STRING>[^\"\\]+  { scanctx_append_string(yyextra, yytext); }
-<STRING>\\n       { scanctx_append_string(yyextra, "\n"); }
-<STRING>\\r       { scanctx_append_string(yyextra, "\r"); }
-<STRING>\\t       { scanctx_append_string(yyextra, "\t"); }
-<STRING>\\f       { scanctx_append_string(yyextra, "\f"); }
-<STRING>\\\\      { scanctx_append_string(yyextra, "\\"); }
-<STRING>\\\"      { scanctx_append_string(yyextra, "\""); }
-<STRING>{hexchar} {
-                    char c[2] = { (char)(strtol(yytext + 2, NULL, 16) & 0xFF),
-                                  0 };
-                    scanctx_append_string(yyextra, c);
-                  }
-<STRING>\\        { scanctx_append_string(yyextra, "\\"); }
-<STRING>\"        {
-                    yylval->sval = scanctx_take_string(yyextra);
-                    BEGIN INITIAL;
-                    return(TOK_STRING);
-                  }
-
-{include_open}    { BEGIN INCLUDE; }
-<INCLUDE>[^\"\\]+ { scanctx_append_string(yyextra, yytext); }
-<INCLUDE>\\\\     { scanctx_append_string(yyextra, "\\"); }
-<INCLUDE>\\\"     { scanctx_append_string(yyextra, "\""); }
-<INCLUDE>\"       {
-                    const char *error;
-                    FILE *fp = scanctx_push_include(yyextra,
-                                                    (void *)YY_CURRENT_BUFFER,
-                                                    &error);
-                    if(fp)
-                    {
-                      yyin = fp;
-                      yy_switch_to_buffer(
-                        yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner),
-                        yyscanner);
-                    }
-                    else
-                    {
-                      yyextra->config->error_text = error;
-                      yyextra->config->error_file = scanctx_current_filename(
-                        yyextra);
-                      yyextra->config->error_line = libconfig_yyget_lineno(
-                        yyscanner);
-                      return TOK_ERROR;
-                    }
-                    BEGIN INITIAL;
-                  }
-
-\n|\r|\f          { /* ignore */ }
-[ \t]+            { /* ignore */ }
-
-\=|\:             { return(TOK_EQUALS); }
-,                 { return(TOK_COMMA); }
-\{                { return(TOK_GROUP_START); }
-\}                { return(TOK_GROUP_END); }
-{true}            { yylval->ival = 1; return(TOK_BOOLEAN); }
-{false}           { yylval->ival = 0; return(TOK_BOOLEAN); }
-{name}            { yylval->sval = yytext; return(TOK_NAME); }
-{float}           { yylval->fval = atof(yytext); return(TOK_FLOAT); }
-{integer}         { yylval->ival = atoi(yytext); return(TOK_INTEGER); }
-{integer64}       { yylval->llval = atoll(yytext); return(TOK_INTEGER64); }
-{hex}             {
-                    yylval->ival = strtoul(yytext, NULL, 16);
-                    return(TOK_HEX);
-                  }
-{hex64}           { yylval->llval = fromhex(yytext); return(TOK_HEX64); }
-\[                { return(TOK_ARRAY_START); }
-\]                { return(TOK_ARRAY_END); }
-\(                { return(TOK_LIST_START); }
-\)                { return(TOK_LIST_END); }
-;                 { return(TOK_SEMICOLON); }
-{comment}         { /* ignore */ }
-.                 { return(TOK_GARBAGE); }
-
-<<EOF>>           {
-                    YY_BUFFER_STATE buf = (YY_BUFFER_STATE)scanctx_pop_include(
-                      yyextra);
-                    if(buf)
-                    {
-                      yy_delete_buffer(YY_CURRENT_BUFFER, yyscanner);
-                      yy_switch_to_buffer(buf, yyscanner);
-                    }
-                    else
-                      yyterminate();
-                  }