%{
/* Copyright (C) 1995-2014 Free Software Foundation, Inc.
   This file is part of the GNU C Library.
   Contributed by Ulrich Drepper, <drepper@gnu.org>.

   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; version 2 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/>.  */

#include <string.h>

#include "locfile-token.h"
%}
struct keyword_t ;
%%
code_set_name,   tok_code_set_name,   1
mb_cur_max,      tok_mb_cur_max,      1
mb_cur_min,      tok_mb_cur_min,      1
escape_char,     tok_escape_char,     1
comment_char,    tok_comment_char,    1
g0esc,           tok_g0esc,           1
g1esc,           tok_g1esc,           1
g2esc,           tok_g2esc,           1
g3esc,           tok_g3esc,           1
escseq,          tok_escseq,          1
addset,          tok_addset,          1
include,         tok_include,         1
CHARMAP,         tok_charmap,         0
END,             tok_end,             0
WIDTH,           tok_width,           0
WIDTH_VARIABLE,  tok_width_variable,  0
WIDTH_DEFAULT,   tok_width_default,   0
