Browse Source

Added Xofya highlighting...

master
Ognjen Milan Robovic 2 months ago
parent
commit
226c334ee9
1 changed files with 38 additions and 0 deletions
  1. +38
    -0
      xighlight.c

+ 38
- 0
xighlight.c View File

@@ -323,6 +323,39 @@ static void highlight_shell (void) {
syntax_define (true, true, "_", separators, '\0', colour_white, effect_italic);
}

static void highlight_xofya (void) {
char * separators = ".,:;<=>+-*/%!&~^?|(){}'\" \t\r\n";

char * keywords [] = {
"character", "natural", "integer", "logical", "address", "pointer", "union", "enter",
"array", "iterate", "enumerate", "include", "exclude", "execute", "if", "else",
"match", "for", "break", "cycle", "and", "or", "not", "true",
"false", "nil", "range", "then", "terminate", "procedure", "program", "package"
};

int word;

syntax_define (false, false, "!", "\n", '\0', colour_red, effect_bold);
syntax_define (false, false, "---", "\n", '\0', colour_grey, effect_bold);
syntax_define (false, false, "--!", "!--", '\0', colour_grey, effect_bold);
syntax_define (false, false, "@", "\n", '\0', colour_red, effect_italic);
syntax_define (false, false, "<!>", "\n", '\0', colour_red, effect_normal);
syntax_define (false, false, "\"", "\"", '\\', colour_pink, effect_normal);
syntax_define (false, false, "'", "'", '\\', colour_pink, effect_bold);

for (word = 0; word != (int) (sizeof (keywords) / sizeof (keywords [0])); ++word) {
syntax_define (false, true, keywords [word], separators, '\0', colour_yellow, effect_bold);
}

syntax_define (true, false, "(){}", "", '\0', colour_blue, effect_normal);
syntax_define (true, false, ".,:;<=>+*-/%!&~^?|", "", '\0', colour_cyan, effect_normal);

syntax_define (true, true, "0123456789", separators, '\0', colour_pink, effect_bold);
syntax_define (true, true, "abcdefghijklmnopqrstuvwxyz", separators, '\0', colour_white, effect_normal);
syntax_define (true, true, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", separators, '\0', colour_white, effect_bold);
syntax_define (true, true, "_", separators, '\0', colour_white, effect_italic);
}

int main (int argc, char * * argv) {
int offset = 0;
int select = 0;
@@ -353,6 +386,7 @@ int main (int argc, char * * argv) {
echo ("\t -T --flat -- Flat assembly syntax\n");
echo ("\t -F --fortran -- Fortran syntax\n");
echo ("\t -H --shell -- Shell syntax\n");
echo ("\t -X --xofya -- Xofya\n");
exit (log_success);
} else if (string_compare (argv [1], "-C") || string_compare (argv [1], "--c")) {
highlight_c ();
@@ -368,6 +402,8 @@ int main (int argc, char * * argv) {
highlight_fortran ();
} else if (string_compare (argv [1], "-H") || string_compare (argv [1], "--shell")) {
highlight_shell ();
} else if (string_compare (argv [1], "-X") || string_compare (argv [1], "--xofya")) {
highlight_xofya ();
} else {
select = file_type (argv [1]);
buffer = file_import (argv [1]);
@@ -391,6 +427,8 @@ int main (int argc, char * * argv) {
highlight_flat_assembly ();
} else if (select == file_type_fortran_90) {
highlight_fortran ();
/*} else if (select == file_type_xofya) {
highlight_xofya ();*/
} else {
highlight_common ();
}


Loading…
Cancel
Save