# -*- LE-syntax -*-
# Syntax patterns for LE editor. (c) 1997-2006 Alexander V. Lukyanov
# This file is distributed under GNU GPL license.
# Please send corrections and improvements to <lav@yars.free.net>
#
# $Id: syntax,v 1.34 2006/11/30 08:07:54 lav Exp $
#
# This file describes how to highlight syntax. The following format
# used:
# /PATTERN - selects file names for which next lines apply
# c[i]COLOR,MASK=REGEXP - use COLOR (1-3) to highlight subexpressions
# of REGEXP; MASK is bitmask selecting which subexpressions are to
# highlight. C escapes can be used in REGEXP; it also can be split
# into several lines by last \ on the line. The optional `i' means
# to ignore case.

# c3 usually marks comments or text strings
# c2 usually marks important syntax elements
# c1 usually marks keywords

# maximum height of constructs
h18

# This file mode
//-\*- *LE-syntax *-\*-
c3,1=^#.*$
c1,1=^(h|ci?)
c2,2=^[hc][0-9],[0-9]+(=)
c2,1=^/

# C language mode (lav)
/*.c|/-\*- *c *-\*-
c3,1="([^"\n\\]|\\\\(.|\n))*"|'([^'\n\\]|\\\\.)*'
#c3,1=^[ \t]*#([^\\\n]|\\\\(.|\n))*$
c3,2=^[ \t]*(#[ \t]*(include[ \t]*<[^>\n]*>|[[:alpha:]]*))
c3,1=/\\*([^*]|\\*[^/])*\\*/
c1,4=([^[:alnum:]_]|^)(asm|else|if|switch|case|while|for|goto|break\
|continue|char|short|int|long|unsigned|signed|auto\
|const|default|do|double|enum|extern|float|register\
|return|sizeof|static|struct|typedef|union|void|volatile\
)([^[:alnum:]_]|$)
c2,1=\\[|\\]|\\(|\\)|{|}|,

# C++ mode (lav)
/*.cc|*.C|*.cpp|*.h|*.hh|*.hpp|*.H|/-\*- *c++ *-\*-
c3,1="([^"\n\\]|\\\\(.|\n))*"|'([^\n'\\]|\\\\.)*'
#c3,1=^[ \t]*#([^\\\n]|\\\\(.|\n))*$
c3,2=^[ \t]*(#[ \t]*(include[ \t]*<[^>\n]*>|[[:alpha:]]*))
c3,1=//.*$|/\\*([^*]|\\*[^/])*\\*/
c1,4=([^[:alnum:]_]|^)(asm|else|if|switch|case|while|for|goto|break\
|continue|char|short|int|long|unsigned|signed|auto\
|const|default|do|double|enum|extern|float|register\
|return|sizeof|static|struct|typedef|union|void|volatile\
|try|catch|class|new|delete|private|public|protected|this|virtual\
|inline|bool|true|false|operator|overload|template|friend|namespace|using\
|typeid|dynamic_cast|const_cast|typename|explicit\
)([^[:alnum:]_]|$)
c2,1=\\[|\\]|\\(|\\)|{|}|,

# named.conf mode (lav)
/named.conf|/-\*- *\(named\|bind\) *-\*-
c3,1="([^"\n\\]|\\\\(.|\n))*"|'([^\n'\\]|\\\\.)*'
c3,1=//.*$|/\\*([^*]|\\*[^/])*\\*/
c1,4=([^[:alnum:]_]|^)(acl|address|algorithm|allow-query|allow-recursion|allow-transfer\
|also-notify|auth-nxdomain|blackhole|bogus|category|channel|check-names|cleaning-interval\
|controls|coresize|datasize|deallocate-on-exit|dialup|directory|dump-file|fake-iquery\
|fetch-glue|files?|first|forward|forwarders|has-old-clients|heartbeat-interval|hint\
|host-statistics|include|interface-interval|keys?|lame-ttl|listen-on|logging\
|maintain-ixfr-base|masters?|match-clients|max-ixfr-log-size|max-ncache-ttl\
|max-transfer-time-in|memstatistics-file|min-roots|multiple-cnames|named-xfer|no|notify\
|only|options|pid-file|port|print-category|print-severity|print-time|pubkey|query-source\
|recursion|rfc2308-type1|rrset-order|secret|server|severity|size|slave|sortlist|stacksize\
|statistics-file|statistics-interval|stub|syslog|topology|transfer-format|transfer-source\
|transfers|transfers-in|transfers-out|transfers-per-ns|treat-cr-as-space|trusted-keys|type\
|use-id-pool|versions?|view|yes|zone)([^[:alnum:]_]|$)
c2,1={|}|,|;

