1 %{
   2 /*
   3  * This file and its contents are supplied under the terms of the
   4  * Common Development and Distribution License ("CDDL"), version 1.0.
   5  * You may only use this file in accordance with the terms of version
   6  * 1.0 of the CDDL.
   7  *
   8  * A full copy of the text of the CDDL should have accompanied this
   9  * source.  A copy of the CDDL is also available via the Internet at
  10  * http://www.illumos.org/license/CDDL.
  11  */
  12 
  13 /*
  14  * Copyright 2010 Nexenta Systems, Inc.  All rights reserved.
  15  */
  16 
  17 /*
  18  * POSIX charmap grammar.
  19  */
  20 
  21 #include <wchar.h>
  22 #include <stdio.h>
  23 #include <limits.h>
  24 #include "iconv.h"
  25 
  26 %}
  27 %union {
  28         int             num;
  29         wchar_t         wc;
  30         char            *token;
  31 }
  32 
  33 %token          T_CODE_SET
  34 %token          T_MB_CUR_MAX
  35 %token          T_MB_CUR_MIN
  36 %token          T_COM_CHAR
  37 %token          T_ESC_CHAR
  38 %token          T_LT
  39 %token          T_GT
  40 %token          T_NL
  41 %token          T_SEMI
  42 %token          T_COMMA
  43 %token          T_ELLIPSIS
  44 %token          T_RPAREN
  45 %token          T_LPAREN
  46 %token          T_QUOTE
  47 %token          T_NULL
  48 %token          T_WS
  49 %token          T_END
  50 %token          T_COPY
  51 %token          T_CHARMAP
  52 %token          T_WIDTH
  53 %token          T_WIDTH_DEFAULT
  54 %token  <wc>              T_CHAR
  55 %token  <token>           T_NAME
  56 %token  <num>             T_NUMBER
  57 %token  <token>           T_SYMBOL
  58 
  59 %%
  60 
  61 charmap         : T_CHARMAP T_NL charmap_list T_END T_CHARMAP T_NL
  62 
  63 
  64 charmap_list    : charmap_list charmap_entry
  65                 | charmap_entry
  66                 ;
  67 
  68 
  69 charmap_entry   : T_SYMBOL T_CHAR
  70                 {
  71                         add_charmap($1, $2);
  72                         scan_to_eol();
  73                 }
  74                 | T_SYMBOL T_ELLIPSIS T_SYMBOL T_CHAR
  75                 {
  76                         add_charmap_range($1, $3, $4);
  77                         scan_to_eol();
  78                 }
  79                 | T_NL
  80                 ;