⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syntax.c

📁 ReactOS是一些高手根据Windows XP的内核编写出的类XP。内核实现机理和API函数调用几乎相同。甚至可以兼容XP的程序。喜欢研究系统内核的人可以看一看。
💻 C
📖 第 1 页 / 共 4 页
字号:
"    keyword whole sizeof yellow/24\n"
"    keyword whole static yellow/24\n"
"    keyword whole struct yellow/24\n"
"    keyword whole switch yellow/24\n"
"    keyword whole typedef yellow/24\n"
"    keyword whole union yellow/24\n"
"    keyword whole unsigned yellow/24\n"
"    keyword whole void yellow/24\n"
"    keyword whole volatile yellow/24\n"
"    keyword whole while yellow/24\n"
"    keyword whole asm yellow/24\n"
"    keyword whole catch yellow/24\n"
"    keyword whole class yellow/24\n"
"    keyword whole friend yellow/24\n"
"    keyword whole delete yellow/24\n"
"    keyword whole inline yellow/24\n"
"    keyword whole new yellow/24\n"
"    keyword whole operator yellow/24\n"
"    keyword whole private yellow/24\n"
"    keyword whole protected yellow/24\n"
"    keyword whole public yellow/24\n"
"    keyword whole this yellow/24\n"
"    keyword whole throw yellow/24\n"
"    keyword whole template yellow/24\n"
"    keyword whole try yellow/24\n"
"    keyword whole virtual yellow/24\n"
"    keyword whole bool yellow/24\n"
"    keyword whole const_cast yellow/24\n"
"    keyword whole dynamic_cast yellow/24\n"
"    keyword whole explicit yellow/24\n"
"    keyword whole false yellow/24\n"
"    keyword whole mutable yellow/24\n"
"    keyword whole namespace yellow/24\n"
"    keyword whole reinterpret_cast yellow/24\n"
"    keyword whole static_cast yellow/24\n"
"    keyword whole true yellow/24\n"
"    keyword whole typeid yellow/24\n"
"    keyword whole typename yellow/24\n"
"    keyword whole using yellow/24\n"
"    keyword whole wchar_t yellow/24\n"
"    keyword whole ... yellow/24\n"
"\n"
"    keyword /\\* brown/22\n"
"    keyword \\*/ brown/22\n"
"\n"
"    keyword '\\s' brightgreen/16\n"
"    keyword '+' brightgreen/16\n"
"    keyword > yellow/24\n"
"    keyword < yellow/24\n"
"    keyword \\+ yellow/24\n"
"    keyword - yellow/24\n"
"    keyword \\* yellow/24\n"
"    keyword / yellow/24\n"
"    keyword % yellow/24\n"
"    keyword = yellow/24\n"
"    keyword != yellow/24\n"
"    keyword == yellow/24\n"
"    keyword { brightcyan/14\n"
"    keyword } brightcyan/14\n"
"    keyword ( brightcyan/15\n"
"    keyword ) brightcyan/15\n"
"    keyword [ brightcyan/14\n"
"    keyword ] brightcyan/14\n"
"    keyword , brightcyan/14\n"
"    keyword : brightcyan/14\n"
"    keyword ; brightmagenta/19\n"
"context exclusive /\\* \\*/ brown/22\n"
"context linestart # \\n brightred/18\n"
"    keyword \\\\\\n yellow/24\n"
"    keyword /\\**\\*/ brown/22\n"
"    keyword \"+\" red/19\n"
"    keyword <+> red/19\n"
"context \" \" green/6\n"
"    keyword \\\\\" brightgreen/16\n"
"    keyword %% brightgreen/16\n"
"    keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]e brightgreen/16\n"
"    keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]E brightgreen/16\n"
"    keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]f brightgreen/16\n"
"    keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]g brightgreen/16\n"
"    keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]G brightgreen/16\n"
"    keyword %\\[0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]d brightgreen/16\n"
"    keyword %\\[0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]i brightgreen/16\n"
"    keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]o brightgreen/16\n"
"    keyword %\\[0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]u brightgreen/16\n"
"    keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]x brightgreen/16\n"
"    keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]X brightgreen/16\n"
"    keyword %\\[hl\\]n brightgreen/16\n"
"    keyword %\\[.\\]\\[0123456789\\]s brightgreen/16\n"
"    keyword %[*] brightgreen/16\n"
"    keyword %c brightgreen/16\n"
"    keyword \\\\\\\\ brightgreen/16\n"
"\n"
"###############################################################################\n"
"file .\\*ChangeLog$ GNU\\sDistribution\\sChangeLog\\sFile\n"
"\n"
"context default\n"
"    keyword \\s+() brightmagenta/23\n"
"    keyword \\t+() brightmagenta/23\n"
"\n"
"context linestart \\t\\* : brightcyan/17\n"
"context linestart \\s\\s\\s\\s\\s\\s\\s\\s\\* : brightcyan/17\n"
"\n"
"context linestart 19+-+\\s \\n            yellow/24\n"
"    keyword <+@+> 			brightred/19\n"
"context linestart 20+-+\\s \\n            yellow/24\n"
"    keyword <+@+> 			brightred/19\n"
"context linestart Mon\\s+\\s+\\s+\\s \\n     yellow/24\n"
"    keyword <+@+> 			brightred/19\n"
"context linestart Tue\\s+\\s+\\s+\\s \\n     yellow/24\n"
"    keyword <+@+> 			brightred/19\n"
"context linestart Wed\\s+\\s+\\s+\\s \\n     yellow/24\n"
"    keyword <+@+> 			brightred/19\n"
"context linestart Thu\\s+\\s+\\s+\\s \\n     yellow/24\n"
"    keyword <+@+> 			brightred/19\n"
"context linestart Fri\\s+\\s+\\s+\\s \\n     yellow/24\n"
"    keyword <+@+> 			brightred/19\n"
"context linestart Sat\\s+\\s+\\s+\\s \\n     yellow/24\n"
"    keyword <+@+> 			brightred/19\n"
"context linestart Sun\\s+\\s+\\s+\\s \\n     yellow/24\n"
"    keyword <+@+> 			brightred/19\n"
"\n"
"\n"
"###############################################################################\n"
"file .\\*Makefile[\\\\\\.a-z]\\*$ Makefile\n"
"\n"
"context default\n"
"    keyword $(*) yellow/24\n"
"    keyword ${*} brightgreen/16\n"
"    keyword whole linestart include magenta\n"
"    keyword whole linestart endif magenta\n"
"    keyword whole linestart ifeq magenta\n"
"    keyword whole linestart ifneq magenta\n"
"    keyword whole linestart else magenta\n"
"    keyword linestart \\t lightgray/13 red\n"
"    keyword whole .PHONY white/25\n"
"    keyword whole .NOEXPORT white/25\n"
"    keyword = white/25\n"
"    keyword : yellow/24\n"
"    keyword \\\\\\n yellow/24\n"
"# this handles strange cases like @something@@somethingelse@ properly\n"
"    keyword whole @+@ brightmagenta/23 black/0\n"
"    keyword @+@ brightmagenta/23 black/0\n"
"\n"
"context linestart # \\n brown/22\n"
"    keyword whole @+@ brightmagenta/23 black/0\n"
"    keyword @+@ brightmagenta/23 black/0\n"
"\n"
"context exclusive = \\n brightcyan/17\n"
"    keyword \\\\\\n yellow/24\n"
"    keyword $(*) yellow/24\n"
"    keyword ${*} brightgreen/16\n"
"    keyword linestart \\t lightgray/13 red\n"
"    keyword whole @+@ brightmagenta/23 black/0\n"
"    keyword @+@ brightmagenta/23 black/0\n"
"\n"
"context exclusive linestart \\t \\n\n"
"    keyword \\\\\\n yellow/24\n"
"    keyword $(*) yellow/24\n"
"    keyword ${*} brightgreen/16\n"
"    keyword linestart \\t lightgray/13 red\n"
"    keyword whole @+@ brightmagenta/23 black/0\n"
"    keyword @+@ brightmagenta/23 black/0\n"
"\n"
"###############################################################################\n"
"\n"
"file .\\*syntax$ Syntax\\sHighlighting\\sdefinitions\n"
"\n"
"context default\n"
"    keyword whole keyw\\ord yellow/24\n"
"    keyword whole whole\\[\\t\\s\\]l\\inestart brightcyan/17\n"
"    keyword whole whole\\[\\t\\s\\]l\\inestart brightcyan/17\n"
"    keyword whole wh\\oleleft\\[\\t\\s\\]l\\inestart brightcyan/17\n"
"    keyword whole wh\\oleright\\[\\t\\s\\]l\\inestart brightcyan/17\n"
"    keyword whole l\\inestart\\[\\t\\s\\]wh\\ole\n"
"    keyword whole l\\inestart\\[\\t\\s\\]wh\\ole\n"
"    keyword whole l\\inestart\\[\\t\\s\\]wh\\oleleft\n"
"    keyword whole l\\inestart\\[\\t\\s\\]wh\\oleright\n"
"    keyword wholeleft whole\\s brightcyan/17\n"
"    keyword wholeleft whole\\t brightcyan/17\n"
"    keyword whole wh\\oleleft brightcyan/17\n"
"    keyword whole wh\\oleright brightcyan/17\n"
"    keyword whole lin\\[e\\]start brightcyan/17\n"
"    keyword whole c\\ontext\\[\\t\\s\\]exclusive brightred/18\n"
"    keyword whole c\\ontext\\[\\t\\s\\]default brightred/18\n"
"    keyword whole c\\ontext brightred/18\n"
"    keyword whole wh\\olechars\\[\\t\\s\\]left brightcyan/17\n"
"    keyword whole wh\\olechars\\[\\t\\s\\]right brightcyan/17\n"
"    keyword whole wh\\olechars brightcyan/17\n"
"    keyword whole f\\ile brightgreen/6\n"
"\n"
"    keyword whole 0 lightgray/0	blue/26\n"
"    keyword whole 1 lightgray/1	blue/26\n"
"    keyword whole 2 lightgray/2	blue/26\n"
"    keyword whole 3 lightgray/3	blue/26\n"
"    keyword whole 4 lightgray/4	blue/26\n"
"    keyword whole 5 lightgray/5	blue/26\n"
"    keyword whole 6 lightgray/6\n"
"    keyword whole 7 lightgray/7\n"
"    keyword whole 8 lightgray/8\n"
"    keyword whole 9 lightgray/9\n"
"    keyword whole 10 lightgray/10\n"
"    keyword whole 11 lightgray/11\n"
"    keyword whole 12 lightgray/12\n"
"    keyword whole 13 lightgray/13\n"
"    keyword whole 14 lightgray/14\n"
"    keyword whole 15 lightgray/15\n"
"    keyword whole 16 lightgray/16\n"
"    keyword whole 17 lightgray/17\n"
"    keyword whole 18 lightgray/18\n"
"    keyword whole 19 lightgray/19\n"
"    keyword whole 20 lightgray/20\n"
"    keyword whole 21 lightgray/21\n"
"    keyword whole 22 lightgray/22\n"
"    keyword whole 23 lightgray/23\n"
"    keyword whole 24 lightgray/24\n"
"    keyword whole 25 lightgray/25\n"
"    keyword whole 26 lightgray/26\n"
"\n"
"    keyword wholeleft black\\/ black/0\n"
"    keyword wholeleft red\\/ red/DarkRed\n"
"    keyword wholeleft green\\/ green/green3\n"
"    keyword wholeleft brown\\/ brown/saddlebrown\n"
"    keyword wholeleft blue\\/ blue/blue3\n"
"    keyword wholeleft magenta\\/ magenta/magenta3\n"
"    keyword wholeleft cyan\\/ cyan/cyan3\n"
"    keyword wholeleft lightgray\\/ lightgray/lightgray\n"
"    keyword wholeleft gray\\/ gray/gray\n"
"    keyword wholeleft brightred\\/ brightred/red\n"
"    keyword wholeleft brightgreen\\/ brightgreen/green1\n"
"    keyword wholeleft yellow\\/ yellow/yellow\n"
"    keyword wholeleft brightblue\\/ brightblue/blue1\n"
"    keyword wholeleft brightmagenta\\/ brightmagenta/magenta\n"
"    keyword wholeleft brightcyan\\/ brightcyan/cyan1\n"
"    keyword wholeleft white\\/ white/26\n"
"\n"
"context linestart # \\n brown/22\n"
"\n"
"file \\.\\* Help\\ssupport\\sother\\sfile\\stypes\n"
"context default\n"
"file \\.\\* by\\scoding\\srules\\sin\\s~/.cedit/syntax.\n"
"context default\n"
"file \\.\\* See\\sman/syntax\\sin\\sthe\\ssource\\sdistribution\n"
"context default\n"
"file \\.\\* and\\sconsult\\sthe\\sman\\spage.\n"
"context default\n";