# nroff mode (lav)
/*.[1-9]|/-\*- *nroff *-\*-
c3,1=^\.\\\\".*$
c2,1=^\.[[:alpha:]]*
c1,2=\\\\fB((\\\\[^f]|[^\\])*[^\\]?)(\\\\f|$)
c3,2=\\\\fI((\\\\[^f]|[^\\])*[^\\]?)(\\\\f|$)
c1,2=^\.B[IR]? (.*)$
c3,2=^\.I (.*)$

# Eiffel mode, by Serge Vakulenko <vak@cronyx.ru>
/*.e
c3,1=--[^\n]*\n
c3,1="([^"\\]|\\\\(.|\n))*"
c1,4=([^[:alnum:]_]|^)(alias|all|and|as|check|class|creation|debug\
|deferred|do|else|elseif|end|ensure|expanded|export|external|false\
|feature|from|frozen|if|implies|indexing|infix|inherit|inspect|invariant\
|is|like|local|loop|not|obsolete|old|once|or|prefix|redefine|rename\
|require|rescue|retry|select|separate|strip|then|true|undefine|unique\
|until|variant|when|xor|Current|Result|True|False|Void\
|ARRAY|BIT|BOOLEAN|CHARACTER|DOUBLE|INTEGER|NONE|POINTER|REAL|STRING\
)([^[:alnum:]_]|$)
c2,1=<<|>>

# Ada mode, by Serge Vakulenko <vak@cronyx.ru>
/*.adb|*.ads|*.adc|*.gpr
c3,1=--[^\n]*\n
c3,1="([^"\\]|\\\\(.|\n))*"
c1,4=([^[:alnum:]_]|^)(abort|else|new|return|abs|elsif|not|reverse|abstract\
|end|null|accept|entry|select|access|exception|separate|aliased|exit|of\
|subtype|all|or|and|for|others|tagged|array|function|out|task|at|terminate\
|generic|package|then|begin|goto|pragma|type|body|private|if|procedure\
|case|in|protected|until|constant|is|use|raise|declare|range|when|delay\
|limited|record|while|delta|loop|rem|with|digits|renames|do|mod|requeue|xor\
)([^[:alnum:]_]|$)
c2,1=<<|>>|:=|\\[|\\]|\\(|\\)|{|}|,|:|#|'Access|'Address|'Size

# Assembler mode, by Serge Vakulenko <vak@cronyx.ru>
/*.S|*.s
c3,1=@[^\n]*\n
c3,1=;[^\n]*\n
c3,1="([^"\\]|\\\\(.|\n))*"
c3,2=^[ \t]*(#[ \t]*(include[ \t]*<[^>\n]*>|[[:alpha:]]*))
c1,4=([^[:alnum:]_]|^)(\.section|\.func|\.globl|\.global|\.code|\.comm|\.weak\
|\.endfunc\
)([^[:alnum:]_]|$)
c2,1==|,|\(|\)|#|\[|\]|:

# Python mode, by Serge Vakulenko <vak@cronyx.ru>
/*.py
c3,1=#.*$
c3,1="([^"\\]|\\\\(.|\n))*"|'([^'\\]|\\\\(.|\n))*'
c1,4=([^[:alnum:]_]|^)(if|elif|else|for|in|break|continue|while|pass\
|try|except|raise|finally|import|from|class|def|return|global\
|print|del|exec|access|in|or|and|not|is|lambda\
)([^[:alnum:]_]|$)
c2,1=:

# Sather mode, by Serge Vakulenko <vak@cronyx.ru>
/*.sa
c3,1=--[^\n]*$
c3,1="([^"\\]|\\\\(.|\n))*"
c1,4=([^[:alnum:]_]|^)(abstract|and|any|assert|attr|bind|break!|builtin|case\
|class|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|yuild|ARRAY|BOOL|CHAR|FLTD|INT|INTI|FLT|FLTI|STR|\\$OB|AREF|AVAL\
|TUP|SYS|\\$NIL|\\$FINALIZE\
)([^[:alnum:]_]|$)
c2,1=\||#|::=|:=|::

# Shell mode, by Serge Vakulenko <vak@cronyx.ru>
/*.sh|/^#![ \t]*/.*/\(ba\|z\|k\)?sh\|-\*- *sh *-\*-
c3,1=#.*$
c3,2=[^\\]("([^"\\]|\\\\(.|\n))*"|'([^'\\]|\\\\(.|\n))*')
c1,4=([^[:alnum:]/_]|^)(if|then|else|elif|fi|while|do|done|for|break|continue\
|case|in|esac|local|return|exit|alias|bg|cd|eval|exec|export|fc|fg|getopts|hash\
|jobid|jobs|pwd|read|readonly|set|setvar|shift|trap|ulimit|umask|unalias|unset\
|wait\
)([^[:alnum:]/_]|$)
c2,1={|}|<<|<|>>|>|;;|;|\(|\)|\|

# java mode (bird@yars.free.net)
/*.java|/-\*- *java *-\*-
c3,1="([^"\n\\]|\\\\.)*"|'([^\n'\\]|\\\\.)*'
c3,1=//.*$|/\\*([^*]|\\*[^/])*\\*/
c1,4=([^[:alnum:]_]|^)(abstract|default|if|private|throw|boolean|do|implements\
|protected|throws|break|double|import|public|transient|byte|else|instanceof\
|return|try|case|extends|int|short|void|catch|final|interface|static|volatile\
|char|finally|long|super|while|class|float|native|switch|const|for|new\
|synchronized|continue|goto|package|this\
)([^[:alnum:]_]|$)
c2,1=\\[|\\]|\\(|\\)|{|}|,

