149 lines
5.9 KiB
VimL
149 lines
5.9 KiB
VimL
" Vim syntax file
|
|
" Language: JFlex
|
|
" Maintainer: Gerwin Klein <lsf@jflex.de>
|
|
" Last Change: $Revision: 50 $, $Date: 2003-06-08 21:01:12 +1000 (Sun, 08 Jun 2003) $
|
|
|
|
" Thanks to Michael Brailsford for help and suggestions
|
|
|
|
" Quit when a syntax file was already loaded {{{
|
|
if exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
"}}}
|
|
|
|
" Include java syntax {{{
|
|
if version >= 600
|
|
runtime! syntax/java.vim
|
|
unlet b:current_syntax
|
|
else
|
|
so $VIMRUNTIME/syntax/java.vim
|
|
endif
|
|
"}}}
|
|
|
|
syn cluster jflexOptions contains=jflexOption,jflexCodeInclude,jflexComment,jflexMacroIdent,jflexMacroRegExp,jflexOptionError
|
|
syn cluster jflexRules contains=jflexRule,jflexComment,jflexActionCode,jflexRuleStates,jflexRegExp
|
|
|
|
" java code section
|
|
syn region jflexStart start="/\*\|//\|import\|package\|class"me=s end="^%%"me=e-2 contains=@javaTop nextgroup=jflexOptionReg
|
|
|
|
" %%
|
|
" options
|
|
syn region jflexOptionReg matchgroup=jflexSectionSep start="^%%" end="^%%"me=e-2 contains=@jflexOptions nextgroup=jflexRulesReg
|
|
|
|
syn match jflexOptionError "%\i*" contained
|
|
|
|
syn match jflexOption "^\(%s\|%x\)" contained
|
|
syn match jflexOption "^%state" contained
|
|
syn match jflexOption "^%states" contained
|
|
syn match jflexOption "^%xstate" contained
|
|
syn match jflexOption "^%xstates" contained
|
|
syn match jflexOption "^%char" contained
|
|
syn match jflexOption "^%line" contained
|
|
syn match jflexOption "^%column" contained
|
|
syn match jflexOption "^%byaccj" contained
|
|
syn match jflexOption "^%cup" contained
|
|
syn match jflexOption "^%cupsym" contained
|
|
syn match jflexOption "^%cupdebug" contained
|
|
syn match jflexOption "^%eofclose" contained
|
|
syn match jflexOption "^%class" contained
|
|
syn match jflexOption "^%function" contained
|
|
syn match jflexOption "^%type" contained
|
|
syn match jflexOption "^%integer" contained
|
|
syn match jflexOption "^%int" contained
|
|
syn match jflexOption "^%intwrap" contained
|
|
syn match jflexOption "^%yyeof" contained
|
|
syn match jflexOption "^%notunix" contained
|
|
syn match jflexOption "^%7bit" contained
|
|
syn match jflexOption "^%8bit" contained
|
|
syn match jflexOption "^%full" contained
|
|
syn match jflexOption "^%16bit" contained
|
|
syn match jflexOption "^%unicode" contained
|
|
syn match jflexOption "^%caseless" contained
|
|
syn match jflexOption "^%ignorecase" contained
|
|
syn match jflexOption "^%implements" contained
|
|
syn match jflexOption "^%extends" contained
|
|
syn match jflexOption "^%public" contained
|
|
syn match jflexOption "^%apiprivate" contained
|
|
syn match jflexOption "^%final" contained
|
|
syn match jflexOption "^%abstract" contained
|
|
syn match jflexOption "^%debug" contained
|
|
syn match jflexOption "^%standalone" contained
|
|
syn match jflexOption "^%switch" contained
|
|
syn match jflexOption "^%table" contained
|
|
syn match jflexOption "^%pack" contained
|
|
syn match jflexOption "^%include" contained
|
|
syn match jflexOption "^%buffer" contained
|
|
syn match jflexOption "^%initthrow" contained
|
|
syn match jflexOption "^%eofthrow" contained
|
|
syn match jflexOption "^%yylexthrow" contained
|
|
syn match jflexOption "^%throws" contained
|
|
syn match jflexOption "^%scannerror" contained
|
|
|
|
syn match jflexMacroIdent "\I\i*\s*="me=e-1 contained nextgroup=jflexMacroRegExp
|
|
|
|
syn region jflexMacroRegExp matchgroup=jflexOperator start="=" end="^\(%\|\I\|\i\|/\)"me=e-1 contains=NONE contained
|
|
|
|
syn region jflexCodeInclude matchgroup=jflexCodeIncludeMark start="^%{" end="^%}" contains=@javaTop contained
|
|
syn region jflexCodeInclude matchgroup=jflexCodeIncludeMark start="^%init{" end="^%init}" contains=@javaTop contained
|
|
syn region jflexCodeInclude matchgroup=jflexCodeIncludeMark start="^%initthrow{" end="^%initthrow}" contains=@javaTop contained
|
|
syn region jflexCodeInclude matchgroup=jflexCodeIncludeMark start="^%eof{" end="^%eof}" contains=@javaTop contained
|
|
syn region jflexCodeInclude matchgroup=jflexCodeIncludeMark start="^%eofthrow{" end="^%eofthrow}" contains=@javaTop contained
|
|
syn region jflexCodeInclude matchgroup=jflexCodeIncludeMark start="^%yylexthrow{" end="^%yylexthrow}" contains=@javaTop contained
|
|
syn region jflexCodeInclude matchgroup=jflexCodeIncludeMark start="^%eofval{" end="^%eofval}" contains=@javaTop contained
|
|
|
|
" rules (end pattern shouldn't occur, if it does anyway we just stay in jflexRulesReg)
|
|
syn region jflexRulesReg matchgroup=jflexSectionSep start="^%%" end="^%%"me=e-2 contains=@jflexRules
|
|
|
|
" at first everything but strings is a regexp
|
|
syn match jflexRegExp "\([^\" \t]\|\\\"\)\+" contained
|
|
|
|
" take out comments
|
|
syn match jflexComment "//.*" contained
|
|
syn region jflexComment start="/\*" end="\*/" contained contains=jflexComment
|
|
|
|
" lex states
|
|
syn match jflexRuleStates "<\s*\I\i*\(\s*,\s*\I\i*\)*\s*>" contained skipnl skipwhite nextgroup=jflexStateGroup
|
|
|
|
" action code (only after states braces and macro use)
|
|
syn region jflexActionCode matchgroup=Delimiter start="{" end="}" contained contains=@javaTop,jflexJavaBraces
|
|
|
|
" macro use
|
|
syn match jflexRegExp "{\s*\I\i*\s*}" contained
|
|
|
|
" state braces (only active after <state>)
|
|
syn region jflexStateGroup matchgroup=jflexRuleStates start="{$" start="{\s" end="}" contained contains=@jflexRules
|
|
|
|
" string
|
|
syn region jflexRegExp matchgroup=String start=+"+ skip=+\\\\\|\\"+ end=+"+ contained
|
|
|
|
" not to be confused with a state
|
|
syn match jflexRegExp "<<EOF>>" contained
|
|
|
|
" escape sequence
|
|
syn match jflexRegExp "\\." contained
|
|
|
|
|
|
" keep braces in actions balanced
|
|
syn region jflexJavaBraces start="{" end="}" contained contains=@javaTop,jflexJavaBraces
|
|
|
|
|
|
" syncing
|
|
syn sync clear
|
|
syn sync minlines=10
|
|
syn sync match jflexSync grouphere jflexOptionReg "^%[a-z]"
|
|
syn sync match jflexSync grouphere jflexRulesReg "^<"
|
|
|
|
|
|
" highlighting
|
|
hi link jflexOption Special
|
|
hi link jflexMacroIdent Ident
|
|
hi link jflexMacroRegExp Macro
|
|
hi link jflexOptionError Error
|
|
hi link jflexComment Comment
|
|
hi link jflexOperator Operator
|
|
hi link jflexRuleStates Special
|
|
hi link jflexRegExp Function
|
|
hi jflexSectionSep guifg=yellow ctermfg=yellow guibg=blue ctermbg=blue gui=bold cterm=bold
|
|
hi link jflexCodeIncludeMark jflexSectionSep
|
|
|
|
let b:current_syntax="jflex"
|