# Pure language definition file for highlight (http://www.andre-simon.de/).
# Copy this to /usr/share/highlight/langDefs/pure.lang.

$DESCRIPTION=Pure

# Pure keywords.
$KW_LIST(kwa)=infix infixl infixr outfix prefix postfix namespace nonfix
private public case const def else end extern if let of otherwise then type
using when with interface

# These aren't really keywords but we want them to stick out anyway.
$KW_LIST(kwb)=catch throw

# Type identifiers used as tags and in extern declarations.
$KW_LIST(kwc)=bigint bool char short int long float double expr string pointer
void int8 int16 int32 int64 matrix dmatrix cmatrix imatrix smatrix nmatrix

# Numbers.
$DIGIT=regex(0[xX][0-9a-fA-F]+L?|\d+(?:\.\d+)?(?:[eE][\-\+]\d+)?L?)

# Other special symbols (lambda, parens, list brackets, type tags).
$SYMBOLS= \ ( ) [ ] { } :: @

# Double-quoted strings and escapes.
$STRINGDELIMITERS="
$ESCCHAR=\
$ALLOWEXTESCAPE=false

# Comments (same as in C++, comments may not be nested).
$SL_COMMENT=//
$ML_COMMENT=/* */
$ALLOWNESTEDCOMMENTS=false

# Shebang (actually treated as a comment in Pure).
$DIRECTIVE=#!

# Pure is case-sensitive.
$IGNORECASE=false

# We don't have an indentation style (yet).
$REFORMATTING=false
