diff options
Diffstat (limited to 'js/baba-yaga/dev/vim/syntax/baba.vim')
-rw-r--r-- | js/baba-yaga/dev/vim/syntax/baba.vim | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/js/baba-yaga/dev/vim/syntax/baba.vim b/js/baba-yaga/dev/vim/syntax/baba.vim new file mode 100644 index 0000000..cc9a70f --- /dev/null +++ b/js/baba-yaga/dev/vim/syntax/baba.vim @@ -0,0 +1,93 @@ +" Vim syntax file for Baba Yaga programming language +" Language: Baba Yaga +" Maintainer: Your Name <your-email@example.com> +" Latest Revision: 2024 + +if exists("b:current_syntax") + finish +endif + +" Keywords +syn keyword babaKeyword when then is Ok Err +syn keyword babaType Bool Int Float String List Table Result Number +syn keyword babaOperator append set merge shape +syn keyword babaIO io.out io.in io.emit io.listen +syn keyword babaFunction map filter reduce pipe + +" Operators +syn match babaOperator "->" +syn match babaOperator "=>" +syn match babaOperator "\.\." +syn match babaOperator "=" +syn match babaOperator ">" +syn match babaOperator "<" +syn match babaOperator ">=" +syn match babaOperator "<=" +syn match babaOperator "+" +syn match babaOperator "-" +syn match babaOperator "\*" +syn match babaOperator "/" +syn match babaOperator "%" +syn match babaOperator ":" + +" Comments +syn match babaComment "//.*$" +syn region babaComment start="/\*" end="\*/" + +" Strings +syn region babaString start='"' end='"' skip='\\"' + +" Numbers +syn match babaNumber "\b\d\+\b" +syn match babaFloat "\b\d\+\.\d\+\b" + +" Function definitions +syn match babaFunctionDef "\b[a-zA-Z_][a-zA-Z0-9_]*\s*:" + +" Variables +syn match babaVariable "\b[a-zA-Z_][a-zA-Z0-9_]*\b" + +" With blocks +syn keyword babaWith with +syn keyword babaWithRec rec +syn region babaWithBlock start="\bwith\b" end="->" contains=babaWith,babaWithRec,babaKeyword,babaOperator,babaString,babaNumber,babaVariable,babaComment,babaWithBlockEntry +syn region babaWithBlockEntry start="\b[a-zA-Z_][a-zA-Z0-9_]*\s*:" end=";" contains=babaVariable,babaOperator,babaString,babaNumber,babaComment,babaWhenExpr + +" When expressions +syn region babaWhenExpr start="\bwhen\b" end=";" contains=babaKeyword,babaOperator,babaString,babaNumber,babaVariable + +" Anonymous functions +syn region babaAnonFunc start="(" end=")" contains=babaVariable,babaOperator + +" Lists +syn region babaList start="\[" end="\]" contains=ALL + +" Tables +syn region babaTable start="{" end="}" contains=ALL + +" Wildcard +syn match babaWildcard "\b_\b" + +" Define highlighting +hi def link babaKeyword Keyword +hi def link babaType Type +hi def link babaOperator Operator +hi def link babaIO PreProc +hi def link babaFunction Function +hi def link babaComment Comment +hi def link babaString String +hi def link babaNumber Number +hi def link babaFloat Float +hi def link babaFunctionDef Function +hi def link babaVariable Identifier +hi def link babaWith Keyword +hi def link babaWithRec Keyword +hi def link babaWithBlock Special +hi def link babaWithBlockEntry Special +hi def link babaWhenExpr Special +hi def link babaAnonFunc Special +hi def link babaList Special +hi def link babaTable Special +hi def link babaWildcard Constant + +let b:current_syntax = "baba" |