%{
/* Copyright (C) 1995,1996,1997,1998,1999,2005 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, write to the Free Software Foundation,
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */

#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
