codekingpro/portable-devtools
114k
1" Vim syntax file2" Language: Leex (Erlang Lexical Analyzer Generator)3" Maintainer: Jon Parise <jon@indelible.org>4" Last Change: 2025 Nov 305" Filenames: *.xrl6"7" References:8" - https://www.erlang.org/doc/apps/parsetools/leex.html9 10if exists('b:current_syntax')11 finish12endif13 14syn include @leexErlang syntax/erlang.vim15unlet! b:current_syntax16 17syn match leexComment "%.*$" contains=@Spell display18 19syn match leexRegexOperator "[|*+?]" contained display20syn match leexRegexDelimiter "[()[\]]" contained display21syn match leexRegexSpecial "[.^$\\]" contained display22syn match leexRegexEscape '\\\%([bfnrtevsd]\|\o\{1,3}\|x\x\{2}\|x{\x\+}\|.\)' contained display23syn match leexRegexRange "\[[^\]]*\]" contains=leexRegexDelimiter,leexRegexEscape contained display24 25" Macro definitions: NAME = VALUE26syn match leexMacroName "^\s*\zs\h\w*\ze\s\+=\s\+" contained nextgroup=leexMacroEquals skipwhite display27syn match leexMacroEquals "=" contained nextgroup=leexMacroValue skipwhite display28syn match leexMacroValue "\S\+" contained contains=leexRegexOperator,leexRegexDelimiter,leexRegexSpecial,leexRegexEscape,leexRegexRange,leexMacroRef display29syn match leexMacroRef "{\h\w*}" contained display30 31" Rule definitions: <Regexp> : <Erlang code>.32syn match leexRuleRegex "^\s*\zs[^%].\{-}\ze\s\+:" contained contains=leexRegexOperator,leexRegexDelimiter,leexRegexSpecial,leexRegexEscape,leexRegexRange,leexMacroRef nextgroup=leexRuleColon skipwhite display33syn match leexRuleColon ":" contained nextgroup=leexRuleCode skipwhite skipnl display34syn region leexRuleCode start="" end="\.\s*\%(%.*\)\?$" skip="^\s*%.*$" contained contains=@leexErlang keepend skipnl skipwhite35 36" Sections37syn match leexHeading "^\%(Definitions\|Rules\|Erlang code\)\.$" contained display38syn region leexDefinitions start="^Definitions\.$" end="^[A-Z][A-Za-z ]*\.$"me=s-1 end="\%$" keepend fold39 \ contains=leexHeading,leexComment,leexMacroName40syn region leexRules start="^Rules\.$" end="^[A-Z][A-Za-z ]*\.$"me=s-1 end="\%$" keepend fold41 \ contains=leexHeading,leexComment,leexRuleRegex42syn region leexErlangCode start="^Erlang code\.$" end="^[A-Z][A-Za-z ]*\.$"me=s-1 end="\%$" keepend fold43 \ contains=leexHeading,@leexErlang44 45hi def link leexComment Comment46hi def link leexHeading PreProc47 48hi def link leexRegexOperator Operator49hi def link leexRegexDelimiter Delimiter50hi def link leexRegexSpecial Special51hi def link leexRegexRange String52hi def link leexRegexEscape SpecialChar53 54hi def link leexMacroName Identifier55hi def link leexMacroEquals Operator56hi def link leexMacroValue String57hi def link leexMacroRef Macro58 59hi def link leexRuleColon Operator60 61syn sync fromstart62 63let b:current_syntax = 'leex'64 