diff options
| author | xolatile | 2025-04-20 12:12:07 +0200 |
|---|---|---|
| committer | xolatile | 2025-04-20 12:12:07 +0200 |
| commit | e767bea2c871e30c32305ad4035527188c844f29 (patch) | |
| tree | 29b556efa5fea262ad96901082b1c17f1dfa628a /xanguage/eaxhla.h | |
| parent | c53055c9b71af24644d7a984e2309ebbc042449f (diff) | |
| download | xolatile-xighlight-e767bea2c871e30c32305ad4035527188c844f29.tar.xz xolatile-xighlight-e767bea2c871e30c32305ad4035527188c844f29.tar.zst | |
Trying...
Diffstat (limited to 'xanguage/eaxhla.h')
| -rwxr-xr-x | xanguage/eaxhla.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/xanguage/eaxhla.h b/xanguage/eaxhla.h new file mode 100755 index 0000000..cca50c9 --- /dev/null +++ b/xanguage/eaxhla.h @@ -0,0 +1,79 @@ +static procedure language_highlight_eaxhla (language_structure * language, syntax_structure * syntax) { + character * separators = ".,+-*/[]<>=; \t\r\n"; + + character * declarations [] = { + "program", "procedure", "machine", "library", "fast", "unix", "begin", "end", + "if", "then", "else", "repeat", "break", "continue", "until", "exit", + "fastcall", "shell", "alias", "macro", "scope", "unscope", "use", "include" + }; + + character * types [] = { + "integer_64", "character6", "s32", "s64", "natural_64", "natural_86", "u32", "u64", + "f32", "f64", "real_640", "v0", "character28", "natural_828", "integer_1656", "natural_1656", + "s512", "u512" + }; + + character * instructions [] = { + "jnpe", "jpo", "jnpo", "jpe", "jnb", "jae", "jnbe", "ja", + "jna", "jbe", "jnae", "jb", "jnl", "jge", "jnle", "jg", + "jng", "jle", "jnge", "jl", "cmovng", "cmovle", "cmovnge", "cmovl", + "cmovnpe", "cmovpo", "cmovnpo", "cmovpe", "cmovnb", "cmovae", "cmovnbe", "cmova", + "cmovna", "cmovbe", "cmovnae", "cmovb", "cmovnl", "cmovge", "cmovnle", "cmovg", + "setnpe", "setpo", "setnpo", "setpe", "setnb", "setae", "setnbe", "seta", + "setna", "setbe", "setnae", "setb", "setnl", "setge", "setnle", "setg", + "setng", "setle", "setnge", "setl", "enter", "call", "jmp", "mov", + "add", "or", "adc", "sbb", "and", "sub", "xor", "cmp", + "inc", "dec", "not", "neg", "mul", "imul", "div", "idiv", + "fadd", "fmul", "fcom", "fcomp", "fsub", "fsubr", "fdiv", "fdivr", + "rol", "ror", "rcl", "rcr", "sal", "shr", "shl", "sar", + "nop", "retn", "retf", "leave", "popf", "pushf", "in", "out", + "syscall", "cpuid", "fnop", "fchs", "fabs", "ftst", "fxam", "fld1", + "fldl2t", "fldl2e", "fldpi", "fldlg2", "fldln2", "fldz", "f2xm1", "fyl2x", + "fptan", "fpatan", "fxtract", "fprem1", "fdecstp", "fincstp", "fprem", "fyl2xp1", + "fsqrt", "fsincos", "frndint", "fscale", "fsin", "fcos", "pop", "push", + "bswap", "bsf", "bsr", "loop", "loope", "loopne" + }; + + character * registers [] = { + "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", + "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", + "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d", + "ax", "cx", "dx", "bx", "sp", "bp", "si", "di", + "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w", + "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil", + "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b" + }; + + integer word; + + syntax_define (syntax, false, false, "#", "\n", '\0', language->comment_colour, language->comment_effect); + syntax_define (syntax, false, false, "---", "\n", '\0', language->comment_colour, language->comment_effect); + syntax_define (syntax, false, false, "//", "\n", '\0', language->comment_colour, language->comment_effect); + syntax_define (syntax, false, false, "'", "'", '\\', language->character_colour, language->character_effect); + syntax_define (syntax, false, false, "\"", "\"", '\\', language->string_colour, language->string_effect); + + for (natural_64 word = 0; word < array_length (declarations); ++word) { + syntax_define (syntax, false, true, declarations [word], separators, '\0', language->keyword_colour, language->keyword_effect); + } + + for (natural_64 word = 0; word < array_length (types); ++word) { + syntax_define (syntax, false, true, types [word], separators, '\0', language->type_colour, language->type_effect); + } + + for (natural_64 word = 0; word < array_length (instructions); ++word) { + syntax_define (syntax, false, true, instructions [word], " \t\n", '\0', language->extension_colour, language->extension_effect); + } + + for (natural_64 word = 0; word < array_length (registers); ++word) { + syntax_define (syntax, false, true, registers [word], separators, '\0', language->register_colour, language->register_effect); + } + + syntax_define (syntax, true, false, "()[]{}", "", '\0', language->bracket_colour, language->bracket_effect); + syntax_define (syntax, true, false, ".,+*-/%$<>=;", "", '\0', language->operator_colour, language->operator_effect); + + syntax_define (syntax, true, true, language_digits, separators, '\0', language->number_colour, language->number_effect); + syntax_define (syntax, true, true, language_lowercase, separators, '\0', language->lowercase_colour, language->lowercase_effect); + syntax_define (syntax, true, true, language_uppercase, separators, '\0', language->uppercase_colour, language->uppercase_effect); + syntax_define (syntax, true, true, "_", separators, '\0', language->underscore_colour, language->underscore_effect); +} |
