# Style sheet for sather
# Copyright (c) 1988-1993 Miguel Santana
# Copyright (c) 1995-1999 Akim Demaille, Miguel Santana
# $Id: sather.ssh,v 1.1.1.1.2.1 2007/12/29 01:58:32 mhatta Exp $
#

#
# 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.1 Akim Demaille
# Added doc.

style Sather is

written by "Akim Demaille <akim@freefriends.org>"
version is 1.0
requires a2ps version 4.9.5

documentation is
   "Sather is an object oriented language designed to be simple,"
   "efficient, safe, flexible and non-proprietary. One way of placing it"
   "in the `space of languages' is to say that it aims to be as efficient"
   "as C, C++, or Fortran, as elegant as and safer than Eiffel, and"
   "support higher-order functions and iteration abstraction as well as"
   "Common Lisp, CLU or Scheme."
   ""
   "Implementation of the sheet based on the url(https://www.gnu.org/software/sather/)url(Sather home page)url."
   ""
   "Heavy highlighting uses symbols for common mathematical operators."
end documentation

first alphabet is
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"
second alphabet is
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_!"
case sensitive
keywords in Keyword_strong are
   abstract, and, any, assert, attr, bind, break!, builtin, "case",
   class, clusters, clusters!, cohort, const, else, elsif, "end",
   exception, external, false, far, fork, guard, if, immutable, inout,
   include, initial, "is", ITER, lock, loop, near, new, once, or, out,
   par, parloop, post, pre, private, protect, quit, raise, readonly,
   result, return, ROUT, SAME, self, shared, sync, then, true,
   typecase, unlock, until!, void, when, while!, with, yield
end keywords

keywords in Keyword are
   BOOL, CHAR, STR, INT, INTI, FLT, FLTD, FLTI, F_REAL, F_DOUBLE,
   F_INTEGER, F_COMPLEX, F_DOUBLE_COMPLEX, F_LOGICAL, F_CHARACTER,
   F_REAL_ARR, F_DOUBLE_ARR, F_INTEGER_ARR, F_COMPEX_ARR,
   F_DOUBLE_COMPLEX_ARR, F_LOGICAL_ARR, C_CHAR, C_UNSIGNED_CHAR_PTR,
   C_UNSIGNED_CHAR, C_SIGNED_CHAR_PTR, C_SIGNED_CHAR, C_SHORT_PTR,
   C_SHORT, C_INT_PTR, C_INT, C_LONG_PTR, C_LONG,
   C_UNSIGNED_SHORT_PTR, C_UNSIGNED_SHORT, C_UNSIGNED_INT_PTR,
   C_UNSIGNED_INT, C_UNSIGNED_LONG_PTR, C_UNSIGNED_LONG, C_FLOAT_PTR,
   C_FLOAT, C_DOUBLE_PTR, C_DOUBLE, C_LONG_DOUBLE_PTR, C_LONG_DOUBLE,
   C_SIZE_T, C_PTR, C_PTRDIFF_T, C_CHAR_PTR
end keywords

optional keywords are
   and \wedge,
   or \vee
end keywords

optional operators are
   "/=" \neq,
   <= \leq,
   >= \geq
end operators

sequences are
    -- Comment,
    C-string,
    C-char
end sequences
end style
