You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
4.0 KiB
VimL

" if exists("b:current_syntax")
" finish
" endif
" let b:current_syntax = "uiua"
" syn iskeyword a-z
" syn keyword uiuaIdentifier e os family arch ExeExt DllExt sep
" syn match uiuaIdentifier '[a-zA-Z]\+'
" " {{{ functions and modifiers
" " constants
" syn keyword uiuaNoadic eta pi tau inf[inity] rand[om] tag now
" syn match uiuaNoadic '[ηπ∞τ⚂]'
" " monadic and dyadic pervasive functions
" syn keyword uiuaPervasive not sig[n] abs[olute] sqr[t] sin[e] flo[or] cei[ling] rou[nd] add subtract multiply divide mod[ulus] pow[er] log[arithm] min[imum] max[imum] ata[ngent]
" syn match uiuaPervasive '[¬±`¯⌵√○⌊⌈⁅]\|!=\|<=\|>=\|[=≠<≤>≥+\-×*÷%◿ⁿₙ↧↥∠]'
" " monadic array functions
" syn keyword uiuaMonadic len[gth] sha[pe] rang[e] fir[st] rev[erse] des[hape] bit[s] tra[nspose] ris[e] fal[e] whe[re] cla[ssify] ded[uplicate] box unb[ox] bre[ak] rec[ur] wait call parse gen type sig
" syn match uiuaMonadic '[⧻△⇡⊢⇌♭⋯⍉⍏⍖⊚⊛⊝□⊔!⎋↬]'
" " dyadic array functions
" syn keyword uiuaDyadic joi[n] cou[ple] mat[ch] pic[k] sel[ect] resh[ape] tak[e] dro[p] rot[ate] win[dows] kee[p] fin[d] mem[ber] ind[exof] ass[ert] deal
" syn match uiuaDyadic '[⊂⊟≅⊡⊏↯↙↘↻◫▽⌕∊⊗⍤]'
" " monadic modifiers
" syn keyword uiuaMonadicMod di[p] ga[p] eac[h] row[s] dis[tribute] tab[le] cro[ss] rep[eat] reduce fol[d] scan gro[up] par[tition] inv[ert] bot[h] spawn
" syn match uiuaMonadicMod '[⊙⋅∵≡∺⊞⊠⍥/∧⊕⊜\\⍘∩]'
" " dyadic and triadic modifiers
" syn keyword uiuaOtherMod lev[el] und[er] fil[l] bind bra[cket] for[k] try if
" syn match uiuaOtherMod /[⍚⍜⬚'⊓⊃⍣?]/
" " }}}
" " {{{ system functions
" " defined in inverse order so precedence for e.g.
" " &i and &ime, &s and &sc, etc. is correct
" " modules
" syn keyword uiuaModuleSF use
" syn match uiuaModuleSF '&i'
" syn match uiuaDyadicSF '\v\&(rs|rb|ru|w|fwa|ime|ae|tcpsrt|tcpswt|httpsw)'
" syn match uiuaMonadicSF '\v\&(sl|s|pf|p|var|runi|runc|cd|cl|fo|fc|fe|fld|fif|fras|frab|fwa|imd|ims|gife|ad|ap|ast|tcpl|tcpa|tcpc|tcpsnb|tcpaddr)'
" syn match uiuaNoadicSF '\v\&(sc|ts|args|asr)'
" " }}}
" " {{{ literals
" " numeric literal
" syn match uiuaNum '[¯`]\?\d\+\(\.\d\+\)\?\(e[¯`]\?\d\+\)\?'
" " escape sequence and format placeholder
" syn match uiuaEsc contained /\\[\\'"_0nrt]/
" syn match uiuaFmt contained '_'
" " character literal
" syn match uiuaChar '@.' contains=uiuaEsc
" " string literal (plain, format, and multiline)
" syn region uiuaStr start='"' end='"' skip='\\"' contains=uiuaEsc
" syn region uiuaStr start='\$"' end='"' skip='\\"' contains=uiuaEsc,uiuaFmt
" syn region uiuaStr start='\$ ' end='$' contains=uiuaEsc,uiuaFmt
" " }}}
" " {{{ misc
" " function signatures
" syn match uiuaSignature '|\d\+\(\.\d\+\)\?'
" " scopes, <- assignments, and stranded arrays
" syn match uiuaFaded '^---$\|[←_]'
" " debug functions
" syn keyword uiuaDebug dump
" syn match uiuaDebug '[~]'
" " comments
" syn match uiuaComment '#.*$'
" " }}}
" " {{{ highlight groups
" hi def link uiuaNoadic Keyword
" hi def link uiuaNoadicSF Keyword
" hi def link uiuaPervasive Operator
" hi def link uiuaMonadic Function
" hi def link uiuaMonadicSF Function
" hi def link uiuaDyadic Identifier
" hi def link uiuaDyadicSF Identifier
" hi def link uiuaMonadicMod Type
" hi def link uiuaOtherMod Number
" hi def link uiuaModuleSF Keyword
" hi def link uiuaNum Number
" hi def link uiuaEsc SpecialChar
" hi def link uiuaChar String
" hi def link uiuaFmt Operator
" hi def link uiuaStr String
" hi def link uiuaSignature Type
" hi def link uiuaDebug Operator
" hi def link uiuaFaded Comment
" hi def link uiuaComment Comment
" " }}}
" hi link CocSemStack_function
hi link CocSemNoadic_function Keyword
hi link CocSemMonadic_function Function
hi link CocSemDyadic_function Identifier
hi link CocSemMonadic_modifier Type
hi link CocSemDyadic_modifier Number