FILE *upgrade_syntax_file (char *syntax_file)
{
    FILE *f;
    char line[80];
    f = fopen (syntax_file, "r");
    if (!f) {
	f = fopen (syntax_file, "w");
	if (!f)
	    return 0;
	fprintf (f, "%s", syntax_text);
	fclose (f);
	return fopen (syntax_file, "r");
    }
    memset (line, 0, 79);
    fread (line, 80, 1, f);
    if (!strstr (line, "syntax rules version")) {
	goto rename_rule_file;
    } else {
	char *p;
	p = strstr (line, "version") + strlen ("version") + 1;
	if (atoi (p) < atoi (CURRENT_SYNTAX_RULES_VERSION)) {
	    char s[1024];
	  rename_rule_file:
	    strcpy (s, syntax_file);
	    strcat (s, ".OLD");
	    unlink (s);
	    rename (syntax_file, s);
	    unlink (syntax_file);	/* might rename() fail ? */
#ifdef MIDNIGHT
	    edit_message_dialog (" Load Syntax Rules ", " Your syntax rule file is outdated \n A new rule file is being installed. \n Your old rule file has been saved with a .OLD extension. ");
#else
	    CMessageDialog (0, 20, 20, 0, " Load Syntax Rules ", " Your syntax rule file is outdated \n A new rule file is being installed. \n Your old rule file has been saved with a .OLD extension. ");
#endif
	    return upgrade_syntax_file (syntax_file);
	} else {
	    rewind (f);
	    return (f);
	}
    }
    return 0;			/* not reached */
}

