HPUX localedef[4]



localedef in anderen Kapiteln des hpux Handbuch: localedef.1m




 localedef(4)                                                   localedef(4)





 NAME
      localedef - format and semantics of input script

 DESCRIPTION
      This is a description of the syntax and meaning of the script that is
      provided as input to the localedef command to create a locale (see
      localedef(1M).

      The following is a list of category tags, keywords and subsequent
      expressions which are recognized by localedef.  The order of keywords
      within a category is irrelevant with the exception of the modifier and
      copy keywords and other exceptions noted under the LC_COLLATE
      description.  (Note that, as a convention, the category tags are
      composed of uppercase characters, while the keywords are composed of
      lowercase characters).

    Category Tags and Keywords
      The following keywords do not belong to any category.

           langname       String identifying the name of the language.  It
                          follows the naming convention of the LANG
                          environment variable:

                               language [_territory][.codeset]

                          (see environ(5)).  This keyword is required by
                          localedef if the command line invoking localedef
                          does not contain the locale_name (see
                          localedef(1M)).

           langid         Decimal number identifying the language ID.  This
                          keyword is required by localedef if the command
                          line invoking localedef does not contain the
                          locale_name (see localedef(1M)).  The language ID
                          specified should be in the range of 1 to 999, and
                          any user-defined language should assign its
                          language ID in the range of 901 to 999.

           revision       String identifying the revision number of the
                          locale.inf file.  The string is restricted to
                          contain at most 6 characters, all digits and one
                          optional decimal point (.) character.

           comment_char   Single character indicating the character to be
                          interpreted as starting a comment line within the
                          script.  The default comment_char is #.  All lines
                          beginning with a comment_char are ignored.

           escape_char    A single character indicating the character to be
                          interpreted as an escape character within the
                          script.  The default escape_char is \e .



 Hewlett-Packard Company            - 1 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                          escape_char is used to escape localedef
                          metacharacters to remove special meaning and in
                          the character constant decimal, octal, and
                          hexadecimal formats.

      The following keywords can be used in any category.

           modifier       String identifying the name of the modifier (see
                          environ(5)).  A modifier is used when a category
                          has more than one definition.  A modifier string
                          is associated with each definition.  Since this
                          keyword is used to associate a modifier with a set
                          of specifications, it must come before any keyword
                          in that set of specifications.

           copy           A string naming another valid locale available on
                          the system.  This causes the category in the
                          locale being created to be a copy of the same
                          category in the named locale.  Since the copy
                          keyword defines the entire category, if used, it
                          must be the only keyword in the category.

      LC_CTYPE:
      The following keywords belong to the LC_CTYPE category and should come
      between the category tag LC_CTYPE and END LC_CTYPE :

           upper          Character codes classified as uppercase letters.

           lower          Character codes classified as lowercase letters.

           digit          Character codes classified as numeric.

           space          Character codes classified as spacing (delimiter)
                          characters.

           punct          Character codes classified as punctuation
                          characters.

           cntrl          Character codes classified as control characters.

           blank          Character codes for printable space characters.
                          These also must be defined in space.

           xdigit         Character codes classified as hexadecimal digits.

           alpha          Character codes classified as alphabetic
                          characters.  If omitted, this class is the
                          concatenation of the upper and lower classes.

           print          Character codes classified as printable
                          characters.  If omitted, this class is the



 Hewlett-Packard Company            - 2 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                          concatenation of the upper, lower, alpha, digit,
                          xdigit, and punct classes and the <space>
                          character.

           graph          Character codes classified as graphic characters.
                          If omitted, this class is all characters included
                          in graph except the <space> character.

           first          Character codes classified as the first bytes of
                          two-byte characters.

           second         Character codes classified as the second bytes of
                          two-byte characters.

           toupper        Lowercase to uppercase character relationships.

           tolower        Uppercase to lowercase character relationships.

           bytes_char     String containing the maximum number of bytes per
                          character for the character set used for a
                          specified language (a langinfo(5) item).

           alt_punct      String mapped into the ASCII equivalent string
                          ``b!"#$%&'()*+,-./:;<=>?@[\]^_`{~'', where b is a
                          blank (a langinfo(5) item).

           code_scheme    Specifies the multi-byte character encoding scheme
                          used.  The operand should be a string.  Currently,
                          ``HP15'' and ``EUC'' strings are recognized.  If
                          this keyword is not specified, or the operand is a
                          null string (""), the encoding scheme is single-
                          byte, or HP15 if bytes_char is 2.  See Native
                          Language Support User's Guide.

           cswidth        Defines the number of bytes contained in a
                          character, and the number of columns per character
                          displayed on output devices.  This keyword should
                          be specified if the encoding scheme is ``EUC''.
                          EUC can be divided into 4 Supplementary Code Sets.
                          The first SCS, Supplementary Code Set 0, contains
                          ASCII characters and is assumed to contain 1 byte
                          per character and require 1 column on the output
                          devices.  The operand is a string containing three
                          ordered pairs of digits delimited by colons and
                          commas.  The format is:

                          X:x,Y:y,Z:z

           center; lB lB cI l.  Field     Interpretation X    SCS 1, number
           of bytes x    SCS 1, output width Y    SCS 2, number of bytes,
           after SS2 y    SCS 2, output width Z    SCS 3, number of bytes,



 Hewlett-Packard Company            - 3 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





           after SS3 z    SCS 3, output width

      LC_COLLATE:
      The following keywords belong to the LC_COLLATE category and should
      come between the category tag LC_COLLATE and END LC_COLLATE.  The
      first three keywords can be in any order, but must come before the
      order_start keyword.  Any number of these three keywords can be
      specified.

           collating-element <symbol> from string
                          Defines a multi-character collating element,
                          symbol, composed of the characters in string.
                          String is limited to two characters.

           collating-symbol <symbol>
                          Makes symbol a collating symbol which can be used
                          to define a place in the collating sequence.
                          Symbol does not represent any actual character.

           order_start    Denotes the start of the collation sequence.  The
                          directives have an effect on string collation.

                          The lines following the order_start keyword and
                          before the order_end keyword contain collating
                          element entries, one per line.

           order_end      Marks the end of the list of collating element
                          entries.

      LC_MONETARY:
      The following keywords belong to the LC_MONETARY category and should
      come between the category tag LC_MONETARY and END LC_MONETARY.  These
      keywords, except crncystr, and mon_grouping, are identical to the
      members in struct lconv defined in <locale.h> (see localeconv(3C)):

           int_curr_symbol
           currency_symbol
           mon_decimal_point
           mon_thousands_sep
           positive_sign
           negative_sign
           int_frac_digits
           frac_digits
           p_cs_precedes
           p_sep_by_space
           n_cs_precedes
           n_sep_by_space
           p_sign_posn
           n_sign_posn





 Hewlett-Packard Company            - 4 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





           crncystr            String for specifying the currency (a
                               langinfo(5) item).

           mon_grouping        A semicolon-separated list of integers.  The
                               initial integer defines the size of the group
                               immediately preceding the decimal delimiter,
                               and the following integers define the
                               preceding groups (an lconv item).

      LC_NUMERIC:
      The following keywords belong to the LC_NUMERIC category and should
      come between the category tag LC_NUMERIC and END LC_NUMERIC:

           grouping       semicolon-separated list of integers.  The initial
                          integer defines the size of the group immediately
                          preceding the decimal delimiter, and the following
                          integers define the preceding groups (see struct
                          lconv defined in <locale.h> and localeconv(3C)).

           decimal_point  same as RADIXCHAR, a langinfo(5) item.

           thousands_sep  same as THOUSEP, a langinfo(5) item.

           alt_digit      String mapped into the ASCII equivalent string
                          ``0123456789b+-.,eE'', where b is a blank (a
                          langinfo(5) item).  The alt_digit keyword is a HP
                          extension to the localedef POSIX standards and it
                          has a different meaning than the alt_digits
                          defined in POSIX standards.

      LC_TIME:
      The following keywords belong to the LC_TIME category and should come
      between the category tag LC_TIME and END LC_TIME.  These keywords
      define information described in langinfo(5) (see langinfo(5)).

           d_t_fmt
           d_fmt
           t_fmt
           t_fmt_ampm

           day            Seven semicolon-separated strings giving names for
                          the days of the week beginning with Sunday.
                          Correspond to langinfo items day_1 through day_7.

           abday          Seven semicolon-separated strings giving
                          abbreviated names for the days of the week
                          beginning with Sunday.  Correspond to langinfo
                          items abday_1 through abday_7.

           mon            Twelve semicolon-separated strings giving names
                          for the months, beginning with January.



 Hewlett-Packard Company            - 5 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                          Correspond to langinfo items mon_1 through mon_12.

           abmon          Twelve semicolon-separated strings giving
                          abbreviated names for the months, beginning with
                          January.  Correspond to langinfo items abmon_1
                          through abmon_12.

           am_pm          Two semicolon-separated strings giving the
                          representations for AM and PM.

           year_unit
           mon_unit
           day_unit
           hour_unit
           min_unit
           sec_unit
           era_d_fmt

           era                 Names and dates of eras or emperors.

      LC_MESSAGES:
      The following keywords belong to the LC_MESSAGES category and should
      come between the category tag LC_MESSAGES and END LC_MESSAGES:

           yesexpr        An Extended Regular Expression matching acceptable
                          affirmative responses to yes/no queries.

           noexpr         An Extended Regular Expression matching acceptable
                          negative responses to yes/no queries.

           yesstr         String identifying the affirmative response for
                          yes/no questions (a langinfo(5) item).  This
                          keyword is now obsolete and yesexpr should be used
                          instead.

           nostr          String identifying the negative response for
                          yes/no questions (a langinfo(5) item).  This
                          keyword is now obsolete and noexpr should be used
                          instead.

      LC_ALL:
      The following keywords belong to the LC_ALL category and should come
      between the category tag LC_ALL and END LC_ALL:

           direction
                String indicating text direction (a langinfo(5) item).

           context
                String indicating character context analysis.  String
                ``null'' or ``0'' indicates no context analysis is required.
                String ``1'' indicates Arabic context analysis required.



 Hewlett-Packard Company            - 6 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)




    Keyword Operands
      Keyword operands consist of character-code constants, strings, and
      metacharacters.  The types of legal expressions are: character lists,
      string lists, integer lists, shift, collating element entries, regular
      expression, and string:

      character lists
                Character list operands follow the keywords upper, lower,
                digit, space, punct, cntrl, blank, xdigit, alpha, print,
                graph, first, and second and consist of single character-
                code constants or symbolic names separated by semicolons or
                a character-code range consisting of a constant or symbolic
                name followed by an ellipsis followed by another constant or
                symbolic name.  The constant preceding the ellipsis must
                have a smaller code value than the constant following the
                ellipsis.  A range represents a set of consecutive character
                codes.  If the list is longer than a single line, the escape
                character must be used at the end of each line as a
                continuation character.  It is an error to use any symbolic
                name that is not defined in an accompanying charmap file
                (see charmap(4)).

      string lists
                String list operands follow the keywords day, abday, mon,
                abmon and am_pm , and consist of strings separated by
                semicolons.  If longer than one line, the escape character
                must be used for continuation.

      integer lists
                Integer list operands follow the keywords mon_grouping,
                int_frac_digits, frac_digits, p_cs_precedes, p_sep_by_space,
                n_cs_precedes, n_sep_by_space, p_sign_posn, n_sign_posn, and
                grouping.  An integer list consists of one or more decimal
                digits separated by semicolons.

      shift     Shift operands follow keywords toupper and tolower, and must
                consist of two character-code constants enclosed by left and
                right parentheses and separated by a comma.  Each such
                character pair is separated from the next by a semicolon.
                For tolower, the first constant represents an uppercase
                character and the second the corresponding lowercase
                character.  For toupper, the first constant represents an
                lowercase character and the second the corresponding
                uppercase character.

      collating element entry
                The order_start keyword is followed by collating element
                entries, one per line, in ascending order by collating
                position.  The collating element entries have the form:





 Hewlett-Packard Company            - 7 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                     collation_element [ weight [; weight ]]

                collation_element can be a character, a collating symbol
                enclosed in angle brackets representing a character or
                collating element, the special symbol UNDEFINED or an
                ellipsis (...).

                A character stands for itself; a collating symbol can be a
                symbolic name for a character that is interpreted by the
                charmap file, a multi-character collating element defined by
                a collating-element keyword, or a collating symbol defined
                by the collating-symbol keyword.

                The special symbol UNDEFINED specifies the collating
                position of any characters not explicitly defined by
                collating element entries.  For example, if some group of
                characters is to be omitted from the collation sequence and
                just collate after all defined characters, a collating
                symbol might be defined before the order_start keyword:

                     collating-symbol <HIGH>

                Then somewhere in the list of collating element entries:

                     UNDEFINED <HIGH>

                Notice that there is no second weight.  This means that on a
                second pass all characters collate by their encoded value.

                An ellipsis is interpreted as a list of characters with an
                encoded value higher than that of the character on the
                preceding line and lower than that on the following line.
                Because it is tied to encoded value of characters, the
                ellipsis is inherently non-portable.  If it is used, a
                warning is issued and no output generated unless the -c
                option was given.

                The weight operands provide information about how the
                collating element is to be collated on first and subsequent
                passes.  Weight can be a two-character string, the special
                symbol IGNORE, or a collating element of any of the forms
                specified for collating_element except UNDEFINED.  If there
                are no weights, the character is collating strictly by its
                position in the list.  If there is only one weight given,
                the character sorts by its relative position in the list on
                the second collation pass.

                An equivalence class is defined by a series of collating
                element entries all having the same character or symbol in
                the first weight position.  For example, in many locales all
                forms of the character This is represented in the collating



 Hewlett-Packard Company            - 8 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                element entries as:

                     'A'    'A';'A' # first element of equivalence class
                     'a'    'A';'a' # next element of class

                Two-to-one collating elements are specified by collating-
                elements defined before the order_start keyword. For
                example, the two-to-one collating element CH in Spanish,
                would be defined before the order_start keyword as

                     collating element <CH> from CH

                It would then be used in a collating element entry as <CH>.

                A one-to-two collating element is defined by having a two-
                character string in one of the weight positions.  For
                example, if the character 'X' collates equal to the pair
                "AE", the collating element entry would be:

                     'X' AE ;'X'

                A don't-care character is defined by the special symbol
                IGNORE. For example, the dash character, '-' may be a don't
                care on the first collation pass.  The collating element
                entry is:

                     '-'  IGNORE;'-'

                Symbols defined by the collating-symbol keyword can be used
                to indicate that a given character collates higher or lower
                than some position in the sequence.  For example if all
                characters with an encoded value less than that of '0' are
                to collate lower than all other charactes on the first pass,
                and in relative order on the second pass, define a collating
                symbol before the order_start keyword:

                     collating-symbol    <LOW>

                The first two collating element entries are then:

                     ...    <LOW>;...
                     '0'    '0';'0'

                This also illustrates the use of the ellipsis to indicate a
                range.  The first ellipsis is interpreted as "all characters
                in the encoded character set with a value lower than '0'";
                the second ellipsis means that all characters in the range
                defined by the first collate in relative order.

      regular expression
                Regular expression operands follow the keywords yesexpr and



 Hewlett-Packard Company            - 9 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                noexpr, which can be Extended Regular Expressions as
                described in regexp(5).

      string    String operands follow all langinfo-type, lconv-type and era
                keywords except mon_grouping and grouping. Each expression
                is a string (see Strings section below).

                The expressions following the langinfo-type keywords define
                the strings associated with items in langinfo(5).  Each
                expression consists of a string to be associated with the
                item identified by the keyword.

                The expressions following the lconv-type keywords define the
                strings associated with members of lconv struct in
                localeconv(3C).  Each expression consists of a string to be
                associated with the member identified by the keyword.

                Each expression following the keyword era defines how the
                years are counted and displayed for one era (or emperor's
                reign).  The expressions must be in the following format:

                     direction:offset:start_date:end_date:name:format

                where:

                   direction   Either a + or - character.  The + character
                               indicates the time axis should be such that
                               the years count in the positive direction
                               when moving from the starting date towards
                               the ending date.  The - character indicates
                               the time axis should be such that the years
                               count in the negative direction when moving
                               from the starting date towards the ending
                               date.

                   offset      A number in the range [SHRT_MIN,SHRT_MAX]
                               indicating the number of the first year of
                               the era.

                   start_date  A date in the form yyyy/mm/dd where yyyy, mm,
                               and dd are the year, month and day numbers,
                               respectively, of the start of the era.  Years
                               prior to the year 0 A.D.  are represented as
                               negative numbers.  For example, an era
                               beginning March 5th in the year 100 B.C.
                               would be represented as 3-100/3/5.  Years in
                               the range [SHRT_MIN+1,SHRT_MAX-1] are
                               supported.

                   end_date    The ending date of the era in the same form
                               as the start_date above or one of the two



 Hewlett-Packard Company           - 10 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                               special values -* or +*.  A value of -*
                               indicates the ending date of the era extends
                               to the beginning of time while +* indicates
                               it extends to the end of time.  The ending
                               date can be chronologically either before or
                               after the starting date of an era.  For
                               example, the expressions for the Christian
                               eras A.D.  and B.C.  would be:

                                    +:0:0000/01/01:+*:A.D.:%o %N
                                    +:1:-0001/12/31:-*:B.C.:%o %N

                   name        A string representing the name of the era
                               which is substituted for the %N directive of
                               date and strftime() (see date(1) and
                               strftime(3C)).

                   format      A string for formatting the %E directive of
                               date(1) and strftime(3C).  This string is
                               usually a function of the %o and %N
                               directives.  If format is not specified, the
                               string specified for the LC_TIME category
                               keyword era_d_fmt (see above) is used as a
                               default.

    Constants
      Constants represent character codes in the operands.  They can used in
      the following forms:

           decimal constants
                          An escape character followed by a 'd' followed by
                          up to three decimal digits.

           octal constants
                          An escape character followed by up to three octal
                          digits.

           hexadecimal constants
                          An escape character followed by a 'x' followed by
                          two hexadecimal digits.

           character constants
                          A single character enclosed in single quotes or
                          separated from any other single character by a
                          semicolon, comma or <blank> having the numerical
                          value of the character in the machine's character
                          set.

           symbolic names A string enclosed between < and > is a symbolic
                          name.  localedef scripts can be written entirely
                          in symbolic names and have them interpreted



 Hewlett-Packard Company           - 11 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                          according to a charmap file.  This aids
                          portability of localedef scripts between different
                          encoded character sets (see charmap(4)).

                          Symbolic names can be defined within a script by
                          the collating-element and collating-symbol
                          keywords.  These are not character constants.  It
                          is an error if such an internally defined symbolic
                          name collides with one defined in a charmap file.

    Strings
      Strings are used in string and string list operands.  A string is a
      sequence of zero or more characters either surrounded by double quotes
      (") or delimited by semicolons or <blank>s Within a string, the
      double-quote character must be preceded by an escape character.  The
      following escape sequences also can be used:

           \n      newline

           \t      horizontal tab

           \b      backspace

           \r      carriage return

           \f      form feed

           \\      backslash

           \'      single quote

           \ddd    bit pattern

      The escape \ddd consists of the escape character followed by 1, 2, or
      3 octal digits specifying the value of the desired character.  Also,
      an escape character (\) and an immediately-following newline are
      ignored.

      Although the backslash (\) has been used for illustration, another
      escape character can be substituted by the escape_char keyword.

    Metacharacters
      Metacharacters are characters having a special meaning to localedef in
      operands.  To escape the special meaning of these characters, surround
      them with single quotes or precede them by an escape character.
      localedef meta-characters include:

           <       Indicates the beginning of a symbolic name.

           >       Indicates the end of a symbolic name.




 Hewlett-Packard Company           - 12 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





           (       Indicates the beginning of a character shift pair
                   following the toupper and tolower keywords.

           )       Indicates the end of a character shift pair.

           ,       Used to separate the characters of a character shift
                   pair.

           "       Used to quote strings.

           ;       Used as a separator in list operands.

           escape character
                   Used to escape special meaning from other metacharacters
                   and itself.  It is backslash (\) by default, but can be
                   redefined by the escape_char keyword.

    Comments
      Comments are lines beginning with a comment character.  The comment
      character is pound sign (#) by default, but can be redefined by the
      comment_char keyword.  Comments and blank lines are ignored.

    Separators
      Separator characters include blanks and tabs.  Any number of
      separators can be used to delimit the keywords, metacharacters,
      constants and strings that comprise a localedef script except that all
      characters between < and > are considered to be part of the symbolic
      name even they are <blank>s.

 GRAMMAR
      The following is a yacc-style grammar for a localedef script as
      specified by POSIX.2.  It omits some elements that are used in
      localedef in HP-UX but are not required by POSIX.2 such as langname,
      langid, etc.

      The following tokens are processed (in addition to those string
      constants shown in the grammar):

           LOC_NAME            String of characters representing the name of
                               a locale.

           CHAR                Any single character.

           NUMBER              Decimal number represented by one or more
                               decimal digits.

           COLLSYMBOL          String of characters in the set of visible
                               glyphs defined in table 2-3, enclosed between
                               angle brackets.  The string must not
                               duplicate any charmap symbol defined in the
                               current charmap (if it exists).



 Hewlett-Packard Company           - 13 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





           CHARSYMBOL          Symbolic name, enclosed between angle
                               brackets, from the current charmap (if it
                               exists).

           OCTAL_CHAR          One or more octal representations of the
                               encoding of each byte in a single character.
                               The octal representation consists of an
                               escape_char (normally a backslash) followed
                               by two or three octal digits.

           HEX_CHAR            One or more hexadecimal representations of
                               the encoding of each byte in a single
                               character.  The hexadecimal representation
                               consists of an escape_char followed by the
                               constant x and two hexadecimal digits.

           DECIMAL_CHAR        One or more decimal representations of the
                               encoding of each byte in a single character.
                               The decimal representation consists of an
                               escape_char followed by a d and two, three or
                               four decimal digits.

           ELLIPSIS            The string ``...''.

           EXTENDED_REG_EXP    An extended regular expression (see
                               regexp(5).

           EOL                 The line termination character (new-line
                               character).

      This subclause presents the grammar for the locale definition.

           %token  LOC_NAME
           %token  CHAR
           %token  NUMBER
           %token  COLLSYMBOL COLLELEMENT
           %token  CHARSYMBOL OCTAL_CHAR HEX_CHAR DECIMAL_CHAR
           %token  ELLIPSIS
           %token  EXTENDED_REG_EXP
           %token  EOL

           %start  locale_definition

           %%

           locale_definition       : global_statements locale_categories
                   |               locale_categories
                   ;
           global_statements       :  global_statements symbol_redefine
                   | symbol_redefine
                   ;



 Hewlett-Packard Company           - 14 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)




           symbol_redefine : 'escape_char'  CHAR EOL
                   | 'comment_char' CHAR EOL
                   ;
           locale_categories       : locale_categories locale_category
                   | locale_category
                   ;
           locale_category : lc_ctype
                   | lc_collate
                   | lc_messages
                   | lc_monetary
                   | lc_numeric
                   | lc_time
                   ;

           /*      The following grammar rules are common to all categories */

           char_list       : char_list char_symbol
                   | char_symbol
                   ;
           char_symbol     : CHAR
                   | CHARSYMBOL
                   | OCTAL_CHAR
                   | HEX_CHAR
                   | DECIMAL_CHAR
                   ;
           locale_name     : LOC_NAME
                   | '"' LOC_NAME '"'
                   ;

           /*      The following is the LC_CTYPE category grammar */

           lc_ctype        : ctype_hdr ctype_keywords      ctype_tlr
                   | ctype_hdr 'copy' locale_name EOL ctype_tlr
                   ;
           ctype_hdr       : 'LC_CTYPE' EOL
                   ;
           ctype_body      : 'copy' locale_name EOL
                   | ctype_keywords
                   ;
           ctype_keywords  : ctype_keywords ctype_keyword
                   | ctype_keyword
                   ;
           ctype_keyword   : charclass_keyword charclass_list EOL
                   | charconv_keyword charconv_list EOL
                   ;
           charclass_keyword       : 'upper'
                   | 'lower'
                   | 'alpha'
                   | 'digit'
                   | 'alnum'
                   | 'xdigit'



 Hewlett-Packard Company           - 15 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                   | 'space'
                   | 'print'
                   | 'graph'
                   | 'blank'
                   | 'cntrl'
                   ;
           charclass_list  : charclass_list ';' char_symbol
                   | charclass_list ';' ELLIPSIS ';' char_symbol
                   | char_symbol
                   ;
           charconv_keyword        : 'toupper'
                   | 'tolower'
                   ;
           charconv_list   : charconv_list ';' charconv_entry
                   | charconv_entry
                   ;
           charconv_entry  : '(' char_symbol ',' char_symbol ')'
                   ;
           ctype_tlr       : 'END' 'LC_CTYPE' EOL
                   ;

           /*      The following is the LC_COLLATE category grammar */

           lc_collate      : collate_hdr collate_keywords collate_tlr
                   | collate_hdr 'copy' locale_name EOL collate_tlr
                   ;
           collate_hdr     : 'LC_COLLATE' EOL
                   ;
           collate_keywords:               order_statements
                   | opt_statements order_statements
                   ;
           opt_statements  : opt_statements collating_symbols
                   | opt_statements collating_elements
                   | collating_symbols
                   | collating_elements
                   ;
           collating_symbols       : 'collating-symbol' COLLSYMBOL EOL
                   ;
           collating_elements      : 'collating-element' COLLELEMENT
                    'from' '"' char_list '"' EOL
                   ;
           order_statements        : order_start collation_order order_end
                   ;
           order_start     : 'order_start' EOL
                   ;
           collation_order : collation_order collation_entry
                   | collation_entry
                   ;
           collation_entry : COLLSYMBOL EOL
                   | collation_element weight_list EOL
                   | collation_element             EOL



 Hewlett-Packard Company           - 16 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                   ;
           collation_element       : char_symbol
                   | COLLELEMENT
                   | ELLIPSIS
                   | 'UNDEFINED'
                   ;
           weight_list     : weight_list ';' weight_symbol
                   | weight_list ';'
                   | weight_symbol
                   ;
           weight_symbol   : char_symbol
                   | COLLSYMBOL
                   | '"' char_list '"'
                   | ELLIPSIS
                   | 'IGNORE'
                   ;
           order_end       : 'order_end' EOL
                   ;
           collate_tlr     : 'END' 'LC_COLLATE' EOL
                   ;

           /*      The following is the LC_MESSAGES category grammar */

           lc_messages     : messages_hdr messages_keywords        messages_tlr
                   | messages_hdr 'copy' locale_name EOL messages_tlr
                   ;
           messages_hdr    : 'LC_MESSAGES' EOL
                   ;
           messages_keywords       : messages_keywords messages_keyword
                   | messages_keyword
                   ;
           messages_keyword        : 'yesexpr'  '"' EXTENDED_REG_EXP '"' EOL
                   | 'noexpr' '"' EXTENDED_REG_EXP '"' EOL
                   ;
           messages_tlr    : 'END' 'LC_MESSAGES' EOL
                   ;

           /*      The following is the LC_MONETARY category grammar */

           lc_monetary     : monetary_hdr monetary_keywords        monetary_tlr
                   | monetary_hdr 'copy' locale_name EOL   monetary_tlr
                   ;
           monetary_hdr    : 'LC_MONETARY' EOL
                   ;
           monetary_keywords       : monetary_keywords monetary_keyword
                   | monetary_keyword
                   ;
           monetary_keyword        : mon_keyword_string mon_string EOL
                   | mon_keyword_char NUMBER EOL
                   | mon_keyword_char '-1' EOL
                   | mon_keyword_grouping mon_group_list EOL



 Hewlett-Packard Company           - 17 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                   ;
           mon_keyword_string      : 'int_curr_symbol'
                   | 'currency_symbol'
                   | 'mon_decimal_point'
                   | 'mon_thousands_sep'
                   | 'positive_sign'
                   | 'negative_sign'
                   ;
           mon_string      :'"' char_list '"'
                   | '""'
                   ;
           mon_keyword_char        : 'int_frac_digits'
                   | 'frac_digits'
                   | 'p_cs_precedes'
                   | 'p_sep_by_space'
                   | 'n_cs_precedes'
                   | 'n_sep_by_space'
                   | 'p_sign_posn'
                   | 'n_sign_posn'
                   ;
           mon_keyword_grouping    : 'mon_grouping'
                   ;
           mon_group_list  : NUMBER
                   | mon_group_list ';' NUMBER
                   ;
           monetary_tlr    : 'END' 'LC_MONETARY' EOL
                   ;

           /*      The following is the LC_NUMERIC category grammar */

           lc_numeric      : numeric_hdr numeric_keywords  numeric_tlr
                   | numeric_hdr 'copy' locale_name EOL    numeric_tlr
                   ;
           numeric_hdr     : 'LC_NUMERIC' EOL
                   ;
           numeric_keywords        : numeric_keywords numeric_keyword
                   | numeric_keyword
                   ;
           numeric_keyword : num_keyword_string num_string EOL
                   | num_keyword_grouping num_group_list EOL
                   ;
           num_keyword_string      : 'decimal_point'
                   | 'thousands_sep'
                   ;
           num_string      :  '"' char_list '"'
                   | '""'
                   ;
           num_keyword_grouping    : 'num_grouping'
                   ;
           num_group_list  : NUMBER
                   | num_group_list ';' NUMBER



 Hewlett-Packard Company           - 18 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                   ;
           numeric_tlr     : 'END' 'LC_TIME' EOL
                   ;

           /*      The following is the LC_TIME category grammar */

           lc_time : time_hdr time_keywords        time_tlr
                   | time_hdr 'copy locale_name    EOL time_tlr
                   ;
           time_hdr        : 'LC_TIME' EOL
                   ;
           time_keywords   : time_keywords time_keyword
                   | time_keyword
                   ;
           time_keyword    : time_keyword_name time_list EOL
                   | time_keyword_fmt time_string EOL
                   | time_keyword_opt time_list EOL
                   ;
           time_keyword_name       : 'abday'
                   | 'day'
                   | 'abmon'
                   | 'mon'
                   ;
           time_keyword_fmt        : 'd_t_fmt'
                   | 'd_fmt'
                   | 't_fmt'
                   | 'am_pm'
                   | 't_fmt_ampm'
                   ;
           time_keyword_opt        : 'era'
                   | 'era_year'
                   | 'era_d_fmt'
                   | 'alt_digits'
                   ;
           time_list       : time_list ';' time_string
                   | time_string
                   ;
           time_string     : '"' char_list '"'
                   ;
           time_tlr        : 'END' 'LC_TIME' EOL
                   ;

 EXAMPLES
      The following localedef script creates the locale.inf file for the
      american language using the ROMAN8 code set:

           # language: american
           # code set: ROMAN8

           langname        "american"
           langid          1



 Hewlett-Packard Company           - 19 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





           revision        "1.1"
           escape_char     \
           comment_char    '#'

           ##################################################
           # Set up the LC_CTYPE category of the table

           LC_CTYPE
           upper   'A'...'Z';
                   \xa1...\xa7;\xad;\xae;\xb1;\xb4;\xb6; \
                   \xd0;\xd2;\xd3;\xd8;\xda...\xdc; \
                   \xde..\xe1;\xe3;\xe5...\xe9; \
                   \xeb;\xed;\xee;\xf0
           lower   'a'...'z';
                   \xb2;\xb5;\xb7;\xc0...\xcf; \xd1; \
                   \xd4...\xd7;\xd9; \xdd;\xde ;\xe2; \
                   \xe4;\xea;\xec;\xef;\xf1
           digit   '0'...'9'
           space   ' ';\x9...\xd
           punct   '!'...'/';':' - '@';
                   '['...'`';'{' - '~' \
                   \d168...\d172;\d175;\d176;\d179;
                   \d184...\d191;\d242...\d254
           cntrl   \x0...\x1f;\x7f;
                   \200...\240;\377
           blank   ' ';\t
           xdigit  '0'...'9';'a'...'f';
                   'A'...'F'

           # isfirst and issecond are irrelevant here
           # alpha, graph and print get default values

           tolower ( 'A','a' );( 'B','b' );( 'C','c' ); \
                   ( 'D','d' );( 'E','e' );( 'F','f' );
                   ( 'G','g' );( 'H','h' ); \
                   (\x49,\x69);  (\x4a,\x6a);
                   (\113,\153);  (\114,\154);
                   (\d77,\d109); (\d78,\d110);
                   ( 'O','o' );  ( 'P','p' );
                   ( 'Q','q' );( 'R','r' ); ( 'S','s' ); \
                   ( 'T','t' );( 'U','u' );( 'V','v' ); \
                   ( 'W','w' );( 'X','x' );( 'Y','y' ); \
                   ( 'Z','z' );(\xa1,\xc8);(\xa2,\xc0); \
                   (\xa3,\xc9);(\xa4,\xc1);(\xa5,\xcd); \
                   (\xa6,\xd1);(\xa7,\xdd);(\xad,\xcb); \
                   (\xae,\xc3);(\xb1,\xb2);(\xb4,\xb5); \
                (\xb6,\xb7);(\xd0,\xd4);(\xd2,\xd6); \
                (\xd3,\xd7);(\xd8,\xcc);(\xda,\xce); \
                (\xdb,\xcf);(\xdc,\xc5);(\xdf,\xc2); \
                (\xe0,\xc4);(\xe1,\xe2);(\xe3,\xe4); \
                (\xe5,\xd5);(\xe6,\xd9);(\xe7,\xc6); \



 Hewlett-Packard Company           - 20 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





                (\xe8,\xca);(\xe9,\xea);(\xeb,\xec); \
                (\xed,\xc7);(\xee,\xef);(\xf0,\xf1)

           # toupper is the reverse of tolower

           bytes_char       "1"
           alt_punct        ""
           code_scheme      ""
           END LC_CTYPE

           ##################################################
           # Set up the LC_COLLATE category of the table

           # dictionary collating sequence:
           # spaces, decimal digits,
           # alphabetic characters, punctuation,
           # control characters

           LC_COLLATE
           modifier      "nofold"
           order_start
           ' '        ' ';' '
           \xa0       \xa0; \xa0
           '0'        '0';'0'
           # '1' through '8' in numerical order
           '9'        '9';'9'
           # Equivalence class of 'A' starts here
           'A'        'A';'A'
           # One-to-two, AE ligature
           \xd3      'A';"AE"
           \xe0      'A';\xe0
           \xa1      'A';\xa1
           \xa2      'A';\xa2
           \xd8      'A';\xd8
           \xd0      'A';\xd0
           # Equivalence class of 'A' ends here
           \xe1      'A';\xe1
           'B'        'B';'B'
           'C'        'C';'C'
           \xb4      'C';\xb4
           'D'        'D';'D'
           \xe3      'D';\xe3
           'E'        'E';'E'
           \xdc      'E';\xdc
           \xa3      'E';\xa3
           \xa4      'E';\xa4
           \xa5      'E';\xa5
           'F'        'F';'F'
           'G'        'G';'G'
           'H'        'H';'H'
           'I'        'I';'I'



 Hewlett-Packard Company           - 21 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





           \xe5      'I';\xe5
           \xe6      'I';\xe6
           \xa6      'I';\xa6
           \xa7      'I';\xa7
           'J'        'J';'J'
           'K'        'K';'K'
           'L'        'L';'L'
           'M'        'M';'M'
           'N'        'N';'N'
           \xb6      'N';\xb6
           'O'        'O';'O'
           \xe7      'O';\xe7
           \xe8      'O';\xe8
           \xdf      'O';\xdf
           \xda      'O';\xda
           \xe9      'O';\xe9
           \xd2      'O';\xd2
           'P'        'P';'P'
           'Q'        'Q';'Q'
           'R'        'R';'R'

           # Remainder of LC_COLLATE omitted for space considerations

           order_end
           END LC_COLLATE

           ##################################################
           # Set up the LC_MONETARY category of the table

           LC_MONETARY
           int_curr_symbol      "USD "
           currency_symbol      "$"
           mon_decimal_point    "."
           mon_thousands_sep    ","
           mon_grouping         3;0
           positive_sign        ""
           negative_sign        "-"
           int_frac_digits      "2"
           frac_digits          "2"
           p_cs_precedes        "1"
           p_sep_by_space       "0"
           n_cs_precedes        "1"
           n_sep_by_space       "0"
           p_sign_posn          "1"
           n_sign_posn          "1"
           crncystr             "-US$"
           END LC_MONETARY

           ##################################################
           # Set up the LC_NUMERIC category of the table




 Hewlett-Packard Company           - 22 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)




           LC_NUMERIC
           grouping        3;0
           thousands_sep   ","
           decimal_point   "."
           alt_digit      ""
           END LC_NUMERIC

           ##################################################
           # Set up the LC_TIME category of the table

           LC_TIME
           # date & time format string
           d_t_fmt    "%a, %b %.1d, %Y %I:%M:%S %p"
           # date format string
           d_fmt      "%a, %b %.1d, %Y"
           # time format string
           t_fmt      "%I:%M:%S"
           # 12-hr time format
           t_fmt_ampm "%I:%M:%S %p"

           # Days of week
           day     "Sunday";"Monday";"Tuesday";"Wednesday";"Thursday"; \
           "Friday";"Saturday"

           # Weekday abbreviations
           abday   "Sun";"Mon";"Tue";"Wed";"Thu";"Fri";"Sat"

           # Month names
           mon     "January";"February";"March";"April";"May";"June"; \
           "July";"August";"September";"October";"November";"December"

           # month abbreviations
           abmon  "Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";"Aug"; \
           "Sep";"Oct";"Nov";"Dec"

           # AM, PM strings
           am_pm  "AM";"PM"

           year_unit      ""
           mon_unit       ""
           day_unit       ""
           hour_unit      ""
           min_unit       ""
           sec_unit       ""

           # There is no era or emperor year for the "american" language,
           # but here is an example of the "japanese" era_d_fmt and era specification:

           # normal era format string
           era_d_fmt  "%N%onen"
           era  "+:2:1990/01/01:+*:Heisei"



 Hewlett-Packard Company           - 23 -     HP-UX Release 9.0: August 1992






 localedef(4)                                                   localedef(4)





           # special fmt for 1st year
                "+:1:1989/01/08:1989/12/31:Heisei:%Ngannen"
                "+:2:1927/01/01:1989/01/07:Shouwa"
           # special fmt for 1st year
                "+:1:1926/12/25:1926/12/31:Shouwa:%Ngannen"
                "+:2:1913/01/01:1926/12/24:Taishou"
           # special fmt for 1st year
                "+:1:1912/07/30:1912/12/31:Taishou:%Ngannen"
                "+:2:1869/01/01:1912/07/29:Meiji"
           # special fmt for 1st year
                "+:1:1868/09/08:1868/12/31:Meiji:%Ngannen"
           # revert to regular year numbering
           # for years prior to the supported eras
                "-:1868:1868/09/07:-*::%o"
           END LC_TIME

           ##################################################
           # Set up the LC_MESSAGES category of the table

           LC_MESSGAES
           # could be "[yY][eE][sS]"
           yesexpr "yes"
           noexpr  "no"
           END LC_MESSAGES

           ##################################################
           # Set up the LC_ALL category of the table

           LC_ALL
           # left-to-right orientation
           direction      ""
           context        ""
           END LC_ALL





















 Hewlett-Packard Company           - 24 -     HP-UX Release 9.0: August 1992