mirror of
https://github.com/zyedidia/micro.git
synced 2026-02-08 16:10:29 +09:00
Use the 'regexp2' library for lookahead and lookbehind in region start and end regular expressions to support things like closing quotes that aren't preceded by backslashes.
120 lines
4.2 KiB
YAML
120 lines
4.2 KiB
YAML
filetype: d
|
|
|
|
detect:
|
|
filename: "\\.(d(i|d)?)$"
|
|
|
|
rules:
|
|
# Operators and punctuation
|
|
- statement: "(\\*|/|%|\\+|-|>>|<<|>>>|&|\\^(\\^)?|\\||~)?="
|
|
- statement: "\\.\\.(\\.)?|!|\\*|&|~|\\(|\\)|\\[|\\]|\\\\|/|\\+|-|%|<|>|\\?|:|;"
|
|
# Octal integer literals are deprecated
|
|
- error: "(0[0-7_]*)(L[uU]?|[uU]L?)?"
|
|
# Decimal integer literals
|
|
- constant.number: "([0-9]|[1-9][0-9_]*)(L[uU]?|[uU]L?)?"
|
|
# Binary integer literals
|
|
- constant: "(0[bB][01_]*)(L[uU]?|[uU]L?)?"
|
|
# Decimal float literals
|
|
- constant.number: "[0-9][0-9_]*\\.([0-9][0-9_]*)([eE][+-]?([0-9][0-9_]*))?[fFL]?i?"
|
|
- constant.number: "[0-9][0-9_]*([eE][+-]?([0-9][0-9_]*))[fFL]?i?"
|
|
- constant.number: "[^.]\\.([0-9][0-9_]*)([eE][+-]?([0-9][0-9_]*))?[fFL]?i?"
|
|
- constant.number: "[0-9][0-9_]*([fFL]?i|[fF])"
|
|
# Hexadecimal integer literals
|
|
- constant.number: "(0[xX]([0-9a-fA-F][0-9a-fA-F_]*|[0-9a-fA-F_]*[0-9a-fA-F]))(L[uU]?|[uU]L?)?"
|
|
# Hexadecimal float literals
|
|
- constant.number: "0[xX]([0-9a-fA-F][0-9a-fA-F_]*|[0-9a-fA-F_]*[0-9a-fA-F])(\\.[0-9a-fA-F][0-9a-fA-F_]*|[0-9a-fA-F_]*[0-9a-fA-F])?[pP][+-]?([0-9][0-9_]*)[fFL]?i?"
|
|
- constant.number: "0[xX]\\.([0-9a-fA-F][0-9a-fA-F_]*|[0-9a-fA-F_]*[0-9a-fA-F])[pP][+-]?([0-9][0-9_]*)[fFL]?i?"
|
|
# Character literals
|
|
- constant.string:
|
|
start: "'"
|
|
end: "(?<!\\\\)'"
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
# Keywords
|
|
# a-e
|
|
- statement: "\\b(abstract|alias|align|asm|assert|auto|body|break|case|cast|catch|class|const|continue|debug|default|delegate|do|else|enum|export|extern)\\b"
|
|
# f-l
|
|
- statement: "\\b(false|final|finally|for|foreach|foreach_reverse|function|goto|if|immutable|import|in|inout|interface|invariant|is|lazy)\\b"
|
|
# m-r
|
|
- statement: "\\b(macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|ref|return)\\b"
|
|
# s-w
|
|
- statement: "\\b(scope|shared|static|struct|super|switch|synchronized|template|this|throw|true|try|typeid|typeof|union|unittest|version|while|with)\\b"
|
|
# __
|
|
- statement: "\\b(__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__|__gshared|__traits|__vector|__parameters)\\b"
|
|
# Deprecated keywords
|
|
- error: "\\b(delete|deprecated|typedef|volatile)\\b"
|
|
# Primitive types
|
|
- type: "\\b(bool|byte|cdouble|cent|cfloat|char|creal|dchar|double|float|idouble|ifloat|int|ireal|long|real|short|ubyte|ucent|uint|ulong|ushort|void|wchar)\\b"
|
|
# Globally defined symbols
|
|
- type: "\\b(string|wstring|dstring|size_t|ptrdiff_t)\\b"
|
|
# Special tokens
|
|
- constant: "\\b(__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__)\\b"
|
|
# String literals
|
|
# DoubleQuotedString
|
|
- constant.string:
|
|
start: "\""
|
|
end: "(?<!\\\\)\""
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
# WysiwygString
|
|
- constant.string:
|
|
start: "r\""
|
|
end: "(?<!\\\\)\""
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
- constant.string:
|
|
start: "`"
|
|
end: "`"
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
# HexString
|
|
- constant.string:
|
|
start: "x\""
|
|
end: "(?<!\\\\)\""
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
# DelimitedString
|
|
- constant.string:
|
|
start: "q\"\\("
|
|
end: "\\)\""
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
- constant.string:
|
|
start: "q\"\\{"
|
|
end: "q\"\\}"
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
- constant.string:
|
|
start: "q\"\\["
|
|
end: "q\"\\]"
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
- constant.string:
|
|
start: "q\"<"
|
|
end: "q\">"
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
- constant.string:
|
|
start: "q\"[^({[<\"][^\"]*$"
|
|
end: "^[^\"]+\""
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
- constant.string:
|
|
start: "q\"([^({[<\"])"
|
|
end: "\""
|
|
rules:
|
|
- constant.specialChar: "\\\\."
|
|
# Comments
|
|
- comment:
|
|
start: "//"
|
|
end: "$"
|
|
rules: []
|
|
- comment:
|
|
start: "/\\*"
|
|
end: "\\*/"
|
|
rules: []
|
|
- comment:
|
|
start: "/\\+"
|
|
end: "\\+/"
|
|
rules: []
|
|
|