about summary refs log tree commit diff stats
path: root/js/baba-yaga/dev/vim/syntax
diff options
context:
space:
mode:
Diffstat (limited to 'js/baba-yaga/dev/vim/syntax')
-rw-r--r--js/baba-yaga/dev/vim/syntax/baba.vim93
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"