|
<?xml version="1.0" encoding="UTF-8"?> |
|
<!-- |
|
|
|
Game Boy RGBDS-GBZ80 syntax highlight |
|
_____________________________________ |
|
|
|
Authors: Antonio Niño Díaz (AntonioND) |
|
Copyright (C) 2015 Antonio Niño Díaz <[email protected]> |
|
|
|
Based on the work of: |
|
|
|
Authors: Rafael de Oliveira Jannone |
|
Copyright (C) 2008 Rafael de Oliveira Jannone <[email protected]> |
|
|
|
This library is free software; you can redistribute it and/or |
|
modify it under the terms of the GNU Library General Public |
|
License as published by the Free Software Foundation; either |
|
version 2 of the License, or (at your option) any later version. |
|
|
|
This library is distributed in the hope that it will be useful, |
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
Library General Public License for more details. |
|
|
|
You should have received a copy of the GNU Library General Public |
|
License along with this library; if not, write to the |
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
|
Boston, MA 02111-1307, USA. |
|
|
|
--> |
|
<language id="gbz80asm" _name="Game Boy RGBDS ASM" version="2.0" _section="Sources"> |
|
<metadata> |
|
<property name="mimetypes">text/x-asm-file</property> |
|
<property name="globs">*.asm;*.ASM;*.s;*.S;*.inc;*.INC</property> |
|
<property name="line-comment-start">;</property> |
|
</metadata> |
|
|
|
<styles> |
|
<style id="comment" _name="Comment" map-to="def:comment"/> |
|
<style id="string" _name="String" map-to="def:string"/> |
|
<style id="character" _name="Character" map-to="def:string"/> |
|
<style id="directive" _name="Directive" map-to="def:preprocessor"/> |
|
<style id="mnemonic" _name="Mnemonic" map-to="def:statement"/> |
|
<style id="data" _name="Data" map-to="def:type"/> |
|
<style id="decimal" _name="Decimal number" map-to="def:decimal"/> |
|
<style id="base-n-integer" _name="Base-N integer" map-to="def:base-n-integer"/> |
|
<style id="gb-graphics" _name="Game Boy Graphics" map-to="def:base-n-integer"/> |
|
<style id="label" _name="Label" map-to="def:keyword" /> |
|
<style id="register" _name="Register" map-to="def:identifier"/> |
|
<style id="operator" _name="Operator" map-to="def:type"/> |
|
<style id="trailing-spaces" _name="Trailing Spaces" map-to="def:error"/> |
|
</styles> |
|
|
|
<default-regex-options case-sensitive="false"/> |
|
|
|
<definitions> |
|
<context id="gbz80asm"> |
|
<include> |
|
<!-- gtk-doc --> |
|
<context ref="gtk-doc:inline-docs-section"/> |
|
|
|
<!-- Comments --> |
|
<context id="comment" style-ref="comment" end-at-line-end="true"> |
|
<start>;</start> |
|
<include> |
|
<context ref="def:in-line-comment"/> |
|
</include> |
|
</context> |
|
|
|
<context id="string" style-ref="string" end-at-line-end="true"> |
|
<start>"</start> |
|
<end>"</end> |
|
</context> |
|
|
|
<context id="character" style-ref="character" end-at-line-end="true"> |
|
<start>'</start> |
|
<end>'</end> |
|
</context> |
|
|
|
<context id="base-n-integer" style-ref="base-n-integer"> |
|
<match extended="true"> |
|
(?<![\w\.]) |
|
((\$[a-fA-F0-9]+)|(%[0-1]+)|(&[0-7]+)|([0-9]+\.[0-9]+)) |
|
(?![\w\.]) |
|
</match> |
|
</context> |
|
|
|
<context id="gb-graphics" style-ref="gb-graphics"> |
|
<match extended="true"> |
|
(?<![\w\.]) |
|
(`[0-3]+) |
|
(?![\w\.]) |
|
</match> |
|
</context> |
|
|
|
<context id="decimal" style-ref="decimal"> |
|
<match extended="true"> |
|
(?<![\w\.]) |
|
[0-9]+ |
|
(?![\w\.]) |
|
</match> |
|
</context> |
|
|
|
<context id="mnemonics" style-ref="mnemonic"> |
|
<keyword>ADC</keyword> |
|
<keyword>ADD</keyword> |
|
<keyword>AND</keyword> |
|
<keyword>BIT</keyword> |
|
<keyword>CALL</keyword> |
|
<keyword>CCF</keyword> |
|
<keyword>CP</keyword> |
|
<keyword>CPL</keyword> |
|
<keyword>DAA</keyword> |
|
<keyword>DEC</keyword> |
|
<keyword>DI</keyword> |
|
<keyword>EI</keyword> |
|
<keyword>HALT</keyword> |
|
<keyword>INC</keyword> |
|
<keyword>JP</keyword> |
|
<keyword>JR</keyword> |
|
<keyword>LD</keyword> |
|
<keyword>LDD</keyword> |
|
<keyword>LDI</keyword> |
|
<keyword>LDH</keyword> |
|
<keyword>NOP</keyword> |
|
<keyword>OR</keyword> |
|
<keyword>POP</keyword> |
|
<keyword>PUSH</keyword> |
|
<keyword>RES</keyword> |
|
<keyword>RET</keyword> |
|
<keyword>RETI</keyword> |
|
<keyword>RL</keyword> |
|
<keyword>RLA</keyword> |
|
<keyword>RLC</keyword> |
|
<keyword>RLCA</keyword> |
|
<keyword>RLD</keyword> |
|
<keyword>RR</keyword> |
|
<keyword>RRA</keyword> |
|
<keyword>RRC</keyword> |
|
<keyword>RRCA</keyword> |
|
<keyword>RST</keyword> |
|
<keyword>SBC</keyword> |
|
<keyword>SCF</keyword> |
|
<keyword>SET</keyword> |
|
<keyword>SLA</keyword> |
|
<keyword>SRA</keyword> |
|
<keyword>SRL</keyword> |
|
<keyword>STOP</keyword> |
|
<keyword>SUB</keyword> |
|
<keyword>SWAP</keyword> |
|
<keyword>XOR</keyword> |
|
</context> |
|
|
|
<context id="directives" style-ref="directive"> |
|
<!-- Doesn't work. |
|
<keyword>\@</keyword> |
|
--> |
|
<keyword>__DATE__</keyword> |
|
<keyword>__LINE__</keyword> |
|
<keyword>__TIME__</keyword> |
|
<keyword>_NARG</keyword> |
|
<keyword>_PI</keyword> |
|
<keyword>_RS</keyword> |
|
<keyword>ACOS</keyword> |
|
<keyword>ASIN</keyword> |
|
<keyword>ATAN</keyword> |
|
<keyword>ATAN2</keyword> |
|
<keyword>BANK</keyword> |
|
<keyword>COS</keyword> |
|
<keyword>DEF</keyword> |
|
<keyword>DIV</keyword> |
|
<keyword>ELSE</keyword> |
|
<keyword>ENDC</keyword> |
|
<keyword>ENDM</keyword> |
|
<keyword>ENDR</keyword> |
|
<keyword>EQU</keyword> |
|
<keyword>EQUS</keyword> |
|
<keyword>EXPORT</keyword> |
|
<keyword>FAIL</keyword> |
|
<keyword>GLOBAL</keyword> |
|
<keyword>IF</keyword> |
|
<keyword>IMPORT</keyword> |
|
<keyword>INCBIN</keyword> |
|
<keyword>INCLUDE</keyword> |
|
<keyword>MACRO</keyword> |
|
<keyword>MUL</keyword> |
|
<keyword>OPT</keyword> |
|
<keyword>POPO</keyword> |
|
<keyword>POPS</keyword> |
|
<keyword>PRINTF</keyword> |
|
<keyword>PRINTT</keyword> |
|
<keyword>PRINTV</keyword> |
|
<keyword>PURGE</keyword> |
|
<keyword>PUSHO</keyword> |
|
<keyword>PUSHS</keyword> |
|
<keyword>REPT</keyword> |
|
<keyword>RB</keyword> |
|
<keyword>RSRESET</keyword> |
|
<keyword>RSSET</keyword> |
|
<keyword>RW</keyword> |
|
<keyword>SECTION</keyword> |
|
<keyword>SET</keyword> |
|
<keyword>SHIFT</keyword> |
|
<keyword>SIN</keyword> |
|
<keyword>STRCAT</keyword> |
|
<keyword>STRCMP</keyword> |
|
<keyword>STRIN</keyword> |
|
<keyword>STRLEN</keyword> |
|
<keyword>STRLWR</keyword> |
|
<keyword>STRSUB</keyword> |
|
<keyword>STRUPR</keyword> |
|
<keyword>TAN</keyword> |
|
<keyword>WARN</keyword> |
|
<keyword>XDEF</keyword> |
|
<keyword>XREF</keyword> |
|
<keyword>HOME</keyword> |
|
<keyword>CODE</keyword> |
|
<keyword>DATA</keyword> |
|
<keyword>BSS</keyword> |
|
<keyword>ROM0</keyword> |
|
<keyword>ROMX</keyword> |
|
<keyword>VRAM</keyword> |
|
<keyword>WRAM</keyword> |
|
<keyword>SRAM</keyword> |
|
<keyword>WRAM0</keyword> |
|
<keyword>WRAMX</keyword> |
|
<keyword>HRAM</keyword> |
|
</context> |
|
|
|
<context id="data" style-ref="data"> |
|
<keyword>DB</keyword> |
|
<keyword>DS</keyword> |
|
<keyword>DW</keyword> |
|
</context> |
|
|
|
<context id="registers" style-ref="register"> |
|
<keyword>AF</keyword> |
|
<keyword>HL</keyword> |
|
<keyword>BC</keyword> |
|
<keyword>DE</keyword> |
|
<keyword>SP</keyword> |
|
<keyword>A</keyword> |
|
<keyword>H</keyword> |
|
<keyword>L</keyword> |
|
<keyword>B</keyword> |
|
<keyword>C</keyword> |
|
<keyword>D</keyword> |
|
<keyword>E</keyword> |
|
</context> |
|
|
|
<context id="condition" style-ref="register"> |
|
<!-- Repeated in register list |
|
<keyword>C</keyword> |
|
--> |
|
<keyword>NC</keyword> |
|
<keyword>Z</keyword> |
|
<keyword>NZ</keyword> |
|
</context> |
|
|
|
<context id="operator" style-ref="operator"> |
|
<!-- Unary operators. They don't work... |
|
<keyword>\~</keyword> |
|
<keyword>\+</keyword> |
|
<keyword>\-</keyword> |
|
<keyword>\!</keyword> |
|
--> |
|
<keyword>\+</keyword> |
|
<keyword>\-</keyword> |
|
<keyword>\*</keyword> |
|
<keyword>/</keyword> |
|
<keyword>%</keyword> |
|
<keyword><<</keyword> |
|
<keyword>>></keyword> |
|
<keyword>&</keyword> |
|
<keyword>\|</keyword> |
|
<keyword>\^</keyword> |
|
<keyword>!=</keyword> |
|
<keyword>==</keyword> |
|
<keyword><=</keyword> |
|
<keyword>>=</keyword> |
|
<keyword><</keyword> |
|
<keyword>></keyword> |
|
<keyword>&&</keyword> |
|
<keyword>\|\|</keyword> |
|
</context> |
|
|
|
<!-- Global labels can't use a "." or a "\@". --> |
|
<context id="label" style-ref="label"> |
|
<match extended="true"> |
|
(^(\.)([A-Za-z_]([A-Za-z0-9_#]+)?)?((\\\@)([A-Za-z0-9_#]+)?)?(:)(?!:))| |
|
(^[A-Za-z_]([A-Za-z0-9_#]+)?(\\\@)?([A-Za-z0-9_#]+)?(:)(?!:))| |
|
(^[A-Za-z_]([A-Za-z0-9_#]+)?(:{1,2})(?!:)) |
|
</match> |
|
</context> |
|
|
|
<context id="trailing-spaces" style-ref="trailing-spaces"> |
|
<match extended="true"> |
|
([\t ]+)$ |
|
</match> |
|
</context> |
|
</include> |
|
</context> |
|
</definitions> |
|
</language> |