/* returns -1 on file error, line number on error in file syntax */
static int edit_read_syntax_file (WEdit * edit, char **names, char *syntax_file, char *editor_file, char *type)
{
    FILE *f;
    regex_t r;
    regmatch_t pmatch[1];
    char *args[1024], *l;
    int line = 0;
    int argc;
    int result = 0;
    int count = 0;

    f = upgrade_syntax_file (syntax_file);
    if (!f)
	return -1;
    args[0] = 0;

    for (;;) {
	line++;
	if (!read_one_line (&l, f))
	    break;
	get_args (l, args, &argc);
	if (!args[0]) {
	} else if (!strcmp (args[0], "file")) {
	    if (!args[1] || !args[2]) {
		result = line;
		break;
	    }
	    if (regcomp (&r, args[1], REG_EXTENDED)) {
		result = line;
		break;
	    }
	    if (names) {
		names[count++] = strdup (args[2]);
		names[count] = 0;
	    } else if (type) {
		if (!strcmp (type, args[2]))
		    goto found_type;
	    } else if (editor_file && edit) {
		if (!regexec (&r, editor_file, 1, pmatch, 0)) {
		    int line_error;
		  found_type:
		    line_error = edit_read_syntax_rules (edit, f);
		    if (line_error)
			result = line + line_error;
		    else {
			syntax_free (edit->syntax_type);
			edit->syntax_type = strdup (args[2]);
			if (syntax_change_callback)
#ifdef MIDNIGHT
			    (*syntax_change_callback) (&edit->widget);
#else
			    (*syntax_change_callback) (edit->widget);
#endif
/* if there are no rules then turn off syntax highlighting for speed */
			if (!edit->rules[1])
			    if (!edit->rules[0]->keyword[1])
				edit_free_syntax_rules (edit);
		    }
		    break;
		}
	    }
	}
	free_args (args);
	syntax_free (l);
    }
    free_args (args);
    syntax_free (l);

    fclose (f);

    return result;
}

