mirror of
https://github.com/johnkerl/miller.git
synced 2026-01-23 02:14:13 +00:00
148 lines
5.7 KiB
VimL
148 lines
5.7 KiB
VimL
" " Copyright 2021 John Kerl. All rights reserved.
|
|
" " Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
|
|
" "
|
|
" " mlr.vim: Vim syntax file for the Miller DSL.
|
|
"
|
|
if exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
syn case match
|
|
|
|
" ----------------------------------------------------------------
|
|
" Goal: map the lexical elements of the Miller DSL grammar in mlr.bnf
|
|
" to Vim syntax options
|
|
" http://vimdoc.sourceforge.net/htmldoc/syntax.html
|
|
" ----------------------------------------------------------------
|
|
|
|
" ----------------------------------------------------------------
|
|
syn region mlrComment start="#" end="$"
|
|
syn region mlrString start=+"+ skip=+\\\\\|\\"+ end=+"+
|
|
syn keyword mlrBoolean true false
|
|
syn match mlrDecimalInt "\(\<[0-9][0-9]*\>\)"
|
|
syn match mlrHexadecimalInt "\(\<0x[0-9a-fA-F][0-9a-fA-F]*\>\)"
|
|
syn match mlrBinaryInt "\(\<0b[01][01]*\>\)"
|
|
|
|
syn match mlrFloat "\.[0-9][0-9]*"
|
|
syn match mlrFloat "[0-9][0-9]*\."
|
|
syn match mlrFloat "[0-9][0-9]*\.[0-9][0-9]*"
|
|
syn match mlrFloat "[0-9][0-9]*\.[0-9]*"
|
|
syn match mlrFloat "\([0-9][0-9]*[eE][0-9][0-9]*\)"
|
|
syn match mlrFloat "\([0-9][0-9]*[eE]-[0-9][0-9]*\)"
|
|
syn match mlrFloat "\([0-9][0-9]*\.[0-9]*[eE][0-9][0-9]*\)"
|
|
syn match mlrFloat "\([0-9][0-9]*\.[0-9]*[eE]-[0-9][0-9]*\)"
|
|
syn match mlrFloat "\([0-9]*\.[0-9][0-9]*[eE][0-9][0-9]*\)"
|
|
syn match mlrFloat "\([0-9]*\.[0-9][0-9]*[eE]-[0-9][0-9]*\)"
|
|
|
|
syn keyword mlrConstant M_PI M_E
|
|
syn keyword mlrContextVariable IPS IFS IRS OPS OFS ORS OFLATSEP NF NR FNR FILENAME FILENUM
|
|
syn keyword mlrENV ENV
|
|
|
|
syn keyword mlrType arr bool float int map num str var
|
|
syn keyword mlrKeyword begin do elif else end filter for if in while break continue return
|
|
syn keyword mlrKeyword func subr call dump edump
|
|
syn keyword mlrKeyword emit emitp emitf eprint eprintn print printn tee stdout stderr unset null
|
|
syn match mlrFieldName /\(\$\<[a-zA-Z_][a-zA-Z_0-9]*\>\)/
|
|
syn match mlrFieldName /\(\$\*\)/
|
|
syn match mlrOosvarName /\(@\<[a-zA-Z_][a-zA-Z_0-9]*\>\)/
|
|
syn match mlrOosvarName /\(@\*\)/
|
|
syn match mlrIdentifier /\(\<[a-zA-Z_][a-zA-Z_0-9]*\>\)/
|
|
syn match mlrFunctionCall /\(\<[a-zA-Z_][a-zA-Z_0-9]*\>\)[ \t]*(/
|
|
|
|
syn region mlrParen start='(' end=')' transparent
|
|
syn region mlrBlock start="{" end="}" transparent
|
|
|
|
" Trailing whitespace; space-tab
|
|
syn match mlrSpaceError display excludenl "\s\+$"
|
|
syn match mlrSpaceError display " \+\t"me=e-1
|
|
|
|
syn match mlrOperator /!/
|
|
syn match mlrOperator /%/
|
|
syn match mlrOperator /&/
|
|
syn match mlrOperator /\*/
|
|
syn match mlrOperator /+/
|
|
syn match mlrOperator /-/
|
|
syn match mlrOperator /\./
|
|
syn match mlrOperator /\//
|
|
syn match mlrOperator /:/
|
|
syn match mlrOperator /</
|
|
syn match mlrOperator />/
|
|
syn match mlrOperator /?/
|
|
syn match mlrOperator /\^/
|
|
syn match mlrOperator /|/
|
|
syn match mlrOperator /\~/
|
|
syn match mlrOperator /!=/
|
|
syn match mlrOperator /&&/
|
|
syn match mlrOperator /\*\*/
|
|
syn match mlrOperator /\.\*/
|
|
|
|
syn match mlrOperator /\.+/
|
|
syn match mlrOperator /\.+/
|
|
syn match mlrOperator /\.-/
|
|
syn match mlrOperator /\.-/
|
|
syn match mlrOperator /\.\//
|
|
syn match mlrOperator /\/\//
|
|
syn match mlrOperator /<</
|
|
syn match mlrOperator /<=/
|
|
syn match mlrOperator /==/
|
|
syn match mlrOperator /=\~/
|
|
syn match mlrOperator />=/
|
|
syn match mlrOperator />>/
|
|
syn match mlrOperator /??/
|
|
syn match mlrOperator /^^/
|
|
syn match mlrOperator /||/
|
|
syn match mlrOperator /!=\~/
|
|
syn match mlrOperator /\.\/\//
|
|
syn match mlrOperator />>>/
|
|
syn match mlrOperator /???/
|
|
syn match mlrOperator /%=/
|
|
syn match mlrOperator /&=/
|
|
syn match mlrOperator /\*=/
|
|
syn match mlrOperator /+=/
|
|
syn match mlrOperator /-=/
|
|
syn match mlrOperator /\.=/
|
|
syn match mlrOperator /\/=/
|
|
syn match mlrOperator /^=/
|
|
syn match mlrOperator /|=/
|
|
syn match mlrOperator /&&=/
|
|
syn match mlrOperator /\*\*=/
|
|
syn match mlrOperator /\/\/=/
|
|
syn match mlrOperator /<<=/
|
|
syn match mlrOperator />>=/
|
|
syn match mlrOperator /??=/
|
|
syn match mlrOperator /^^=/
|
|
syn match mlrOperator /||=/
|
|
syn match mlrOperator />>>=/
|
|
syn match mlrOperator /???=/
|
|
|
|
" ----------------------------------------------------------------
|
|
hi def link mlrConstant Constant
|
|
hi def link mlrString String
|
|
hi def link mlrBoolean Boolean
|
|
hi def link mlrNumber Number
|
|
hi def link mlrFloat Float
|
|
hi def link mlrInteger Number
|
|
|
|
hi def link mlrComment Comment
|
|
hi def link mlrKeyword Keyword
|
|
hi def link mlrContextVariable Keyword
|
|
hi def link mlrENV Keyword
|
|
hi def link mlrError Error
|
|
hi def link mlrSpecial Special
|
|
hi def link mlrType Type
|
|
|
|
hi def link mlrDecimalInt Number
|
|
hi def link mlrHexadecimalInt Number
|
|
hi def link mlrBinaryInt Number
|
|
hi def link mlrFieldName Special
|
|
hi def link mlrOosvarName Special
|
|
hi def link mlrIdentifier Identifier
|
|
hi def link mlrFunctionCall Type
|
|
hi def link mlrSpaceError Error
|
|
|
|
hi def link mlrOperator Operator
|
|
|
|
" ----------------------------------------------------------------
|
|
syn sync minlines=200
|
|
|
|
let b:current_syntax = "mlr"
|