# po (i18n) mode (lav)
/*.po
c1,1=^#, .*
c2,1="|\\\\n|%[+- #]*[0-9*]*\\.?[0-9*]*l?[l]?[diouxXfeEgGcs]
c3,1=^#.*$

# html mode (lav)
/*.html|*.htm|*.shtml|/-\*- *html *-\*-\|^<![Dd][Oo][Cc][Tt][Yy][Pp][Ee] [Hh][Tt][Mm][Ll]\|^<[Hh][Tt][Mm][Ll]>
c3,2=<!--(([^-]|-[^-]|--[^>])\{0,10000\})-->
c3,2=<!([a-zA-Z][^>]\{0,100\})>
c3,2=("([^"\n\\]|\\\\.)\{0,100\}"|'([^\n'\\]|\\\\.)\{0,100\}')[^<]\{0,1000\}>
c2,1=<!--|-->|<[/!]|<|>|&[a-zA-Z]\{1,64\};|&#[0-9]\{1,8\};
ci1,2=<[!/]?(HTML|BODY|TITLE|HEAD|META|STYLE|FRAME(SET)?|IFRAME|APPLET|\
BASE(FONT)?|NOFRAMES|A( HREF| NAME)?|IMG( SRC)?|AREA|(NO)?SCRIPT|OBJECT|\
PARAM|LINK|MAP|P( ALIGN)?|HR( WIDTH)?|PRE|BLOCKQUOTE|QUOTE|Q|DIV|CENTER|\
H[1-6]|BR|INS|DEL|BDO|SPAN|TT|[BIUS]|FONT( ALIGN| SIZE| COLOR)?|STRONG|\
SAMP|VAR|CODE|EM|ADDRESS|DFN|CITE|ABBR|ACRONYM|BIG|SMALL|BLINK|LISTING|\
KBD|STRIKE|SU[BP]|UL|OL|LI|DIR|MENU|DL( COMPACT)?|DT|DD|THEAD|TFOOT|TBODY|\
INPUT|FORM|SELECT|OPTION|BUTTON|FIELDSET|LABEL|LEGEND|OPTGROUP|TEXTAREA|\
ISINDEX|TABLE|TR|TD( WIDTH| VALIGN)?|TH|CAPTION|COL(GROUP)?|MULTICOL|\
(I|NO)?LAYER|ABOVE|BGSOUND|ARRAY|COMMENT|EMBED|FIG|MARQUEE|NEXTID|NOBR|\
RANGE|ROOT|SOUND|SPACER|SQRT|TEXT|WBR|XMP\
)[\n\r\t >=]

##########################################################################
# Lout mode by Abel Morabito <abelmora@crosswinds.net>
# extension .lout
# Most standard tags for Lout 3.24
/*.lout
#### COMMENTS AND LITERAL TEXT
c3,1=(#.*$)|("[^"]*")
## SPECIAL CHARACTERS
c2,1=(@|&|/|\^|{|}|\||~|"|\\\|``|'')
#### TAGS
c1,2=@(Abbreviations|AboveChapterGap|AbstractDisplay|AbstractFormat\
|AbstractTitle|AbstractWord|ACell|ACurve|ACurveArrow\
|Address|AfterTitlePage|AIndex|AL|AlignedDisplay|AlphaList\
|AmberLight|And|Annote|ANode|AnotherFootNote|AppendixGap\
|AppendixHeadingBreak|AppendixHeadingFont|AppendixHeadingFormat\
|AppendixInContents|AppendixNumbers|AppendixNumInDisplays\
|AppendixNumInFigures|AppendixNumInTables|AppendixNumInTheorems\
|AppendixPrefix|AppendixWord|Arrow|AtEnd|Author|AuthorIndex|B|BAD\
|BasicSetup|Batlow|BCell|BeforeTitlePage|Begin\
|BeginAlignedDisplays|BeginAppendices|BeginChapters\
|BeginOverheads|BeginSections|BeginSubAppendices\
|BeginSubSections|BeginSubSubAppendices|BeginSubSubSections\
|Bezier|BezierArrow|BI|BigOctagon|BIndex|BIsymbols|BL\
|Blue|BNode|Body|BookSetup|BoundaryMarks|Box|Break\
|Bullet|BulletList|BypassBeginIndex|BypassChapReference\
|BypassContentsEntry|BypassEndIndex|BypassMajorContentsEntry\
|BypassNumber|BypassRawIndex|BypassReference|Caption\
|CaptionBreak|CaptionFont|CaptionFormat|CaptionPos|Case|CC\
|CCell|CCurve|CCurveArrow|CD|CDot|Cell|CenteredDisplay\
|CenteredList|CentredAlignedNumberedDisplay|CentredDisplay\
|CentredList|ChapCite|ChapRef|ChapRefListTitle\
|ChapterHeadingBreak|ChapterHeadingFont|ChapterHeadingFontand\
|ChapterHeadingFormat|ChapterInContents|ChapterNumbers\
|ChapterNumInDisplays|ChapterNumInTheorems|ChapterStartPages\
|ChapterStartPagesdetermineswhat|ChapterWord|Char|Circle\
|Cite|CL|Claim|ClaimWord|ClosedCircle|CNode|CNP|Code\
|Color|Colour|ColumnGap|ColumnGapmay|ColumnNumber|Com\
|Conjecture|ContentsGap|ContentsGapAbove|ContentsGapBelow\
|ContentsGoesHere|ContentsGoesHeresymbol|ContentsLeader\
|ContentsLeaderGap|ContentsRightWidth|ContentsSeparate\
|ContentsWord|CopyRight|Corollary|CoverSheet|CP|CPSetup\
|CrossLink|CrossLinkFormat|CtdWord|CTR|CurveArrow|CurveBox\
|Dagger|DaggerDbl|DashJoin|DashList|Database|Date\
|DateLine|DayNum|DefaultIndent|Definition|Degree|Diag\
|DiagSetup|Diagsymbol|Diamond|Display|DisplayGap\
|DisplayIndent|DisplayNumStyleoption|Diverted|Divide|DL\
|DLI|Doc|Document|DocumentSetup|DotJoin|DotJoinbut\
|DotSep|DoubleArrow|DoubleLine|DP|DropCapThree|DropCapTwo\
|DropListItem|DropTagItem|DTI|DWrapArrow|DWrapCurve\
|DWrapCurveArrow|DWrapLine|Edition|Eiffel|EL|Ellipse|End\
|EndAlignedDisplays|EndAppendices|EndChapters|EndHeaderRow\
|EndList|EndNote|EndOverheads|EndProof|EndSections\
|EndSubAppendices|EndSubSections|EndSubSubAppendices\
|EndSubSubSections|Eq|Eqsymbol|Euro|EvenFoot\
|EvenLeftBodyMargin|EvenLeftMargin|EvenRightBodyMargin\
|EvenRightMargin|EvenTop|Example|Figure|FigureCaptionBreak\
|FigureCaptionFont|FigureCaptionFormat|FigureCaptionPos\
|FigureFormat|FigureListWord|FigureLocation|FigureNumbers\
|FigureWord|FirstAppendixNumber|FirstLectureNumber\
|FirstOverheadNumber|FirstPageNumber|FirstRow|FirstRowa\
|FirstRowb|FirstSub|Florin|Fmta|Font|FootAboveGap\
|FootGap|FootLen|FootMargin|FootNote|FootNoteBreak\
|FootNoteFont|FootNoteFormat|FootNoteLocation|FootNoteNumbers\
|FootNoteThrough|Format|FullPage|FullWidthRule\
|FullWidthsymbols|Graph|GraphCircle|GraphCross|GraphDashed\
|GraphDiamond|GraphDotted|GraphFilledCircle|GraphFilledDiamond\
|GraphFilledSquare|GraphFilledTriangle|GraphNoLine|GraphPlus\
|GraphSolid|GraphSquare|Graphsymbol|GraphTriangle|GreyBox\
|HeaderFirstRow|HeaderFirstRowa|HeaderFirstRowb|HeaderRow\
|HeaderRowa|HeaderRowb|HeaderRowd|HeaderRowh\
|HeaderRowhsymbol|Heading|HeadingBox|HeadingFont|HExpand\
|High|Hour|HowPublished|HShift|HSpan|HTree|HVArrow\
|HVCurve|HVCurveArrow|HVLine|I|ID|If|II|IL\
|Illustration|InAuthor|Include|IncludeGraphic\
|IndentedDisplay|IndentedList|Index|IndexA|IndexBBlanks\
|IndexBlanks|IndexBreak|IndexColumnGap|IndexColumnNumber\
|IndexCtd|IndexCtdFormat|IndexCtdWord|IndexFont|IndexWord\
|InitialBreak|InitialColour|InitialFont|InitialLanguage\
|InitialSpace|InnerNote|Insert|Institution|InTitle\
|Introduction|IntroEvenFoot|IntroEvenTop|IntroFirstPageNumber\
|IntroOddFoot|IntroOddTop|IntroPageNumbers|IntroStartEvenFoot\
|IntroStartEvenTop|IntroStartOddFoot|IntroStartOddTop\
|Isosceles|Isymbol|Journal|Keywords|Label|Labeloption\
|Language|LD|Lecture|LectureHeadingFont|LectureHeadingFormat\
|LectureInContents|LectureNumbers|LeftDisplay|LeftList\
|LeftNote|LeftSub|Lemma|LI|Line|Link|List|ListGap\
|ListIndent|ListInterruptItem|ListItem|ListNewPage\
|ListOuterGap|ListRightIndent|ListTagWidth|LLP\
|LocalWidthRule|Location|Loop|LoopDiverted|LoopOpposite\
|LOP|Lozenge|LP|LVRArrow|LVRCurve|LVRCurveArrow|LVRLine\
|MajorNum|MajorTitle|MakeContents|MakeFigureContents\
|MakeIndex|MakeReferences|MarginNoteBreak|MarginNoteFont\
|MarginNoteHGap|MarginNoteVGap|MarginNoteWidth|MarkRow\
|MarkRowa|MeriDiem|MinorNum|MinorTitle|Minute|Modula\
|MonthNum|Multiply|MyLink|MyNode|NCP|NE|NextSub|NL\
|NoBreakRow|NoBreakRowa|NoBreakRowb|NoChapCite|NoChapRef\
|NoCite|Node|NoDotJoin|NoDotSep|NoRef|Note|NP|Null\
|NumberedDisplay|NumberedList|NumberOf|NumberSeparator\
|NumSep|NW|OddFoot|OddLeftBodyMargin|OddLeftMargin\
|OddPageTop|OddRightBodyMargin|OddRightMargin|OddTop|OneCol\
|OnePage|OneRow|OnTitlePage|Open|OpenCircle|OptimizePages\
|Optional|OptionalDiverted|OrdinarySetup|Organization\
|OrIfPlain|OuterNote|Outline|Overhead|OverheadHeadingFont\
|OverheadHeadingFormat|OverheadInContents|OverheadNumbers\
|OverheadSetup|OverheadTransparencies|OverStrike\
|PageBackground|PageBox|PageBoxLineWidth|PageBoxMargin\
|PageBoxPaint|PageBoxShadow|PageBoxType|PageEnclose\
|PageHeaders|PageHeight|PageMark|PageNumbersand|PageOf\
|PageOrientation|PageOrientationsymbol|Pages|PageType\
|PageWidth|PAL|ParaGap|ParaIndent|ParenAlphaList\
|ParenNumberedList|ParenRomanList|ParenUCAlphaList\
|ParenUCRomanList|ParSym|PartHeadingFormat|PartNumber\
|PartText|PartTitle|Pas|Perl|Pinpoint|Place|PNL|Pod\
|Poetry|Polygon|PP|PPsymbol|Preface|PrefaceAfterContents\
|PRL|Proof|Proposition|Publisher|PUCAL|PUCRL|Python|QD\
|QL|QQ|QuotedDisplay|QuotedList|RawAlignedDisplay\
|RawAlignedNumberedDisplay|RawCentredAlignedNumberedDisplay\
|RawEndList|RawIndex|RawList|RawNumberedList\
|RawParenRomanList|RawSubIndex|RawSubSubIndex\
|RawVerbatimsymbol|RCAND|RefCiteLabels|RefCiteStyle\
|ReferencesBeforeAppendices|ReferencesInContents|RefListBreak\
|RefListFont|RefListFormat|RefListGap|RefListIndent\
|RefListLabels|RefListLabelWidth|RefListLabelWidthdetermines\
|RefListLabelWidthsetup|RefListRightIndent|RefListSortKey\
|RefListTitle|RefNum|RefNumbers|RefPrint|RefStyle|Register\
|Repeat|RepeatDiverted|RepeatOpposite|Report|ReportSetup\
|RightDisplay|RightNote|RightSub|RightSubsymbol|RL|RNL\
|RomanList|Rotate|Rowa|Rowb|Rowc|Rowd|RR\
|RunningEvenFoot|RunningEvenTop|RunningIntroEvenFoot\
|RunningIntroEvenTop|RunningIntroOddFoot|RunningIntroOddTop\
|RunningIntroStartEvenFoot|RunningIntroStartEvenTop\
|RunningIntroStartOddFoot|RunningIntroStartOddTop|RunningOddFoot\
|RunningOddTop|RunningStartEvenFoot|RunningStartEvenTop\
|RunningStartOddFoot|RunningStartOddTop|RunningTitle\
|RunningTitleoption|RVLArrow|RVLCurve|RVLCurveArrow|RVLLine\
|Scale|SE|Second|Section|SectionGap|SectionHeadingFont\
|SectionInContents|SectionNumbers|SectionNumInFigures\
|SectionNumInTheorems|SectSym|Select|SeparateIntroNumbering\
|Sequence|SetColour|ShadowBox|ShortDay|ShortHour\
|ShortMeriDiem|ShortMonth|ShortYear|ShowDirections\
|ShowPoints|ShowTags|Skip|SL|SolidArrowHead|SomeText\
|Square|Star|StarList|StartDown|StartEvenFoot|StartEvenTop\
|StartHSpan|StartHVSpan|StartLeft|StartOddFoot|StartOddTop\
|StartRight|StartRightDown|StartRightRight|StartUp\
|StartVSpan|Sterling|StructPageNums|StubSub|Style|Sub\
|SubAppendixInContents|SubAppendixNumInRunners|SubIndex\
|SubSection|SubSectionInContents|SubSubAppendixInContents|SubSubIndex\
|SubSubSectionInContents|Sup|SW||Sym|SymGamma|Symmu\
|SymMu|Symmultiply|Symweierstrass|SyntaxDiag|SysDatabase\
|SysInclude|SysIncludecommand|Table|TableCaptionPos\
|TableFormat|TableLocation|TableNumbers|Tag|TaggedList|TagItem\
|Tan|Tbl|TblSetup|Text|Theorem|TheoremFormat\
|TheoremTitleFormat|TheoremWord|TI|Time|Title|TitleNote\
|TitlePageFont|TL|TopMargin|TradeMark|Tree|TRType|True\
|TwelveHour|Type|UCAL|UCAlphaList|UCRL|UCRomanList\
|Underline|Unpaginated|URL|Use|UWrapArrow|UWrapCurve\
|UWrapCurveArrow|UWrapLine|Verbatim|Verbatimsymbol\
|VeryWideIndent|VeryWideTaggedList|VExpand|VHArrow|VHCurve\
|VHCurveArrow|VHLine|Volume|VShift|VSpan|VWTL|WideIndent\
|WideTaggedList|Word|WTL|XCell|Year|Yen|Yield\
|ZeroWidthLeftSub|ZeroWidthRightSub)
################################################################

# GNU Awk mode, by Abel Morabito <abel.morabito@gmail.com>
/*.awk
c3,2=#.*$
c2,2=[^\\]("([^"\\]|\\\\(.|\n))*"|'([^'\\]|\\\\(.|\n))*')
c1,4=([^[:alnum:]/_]|^)(if|while|do|for|in|break|continue|switch\
|case|default|asort|asorti|index|length|match|split|sprintf\
|strtonum|sub|gsub|gensub|substr|tolower|toupper|return|exit|next\
|getline|print|printf|nextfile\
|ARGV|ARGC|CONVFMT|ENVIRON|FILENAME|FNR|FS|NF|NR|OFMT|OFS|ORS\
|RLENGTH|RSTART|RS|SUBSEP|ARGIND|BINMODE|ERRNO|FIELDWIDTHS|IGNORECASE\
|LINT|PROCINFO|RT|TEXTDOMAIN|BEGIN|END\
)([^[:alnum:]/_]|$)
c2,1=\[|\]|\$|\^|\+|\/|=|~|!|{|}|<|>|;|\(|\)|\|

# GEMA mode, by Abel Morabito <abel.morabito@gmail.com>
# /*.gma|*.gema
/*.gma|*.gema|/^#![ \t]*/.*/\gema
c3,1=(^!.*$)|([^\\]!.*$)
c2,4=([^\\])(\*|?|#|=|\$|(\\\)|\^|;|@|:|<|>|/|{|})
c1,4=(@)(abort|add|and|append|bind|center|char-int|close|cmpi|cmpn|cmps\
|column|date|datime|decr|define|div|downcase|end|err|exit-status\
|expand-wild|fail|file|file-time|fill-center|fill-left|fill-right\
|getenv|get-switch|incr|inpath|int-char|left|length|line|makepath\
|mergepath|mod|mul|name|not|or|out|out-column|outpath|pop|probe\
|push|quote|radix|read|relative-path|repeat|reset-syntax\
|reverse|right|set|set-locale|set-parm|set-switch|set-syntax|set-wrap\
|shell|show-help|special-character|sub|subst|substring|tab|terminate\
|time|unbind|undefine|upcase|var|version|wrap|write)($|{|;| )
c1,4=(\\\)(a|b|d|e|f|n|r|s|t|v|A|B|C|E|G|I|J|L|N|P|S|W|X|Z)
c1,4=(\\\)((x[[:xdigit:]]+)|([0-7]+)|(c[[:alpha:]]))
c1,4=(\$)([[:digit:]]+|[[:alpha:]])
ci1,4=(<)((-?)(A|C|D|F|G|I|J|K|L|N|O|P|S|T|U|W|X|Y)([[:digit:]]*))(>)

# Perl mode, by Vladislav Zhuk <admin@dru.dn.ua>
/*.pl|/^#![ \t]*/.*/\perl\|-\*- *perl *-\*-
c3,4=(^|[^$])(#.*)$
c3,2=[^\\]("([^"\\]|\\\\(.|\n))*"|'([^'\\]|\\\\(.|\n))*')
c1,4=([^[:alnum:]_\$@#]|^)(abs|accept|alarm|atan2|bind|binmode|bless|caller\
|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|cos|crypt\
|dbmclose|dbmopen|define|delete|die|do|dump|each|eof|eval|exec|exists|exit|exp\
|fcntl|fileno|flock|fock|for|foreach|format|formline|getc|getlogin|getpeername\
|getpgrp|getppid|getpriority|getsockname|getsockopt|glob|gmtime|goto|grep\
|hex|if|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link\
|listen|local|localtime|log|lstat|map|mkdir|msgctl|msgget|msgsnd|msgrcv|my|next\
|no Module|oct|open|opendir|ord|pack|pipe|pop|pos|(s)?print(f)?|push|quotemeta\
|rand|read|readdir|readline|readlink|recv|redo|ref|rename|require|reset|return|reverse\
|rewindir|rindex|rmdir|scalar|seek|seekdir|select|select( RBITS| WBITS| EBITS| TIMEOUT)?\
|semctl|semget|semop|send|setpgrp|setpriority|setsockopt|shift|shmget|shmget\
|shmread|shutdown|sin|sleep|soket|soketpair|sort|splice|split|sqrt\
|srand|stat|study|substr|symlink|syscall|sysread|system|syswrite|tell|telldir\
|tie|time|times|truncate|uc|ucfirst|umask|undef|unless|unlink|unpack|untie|unshift\
|use|utime|values|vec|wait|waitpid|wantarray|warn|while|write|else|elsif\
|package|sub|BEGIN|END|INIT|CHECK|socket|defined|our\
)([^[:alnum:]/_]|$)
c1,2=\\\\(my|our)([^[:alnum:]/_]|$)
c2,1={|}|<<|<|>>|>|;;|;|\(|\)|=|=~|!=|&&|\|\||!|\.\.|<=>|&|^|->
c2,4=([ \t)]|^)(and|or|xor|eq|ne|cmp|lt|gt|le|ge)([ \t(]|$)
c2,4=([ \t(]|^)(not)([ \t(]|$)

# PL/SQL mode, by Serge Vakulenko <vak@cronyx.ru>
/*.sql|*.buf
c3,1=--.*$|/\\*([^*]|\\*[^/])*\\*/
c3,1="([^"\n\\]|\\\\.)*"|'([^\n'\\]|\\\\.)*'
ci1,4=([^[:alnum:]_]|^)(\
abort|accept|access|add|all|alter|and|any|array|arraylen|as|asc|assert|\
assign|at|audit|authorization|avg|base_table|begin|between|binary_integer|\
body|boolean|by|case|char|char_base|check|close|cluster|clusters|colauth|\
column|columns|comment|commit|compress|connect|constant|count|crash|create|\
current|cursor|curval|database|data_base|date|dba|debugoff|debugon|decimal|\
declare|default|definition|delay|delete|delta|desc|digits|dispose|distinct|\
do|drop|else|elsif|end|entry|exception|exception_init|exclusive|exists|exit|\
false|fetch|file|float|for|form|from|function|generic|goto|grant|group|\
having|identified|if|immediate|in|increment|index|indexes|indicator|initial|\
insert|integer|interface|intersect|into|is|level|like|limited|lock|long|\
loop|max|maxextents|min|minus|mlslabel|mod|mode|modify|natural|naturaln|\
new|nextval|noaudit|nocompress|not|nowait|null|number|number_base|of|\
offline|on|online|open|option|or|order|others|out|package|partition|pctfree|\
pls_integer|positive|positiven|pragma|prior|private|privileges|procedure|\
public|raise|range|raw|real|record|ref|release|rem|rename|resource|return|\
reverse|revoke|rollback|row|rowid|rowlabel|rownum|rows|rowtype|run|\
savepoint|schema|select|separate|session|set|share|size|smallint|space|sql|\
sqlcode|sqlerrm|start|statement|stddev|subtype|successful|sum|synonym|\
sysdate|tabauth|table|tables|task|terminate|then|to|trigger|true|type|uid|\
union|unique|update|use|user|validate|values|varchar|varchar2|variance|view|\
views|when|whenever|where|while|with|work|write|xor|\
constraint|foreign|key|references|primary|using|decode|replace|enable|disable\
)([^[:alnum:]_]|$)
c2,1=\||\)|\(|:=|=|\|\||<|>|!=

# SNMP MIB mode, by Serge Vakulenko <vak@cronyx.ru>
/*.mib|*.smi
c3,1=--.*$|/\\*([^*]|\\*[^/])*\\*/
c3,1="([^"\\]|\\\\.)*"|'([^\n'\\]|\\\\.)*'
c1,4=([^[:alnum:]_]|^)(\
BEGIN|END|DEFINITIONS|OBJECT-TYPE|OBJECT|OBJECTS|IDENTIFIER|FROM|SIZE|INDEX|\
IMPORTS|SYNTAX|ACCESS|STATUS|DESCRIPTION|INTEGER|SEQUENCE|OF|OCTET|STRING|\
TRAP-TYPE|ENTERPRISE|VARIABLES|NOTIFICATION-TYPE|MODULE-IDENTITY|\
OBJECT-IDENTITY|MAX-ACCESS|OBJECT-GROUP|NOTIFICATION-GROUP|MODULE-COMPLIANCE|\
TEXTUAL-CONVENTION|REVISION|LAST-UPDATED|ORGANIZATION|CONTACT-INFO|\
DISPLAY-HINT|NOTIFICATIONS|MODULE|MANDATORY-GROUPS|GROUP\
)([^[:alnum:]_]|$)
c2,1=\||\)|\(|::=|=|\|\||{|}|;

# Texinfo mode, by Serge Vakulenko <vak@cronyx.ru>
/*.texi|-\*- *texinfo *-\*-
#c3,1="([^"\n\\]|\\\\(.|\n))*"|'([^'\n\\]|\\\\.)*'
#c3,1=^[ \t]*#([^\\\n]|\\\\(.|\n))*$
c3,1=^[ \t]*@c\W.*$
#c3,1=/\\*([^*]|\\*[^/])*\\*/
c1,4=([^[:alnum:]_@]|^)(@[[:alnum:]]*\
)([^[:alnum:]_]|$)
c2,1={|}

# Tex mode, by Serge Vakulenko <vak@cronyx.ru>
/*.tex
#c3,1="([^"\n\\]|\\\\(.|\n))*"|'([^'\n\\]|\\\\.)*'
#c3,1=^[ \t]*#([^\\\n]|\\\\(.|\n))*$
c3,1=%.*$
#c3,1=/\\*([^*]|\\*[^/])*\\*/
c1,4=()(\\\\[[:alnum:]]*)([^[:alnum:]_]|$)
c2,1={|}|\[|\]

# PHP mode, by Serge Vakulenko <vak@cronyx.ru>
/*.php3|*.php
c3,1=#.*$|//.*$|/\\*([^*]|\\*[^/])*\\*/
c3,1="([^"\\]|\\\\(.|\n))*"|'([^'\\]|\\\\(.|\n))*'
c1,4=([^[:alnum:]_]|^)(if|elseif|else|for|foreach|in|break|continue|while|var\
|function|class|return|global|in|or|and|not\
)([^[:alnum:]_]|$)
c2,1=:|\$|->