/* loads rules into edit struct. one of edit or names must be zero. if
   edit is zero, a list of types will be stored into name. type may be zero
   in which case the type will be selected according to the filename. */
void edit_load_syntax (WEdit * edit, char **names, char *type)
{
    int r;
    char *f;

    edit_free_syntax_rules (edit);

#ifdef MIDNIGHT
    if (!SLtt_Use_Ansi_Colors)
	return;
#endif

    if (edit) {
	if (!edit->filename)
	    return;
	if (!*edit->filename && !type)
	    return;
    }
    f = catstrs (home_dir, SYNTAX_FILE, 0);
    r = edit_read_syntax_file (edit, names, f, edit ? edit->filename : 0, type);
    if (r == -1) {
	edit_free_syntax_rules (edit);
	edit_error_dialog (_ (" Load syntax file "), _ (" File access error "));
	return;
    }
    if (r) {
	char s[80];
	edit_free_syntax_rules (edit);
	sprintf (s, _ (" Syntax error in file %s on line %d "), f, r);
	edit_error_dialog (_ (" Load syntax file "), s);
	return;
    }
}

#else

int option_syntax_highlighting = 0;

void edit_load_syntax (WEdit * edit, char **names, char *type)
{
    return;
}

void edit_free_syntax_rules (WEdit * edit)
{
    return;
}

void edit_get_syntax_color (WEdit * edit, long byte_index, int *fg, int *bg)
{
    *fg = NORMAL_COLOR;
}

#endif		/* !defined(MIDNIGHT) || defined(HAVE_SYNTAXH) */




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -