#
# Style sheet for ASN.1 (Abstract Syntax Notation One)
# (Extended ASN.1)
# Copyright (c) 1999 Philippe Coucaud
#

#
# This file is part of a2ps.
#
# 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; either version 3, 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; see the file COPYING.  If not, see
# <https://www.gnu.org/licenses/gpl-3.0.html>.
#

# 1.0 Philippe Coucaud
# Initial release
# 1.1 Philippe Coucaud
# Added "" as an exception for strings.

style ASN.1 is
written by "Philippe Coucaud <coucaud@loria.fr>"
version is 1.1
requires a2ps version 4.10

#
# TODO : - some keywords are allowed only inside macro definitions
#

documentation is
  "ASN.1 (Abstract Syntax Notation One) is used to define the protocol data"
  "units (PDUs) of all application layer protocols to date."
end documentation

first alphabet is
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
second alphabet is
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-"


# ASN.1 is case sensitive
case sensitive


keywords in Keyword_strong are
  ANY, APPLICATION, ABSENT,
  BEGIN, BIT, BOOLEAN, BY,
  CHOICE, COMPONENTS, COMPONENT,
  DEFAULT, DEFINITIONS, DEFINED,
  END, EXTERNAL, ENUMERATED, EXPLICIT, EXPORTS,
  FALSE, FROM,
  IDENTIFIER, INTEGER, IMPLICIT, IMPORTS, INCLUDES,
  MIN, MINUS-INFINITY, MAX, MACRO
  NULL, NOTATION,
  OBJECT, OCTET, OF, OPTIONAL,
  PRIVATE, PRESENT, PLUS-INFINITY,
  REAL,
  SET, SEQUENCE, STRING, SIZE,
  TRUE, TAGS, TYPE,
  UNIVERSAL,
  VALUE,
  WITH
end keywords

keywords in Keyword are
  administration,
  ccitt,
  GraphicString, GeneralString, GeneralizedTime,
  ISO646String, IA5String, identified-organization, iso,
  joint-iso-ccitt,
  PrintableString,
  member-body,
  NumericString, network-operator,
  ObjectDescriptor,
  question,
  recommandation, registration-authority,
  standard,
  TeletexString, T61String,
  UTCTime,
  VideotexString, VisibleString
end keywords

sequences are
   -- Comment,
   "\"" Plain String "\"" Plain
      exceptions are
         "\"\""
      end exceptions,
   [ Keyword_strong ]
end sequences

end style
