BASIC.tmbundle/Syntaxes/Applesoft.tmLanguage

166 lines
4.1 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>comment</key>
<string>due to the parsing, order can be important (eg, notrace before not and trace)</string>
<key>fileTypes</key>
<array>
<string>applesoft</string>
</array>
<key>name</key>
<string>Applesoft</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>^\d+</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>(?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>begin</key>
<string>"</string>
<key>end</key>
<string>"</string>
<key>name</key>
<string>string.quoted.double</string>
</dict>
<dict>
<key>match</key>
<string>(?i:shload|load|recall|save|store)</string>
<key>name</key>
<string>invalid.deprecated</string>
</dict>
<dict>
<key>match</key>
<string>(?i:rem).*$</string>
<key>name</key>
<string>comment.line</string>
</dict>
<dict>
<key>match</key>
<string>\d+|\d*\.\d*([eE][+-]?\d+)?</string>
<key>name</key>
<string>constant.numeric</string>
</dict>
<dict>
<key>match</key>
<string>(?i:goto|onerr|on|if|then|for|to|step|next|gosub|return|pop|resume|stop|del|end|wait)</string>
<key>name</key>
<string>keyword.control</string>
</dict>
<dict>
<key>match</key>
<string>(?i:clear|cont|del|list|new|run)</string>
<key>name</key>
<string>keyword.control.immediate</string>
</dict>
<dict>
<key>match</key>
<string>(?i:dim|let)</string>
<key>name</key>
<string>keyword.variable</string>
</dict>
<dict>
<key>match</key>
<string>(?i:poke|call|himem:|lomem:|notrace|trace)</string>
<key>name</key>
<string>keyword.utility</string>
</dict>
<dict>
<key>comment</key>
<string>tab/spc requires ( lookahead?</string>
<key>match</key>
<string>(?i:in#|input|get|read|data|restore|pr#|print|\?|text|home|htab|vtab|inverse|normal|flash|speed=|tab|spc)</string>
<key>name</key>
<string>keyword.io</string>
</dict>
<dict>
<key>match</key>
<string>(?i:def|fn)</string>
<key>name</key>
<string>keyword.function</string>
</dict>
<dict>
<key>match</key>
<string>(?i:abs|sgn|int|sqr|sin|cos|tan|atn|exp|log|rnd)</string>
<key>name</key>
<string>support.function.arithmetic</string>
</dict>
<dict>
<key>match</key>
<string>(?i:len|left\$|mid\$|right\$|str\$|val|chr\$|asc)</string>
<key>name</key>
<string>support.function.string</string>
</dict>
<dict>
<key>match</key>
<string>(?i:at|gr|color=|plot|hlin|vlin|hgr2|hgr|hcolor=|hplot|draw|xdraw|scale=|rot=)</string>
<key>name</key>
<string>keyword.graphics</string>
</dict>
<dict>
<key>match</key>
<string>(?i:peek|usr|fre)</string>
<key>name</key>
<string>support.function.utility</string>
</dict>
<dict>
<key>match</key>
<string>(?i:scrn)</string>
<key>name</key>
<string>support.function.graphics</string>
</dict>
<dict>
<key>match</key>
<string>(?i:pdl|pos)</string>
<key>name</key>
<string>support.function.io</string>
</dict>
<dict>
<key>match</key>
<string>(?i:and|or|not)</string>
<key>name</key>
<string>keyword.operator.logical</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]*?\s*[$%]?</string>
<key>name</key>
<string>variable</string>
</dict>
</array>
<key>scopeName</key>
<string>source.applesoft</string>
<key>uuid</key>
<string>DEA21785-8117-41BB-9E2E-BB418E807165</string>
</dict>
</plist>