# Tcl mode, by Serge Vakulenko <vak@cronyx.ru>
/*.tcl|/^#![ \t]*/.*/tcl\|-\*- *tcl *-\*-
c3,1=#.*$
c3,1="([^"\\]|\\\\(.|\n))*"|'([^'\\]|\\\\(.|\n))*'
c1,4=([^[:alnum:]/_]|^)(break|case|continue|exit|for|foreach|if|return\
|switch|while|set|eval|proc|global|else|elseif|default\
)([^[:alnum:]/_]|$)
c2,1={|}|\[|\]|\$|;|\(|\)|\|

# Metafont mode, by Serge Vakulenko <vak@cronyx.ru>
/*.mf|*.mp
c3,1=%.*$
c3,2=[^\\]("([^"\\]|\\\\(.|\n))*")
c1,4=([^[:alnum:]/_]|^)(if|else|elif|fi|lft|rt|top|bot|iff|not\
|def|vardef|enddef|suffix|whatever|expr\
|fill|draw|filldraw|pickup|let|beginchar|endchar\
)([^[:alnum:]/_]|$)
c2,1=:=|\(|\)|#|=|;|\[|]|---|--|\.\.\.|\.\.|{|}|,

# Patch mode, by Serge Vakulenko <vak@cronyx.ru>
/*.pch|*.diff|*.patch
c3,1=^\+\+.*$
c3,1=^--.*$
c3,1=^@@.*$
c2,1=^(\+|-)

# Generic configuration files, by Serge Vakulenko <vak@cronyx.ru>
/*.conf|*.cf|*.cfg|Makefile|makefile
c3,1=#.*$
#c1,4=([^[:alnum:]_]|^)(if|elseif|else|for|in|break|continue|while|var\
#|function|class|return|global|in|or|and|not\
#)([^[:alnum:]_]|$)
#c2,1=:|\$|->

# Verilog mode, by Serge Vakulenko <vak@cronyx.ru>
/*.v|/-\*- *verilog *-\*-
c3,1="([^"\n\\]|\\\\(.|\n))*"
c3,2=`[ \t]*(include[ \t]*"[^"\n]*"|define*)
c3,1=//.*$|/\\*([^*]|\\*[^/])*\\*/
c1,4=([^[:alnum:]_]|^)(always|and|assign|attribute|begin|buf|bufif0|bufif1\
|case|casex|casez|cmos|deassign|default|defparam|disable|edge|else|end\
|endattribute|endcase|endfunction|endmodule|endprimitive|endspecify|endtable\
|endtask|event|for|force|forever|fork|function|highz0|highz1|if|ifnone\
|initial|inout|input|integer|join|medium|module|large|macromodule|nand\
|negedge|nmos|nor|not|notif0|notif1|or|output|parameter|pmos|posedge\
|primitive|pull0|pull1|pulldown|pullup|rcmos|real|realtime|reg|release\
|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|signed|small|specify\
|specparam|strength|strong0|strong1|supply0|supply1|table|task|time|tran\
|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|unsigned|vectored|wait\
|wand|weak0|weak1|while|wire|wor|xnor|xor\
)([^[:alnum:]_]|$)
c2,1=\\[|\\]|\\(|\\)|{|}|,|@|<=
