diff options
Diffstat (limited to 'syntax')
-rw-r--r-- | syntax/pest.vim | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/syntax/pest.vim b/syntax/pest.vim new file mode 100644 index 00000000..c151c678 --- /dev/null +++ b/syntax/pest.vim @@ -0,0 +1,131 @@ +" Comments +syntax keyword pestTodo contained TODO FIXME XXX NOTE +syntax match pestComment "\/\/.*$" contains=celTodo + +" Rule names +syntax match pestName "^[a-z_][a-z0-9_]*" + +" String types +syntax region pestString start=/"/ skip=/\\\\\|\\"/ end=/"/ oneline contained +syntax region pestStringIcase start=/\^"/ skip=/\\\\\|\\"/ end=/"/ oneline contained +syntax region pestChar start=/'/ end=/'/ oneline contained + +" Operators, modifiers, keywords +syntax match pestModifier "\v[_@$!]" +syntax match pestOperator "\v[~|*+?&!]" contained +syntax keyword pestKeyword PUSH POP POP_ALL PEEK PEEK_ALL DROP contained +syntax keyword pestSpecial WHITESPACE COMMENT ANY SOI EOI ASCII_DIGIT ASCII_NONZERO_DIGIT ASCII_BIN_DIGIT ASCII_OCT_DIGIT ASCII_HEX_DIGIT + \ ASCII_ALPHA_LOWER ASCII_ALPHA_UPPER ASCII_ALPHA ASCII_ALPHANUMERIC ASCII NEWLINE +syntax keyword pestGeneral contained + \ LETTER + \ CASED_LETTER + \ UPPERCASE_LETTER + \ LOWERCASE_LETTER + \ TITLECASE_LETTER + \ MODIFIER_LETTER + \ OTHER_LETTER + \ MARK + \ NONSPACING_MARK + \ SPACING_MARK + \ ENCLOSING_MARK + \ NUMBER + \ DECIMAL_NUMBER + \ LETTER_NUMBER + \ OTHER_NUMBER + \ PUNCTUATION + \ CONNECTOR_PUNCTUATION + \ DASH_PUNCTUATION + \ OPEN_PUNCTUATION + \ CLOSE_PUNCTUATION + \ INITIAL_PUNCTUATION + \ FINAL_PUNCTUATION + \ OTHER_PUNCTUATION + \ SYMBOL + \ MATH_SYMBOL + \ CURRENCY_SYMBOL + \ MODIFIER_SYMBOL + \ OTHER_SYMBOL + \ SEPARATOR + \ SPACE_SEPARATOR + \ LINE_SEPARATOR + \ PARAGRAPH_SEPARATOR + \ OTHER + \ CONTROL + \ FORMAT + \ SURROGATE + \ PRIVATE_USE + \ UNASSIGNED +syntax keyword pestBinary contained + \ ALPHABETIC + \ BIDI_CONTROL + \ CASE_IGNORABLE + \ CASED + \ CHANGES_WHEN_CASEFOLDED + \ CHANGES_WHEN_CASEMAPPED + \ CHANGES_WHEN_LOWERCASED + \ CHANGES_WHEN_TITLECASED + \ CHANGES_WHEN_UPPERCASED + \ DASH + \ DEFAULT_IGNORABLE_CODE_POINT + \ DEPRECATED + \ DIACRITIC + \ EXTENDER + \ GRAPHEME_BASE + \ GRAPHEME_EXTEND + \ GRAPHEME_LINK + \ HEX_DIGIT + \ HYPHEN + \ IDS_BINARY_OPERATOR + \ IDS_TRINARY_OPERATOR + \ ID_CONTINUE + \ ID_START + \ IDEOGRAPHIC + \ JOIN_CONTROL + \ LOGICAL_ORDER_EXCEPTION + \ LOWERCASE + \ MATH + \ NONCHARACTER_CODE_POINT + \ OTHER_ALPHABETIC + \ OTHER_DEFAULT_IGNORABLE_CODE_POINT + \ OTHER_GRAPHEME_EXTEND + \ OTHER_ID_CONTINUE + \ OTHER_ID_START + \ OTHER_LOWERCASE + \ OTHER_MATH + \ OTHER_UPPERCASE + \ PATTERN_SYNTAX + \ PATTERN_WHITE_SPACE + \ PREPENDED_CONCATENATION_MARK + \ QUOTATION_MARK + \ RADICAL + \ REGIONAL_INDICATOR + \ SENTENCE_TERMINAL + \ SOFT_DOTTED + \ TERMINAL_PUNCTUATION + \ UNIFIED_IDEOGRAPH + \ UPPERCASE + \ VARIATION_SELECTOR + \ WHITE_SPACE + \ XID_CONTINUE + \ XID_START +syntax keyword pestForbidden abstract alignof as become box break const continue crate do else enum extern false + \ final fn for if impl in let loop macro match mod move mut offsetof override priv proc pure pub ref return + \ Self self sizeof static struct super trait true type typeof unsafe unsized use virtual where while yield + +" Rule blocks +syntax region pestBlock start=/{/ end=/}/ fold transparent contains=pestString,pestStringIcase,pestChar,pestOperator,pestKeyword,pestSpecial,pestGeneral,pestBinary,pestForbidden,pestComment,pestBlock +syntax region pestRule start=/^/ end=/ / fold transparent contains=pestName,pestForbidden,pestComment + +highlight default link pestTodo Todo +highlight default link pestComment Comment +highlight default link pestString String +highlight default link pestStringIcase String +highlight default link pestChar Character +highlight default link pestName Identifier +highlight default link pestModifier Operator +highlight default link pestOperator Operator +highlight default link pestKeyword Keyword +highlight default link pestSpecial Type +highlight default link pestGeneral Type +highlight default link pestBinary Type +highlight default link pestForbidden Error |