BASIC.tmbundle/Syntaxes/MD-BASIC.tmLanguage

325 lines
8.0 KiB
Plaintext

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>b</string>
</array>
<key>name</key>
<string>MD-BASIC</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>^[%A-Za-z_][A-Za-z0-9_]*(?=:)</string>
<key>name</key>
<string>entity.name.function</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.function</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.function</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.parameter</string>
</dict>
</dict>
<key>match</key>
<string>\b(?i:def\s+fn)\s+([A-Za-z_][A-Za-z0-9_]*)\s*[(]\s*([A-Za-z_][A-Za-z0-9_]*)\s*[)]</string>
<key>name</key>
<string>meta.def.fn</string>
</dict>
<dict>
<key>match</key>
<string>(\$[0-9a-fA-F]+)\b</string>
<key>name</key>
<string>constant.numeric.hex.md-basic</string>
</dict>
<dict>
<key>match</key>
<string>\d+|\d*\.\d*([eE][+-]?\d+)?</string>
<key>name</key>
<string>constant.numeric</string>
</dict>
<dict>
<key>begin</key>
<string>'</string>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.md-basic</string>
</dict>
<dict>
<key>begin</key>
<string>\b(?i:rem)(?![%$])\b</string>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line</string>
</dict>
<dict>
<key>begin</key>
<string>`</string>
<key>end</key>
<string>`</string>
<key>name</key>
<string>string.quoted.raw</string>
</dict>
<dict>
<key>begin</key>
<string>"</string>
<key>end</key>
<string>"</string>
<key>name</key>
<string>string.quoted.double.md-basic</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\^[A-Za-z^]</string>
<key>name</key>
<string>constant.character.escape.md-basic</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\b(?i:goto|onerr|on|if|then|for|to|step|next|gosub|return|pop|resume|stop|del|end|wait)(?![%$])\b</string>
<key>name</key>
<string>keyword.control</string>
</dict>
<dict>
<key>match</key>
<string>\b((?i)do|else|endif|loop|repeat|until|wend|while)(?![%$])\b</string>
<key>name</key>
<string>keyword.control.md-basic</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:shload|load|recall|save|store)(?![%$])\b</string>
<key>name</key>
<string>invalid.deprecated</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:clear|cont|del|list|new|run)(?![%$])\b</string>
<key>name</key>
<string>keyword.control.immediate</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:dim|let)(?![%$])\b</string>
<key>name</key>
<string>keyword.variable</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:poke|call|himem|lomem|notrace|trace)(?![%$])\b</string>
<key>name</key>
<string>keyword.utility</string>
</dict>
<dict>
<key>comment</key>
<string>tab/spc requires ( lookahead?</string>
<key>match</key>
<string>\b(?i:in|input|get|read|data|restore|pr|print|text|home|htab|vtab|inverse|normal|flash|speed|tab|spc)(?![%$])\b</string>
<key>name</key>
<string>keyword.io</string>
</dict>
<dict>
<key>match</key>
<string>\?</string>
<key>name</key>
<string>keyword.io.short</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:def|fn)(?![%$])\b</string>
<key>name</key>
<string>keyword.function</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:abs|sgn|int|sqr|sin|cos|tan|atn|exp|log|rnd)(?![%$])\b</string>
<key>name</key>
<string>support.function.arithmetic</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:len|val|asc)(?![%$])\b</string>
<key>name</key>
<string>support.function.string</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:left|mid|right|str|chr)\$</string>
<key>name</key>
<string>support.function.string.dollar</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:at|gr|color|plot|hlin|vlin|hgr2|hgr|hcolor|hplot|draw|xdraw|scale|rot)(?![%$])\b</string>
<key>name</key>
<string>keyword.graphics</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:peek|usr|fre)(?![%$])\b</string>
<key>name</key>
<string>support.function.utility</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:scrn)(?![%$])\b</string>
<key>name</key>
<string>support.function.graphics</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:pdl|pos)(?![%$])\b</string>
<key>name</key>
<string>support.function.io</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:and|or|not)(?![%$])\b</string>
<key>name</key>
<string>keyword.operator.logical</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:true|false|__mdbasic__)(?![%$])\b</string>
<key>name</key>
<string>constant.language.md-basic</string>
</dict>
<dict>
<key>begin</key>
<string>^\s*#\s*(include)\s+</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.import.include.md-basic</string>
</dict>
</dict>
<key>end</key>
<string>(?=(?://|/\*))|$</string>
<key>name</key>
<string>meta.preprocessor.md-basic.include</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?&gt;\\\s*\n)</string>
<key>name</key>
<string>punctuation.separator.continuation.md-basic</string>
</dict>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.md-basic</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.md-basic</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.include.md-basic</string>
</dict>
<dict>
<key>begin</key>
<string>&lt;</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.md-basic</string>
</dict>
</dict>
<key>end</key>
<string>&gt;</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.md-basic</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.other.lt-gt.include.md-basic</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.import.define.md-basic</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.function.preprocessor.md-basic</string>
</dict>
</dict>
<key>match</key>
<string>^\s*#\s*(define)\s*([A-Za-z_][A-Za-z_0-9]*)</string>
<key>name</key>
<string>meta.preprocessor.macro.md-basic</string>
</dict>
<dict>
<key>match</key>
<string>^\s*#\s*(?i:declare|define|else|endif|error|if|ifdef|ifndef|include|pragma|print|reserve)\b</string>
<key>name</key>
<string>meta.preprocessor</string>
</dict>
<dict>
<key>match</key>
<string>&amp;\s*([A-Za-z_][A-Za-z0-9_]*)</string>
<key>name</key>
<string>support.function.ampersand</string>
</dict>
<dict>
<key>comment</key>
<string>uses non-greedy *? so keywords get a first shot</string>
<key>match</key>
<string>[A-Za-z_][A-Za-z0-9_]*[$%]?</string>
<key>name</key>
<string>variable</string>
</dict>
</array>
<key>scopeName</key>
<string>source.md-basic</string>
<key>uuid</key>
<string>DD349F4E-DE95-41D3-945C-209066679265</string>
</dict>
</plist>