编程论坛's Archiver

brague 发表于 2008-5-29 23:16

下载了 感谢楼主 分享

Loli 发表于 2008-6-7 23:19

不用谢
发代码前高亮一下,其它人会谢谢你

[img]http://yzfy.byethost2.com/list.php[/img][color=white]

xiaotnai 发表于 2008-6-8 01:54

传说中的伪开源?

海纳百川 发表于 2008-6-8 10:22

不错我顶一个哦

oaipunk 发表于 2008-6-8 17:26

先收下了[tk03]

江湖无痕 发表于 2008-6-8 20:56

很好好强大的!

Loli 发表于 2008-6-14 14:54

有更新,加入了更多的关键字,和一些常用的函数进行高亮



[img]http://yzfy.bigmb.com/list.php[/img][color=white]

VxWorks 发表于 2008-6-14 18:03

看到你更新了就想拿我的fish和你比一下,看下面的测试用例:

[quote][font=新宋体][size=2][color=#008000]/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
[/color][color=#FF0000]#define [/color]keyword_test:

[color=#0000FF]auto enum [/color]restrict [color=#0000FF]unsigned break extern return
void case float short volatile char for signed
while const goto sizeof [/color]_Bool [color=#0000FF]continue if static
[/color]_Complex [color=#0000FF]default inline struct [/color]_Imaginary [color=#0000FF]do  int
switch double long typedef else register  union

int [/color][color=#008080]test[/color]()
[color=#800000]{
    [/color][color=#0000FF]int [/color]a=[color=#800080]10L[/color];
    [color=#0000FF]int [/color]b=0x2efd+[color=#800080]0X0001[/color]+0x98ga+22h;

    [color=#0000FF]double [/color]f1=[color=#800080]0[/color].2e3+[color=#800080]5[/color].[color=#800080]4E5[/color]+[color=#800080]5E[/color]-[color=#800080]3[/color]+[color=#800080]5E[/color]+[color=#800080]3[/color]+[color=#800080]5[/color].+.[color=#800080]5[/color];

    [color=#0000FF]char [/color]*[color=#FF0000]string[/color]=[color=#FF00FF]"hello\n"[/color];         [color=#008000]/*hello world*/       
    [/color][color=#0000FF]wchar_t [/color]a=[color=#800080]L[/color][color=#FF00FF]"hello"[/color];        [color=#008000]// 你好
    [/color][color=#0000FF]return [/color][color=#800080]0[/color];
[color=#800000]}


[/color][/size][/font][/quote]

下面是fish的结果:
[quote]
[color=a020f0]#define[/color] [color=ff00ff]keyword_test:[/color]

[color=2e8b57]auto[/color] [color=2e8b57]enum[/color] [color=2e8b57]restrict[/color] [color=2e8b57]unsigned[/color] [color=2e8b57]break[/color] [color=2e8b57]extern[/color] [color=2e8b57]return[/color]
[color=2e8b57]void[/color] [color=2e8b57]case[/color] [color=2e8b57]float[/color] [color=2e8b57]short[/color] [color=2e8b57]volatile[/color] [color=2e8b57]char[/color] [color=2e8b57]for[/color] [color=2e8b57]signed[/color]
[color=2e8b57]while[/color] [color=2e8b57]const[/color] [color=2e8b57]goto[/color] [color=2e8b57]sizeof[/color] [color=2e8b57]_Bool[/color] [color=2e8b57]continue[/color] [color=2e8b57]if[/color] [color=2e8b57]static[/color]
[color=2e8b57]_Complex[/color] [color=2e8b57]default[/color] [color=2e8b57]inline[/color] [color=2e8b57]struct[/color] [color=2e8b57]_Imaginary[/color] [color=2e8b57]do[/color]  [color=2e8b57]int[/color]
[color=2e8b57]switch[/color] [color=2e8b57]double[/color] [color=2e8b57]long[/color] [color=2e8b57]typedef[/color] [color=2e8b57]else[/color] [color=2e8b57]register[/color]  [color=2e8b57]union[/color]

[color=2e8b57]int[/color] [color=000000]test[/color]()
{
        [color=2e8b57]int[/color] [color=000000]a[/color]=[color=ff00ff]10L[/color];
        [color=2e8b57]int[/color] [color=000000]b[/color]=[color=ff00ff]0x2efd[/color]+[color=ff00ff]0X0001[/color]+[color=ff00ff]0x98[/color][color=000000]ga[/color]+[color=ff00ff]22[/color][color=000000]h[/color];

        [color=2e8b57]double[/color] [color=000000]f1[/color]=[color=ff00ff]0.2e3[/color]+[color=ff00ff]5.4E5[/color]+[color=ff00ff]5E-3[/color]+[color=ff00ff]5E+3[/color]+[color=ff00ff]5.[/color]+[color=ff00ff].5[/color];

        [color=2e8b57]char[/color] *[color=000000]string[/color]=[color=ff00ff]"hello\n"[/color];         [color=0000ff]/*hello world*/[/color]        
        [color=000000]wchar_t[/color] [color=000000]a[/color]=[color=ff00ff]L"hello"[/color];        [color=0000ff]// 你好
[/color]        [color=2e8b57]return[/color] [color=ff00ff]0[/color];
}
[/quote]

偶的fish兼容C99标准,偶不由得要偷偷乐一下。

flyue 发表于 2008-6-14 18:34

我发个

[quote][font=Fixedsys][size=4][color=008000]/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/[/color]
[color=800080]#define[/color] keyword_test:

[color=0000ff]auto[/color] [color=0000ff]enum[/color] restrict [color=0000ff]unsigned[/color] [color=0000ff]break[/color] [color=0000ff]extern[/color] [color=0000ff]return[/color]
[color=0000ff]void[/color] [color=0000ff]case[/color] [color=0000ff]float[/color] [color=0000ff]short[/color] [color=0000ff]volatile[/color] [color=0000ff]char[/color] [color=0000ff]for[/color] [color=0000ff]signed[/color]
[color=0000ff]while[/color] [color=0000ff]const[/color] [color=0000ff]goto[/color] [color=0000ff]sizeof[/color] _Bool [color=0000ff]continue[/color] [color=0000ff]if[/color] [color=0000ff]static[/color]
_Complex [color=0000ff]default[/color] [color=0000ff]inline[/color] [color=0000ff]struct[/color] _Imaginary [color=0000ff]do[/color]  [color=0000ff]int[/color]
[color=0000ff]switch[/color] [color=0000ff]double[/color] [color=0000ff]long[/color] [color=0000ff]typedef[/color] [color=0000ff]else[/color] [color=0000ff]register[/color]  [color=0000ff]union[/color]

[color=0000ff]int[/color] test()
{
    [color=0000ff]int[/color] a=10L;
    [color=0000ff]int[/color] b=0x2efd+0X0001+0x98ga+22h;

    [color=0000ff]double[/color] f1=0.2e3+5.4E5+5E-3+5E+3+5.+.5;

    [color=0000ff]char[/color] *string=[color=ff0000]"hello\n"[/color];     [color=008000]/*hello world*/[/color]   
    wchar_t a=L[color=ff0000]"hello"[/color];    [color=008000]// 你好
[/color]    [color=0000ff]return[/color] 0;
}[/size][/font][/quote]

[[it] 本帖最后由 flyue 于 2008-6-14 18:36 编辑 [/it]]

flyue 发表于 2008-6-14 18:34

hohohoho
我前段时间也做了一个,是按VC6.0的样本来做地

[quote][font=Fixedsys][size=4]   [color=0000ff]bool[/color]    [color=0000ff]bool[/color]
   [color=0000ff]char[/color]    [color=0000ff]char[/color]
   [color=0000ff]int[/color]    [color=0000ff]int[/color]
   [color=0000ff]float[/color]    [color=0000ff]float[/color]
   [color=0000ff]double[/color]    [color=0000ff]double[/color]
   [color=0000ff]signed[/color]    [color=0000ff]signed[/color]
   [color=0000ff]unsigned[/color]    [color=0000ff]unsigned[/color]
   [color=0000ff]short[/color]    [color=0000ff]short[/color]
   [color=0000ff]long[/color]    [color=0000ff]long[/color]
   [color=0000ff]struct[/color]    [color=0000ff]struct[/color]
   [color=0000ff]enum[/color]    [color=0000ff]enum[/color]
   [color=0000ff]union[/color]    [color=0000ff]union[/color]
   [color=0000ff]delete[/color]    [color=0000ff]delete[/color]
   [color=0000ff]new[/color]    [color=0000ff]new[/color]
   [color=0000ff]true[/color]    [color=0000ff]true[/color]
   [color=0000ff]false[/color]    [color=0000ff]false[/color]
   [color=0000ff]const[/color]    [color=0000ff]const[/color]
   [color=0000ff]register[/color]    [color=0000ff]register[/color]
   [color=0000ff]auto[/color]    [color=0000ff]auto[/color]
   [color=0000ff]static[/color]    [color=0000ff]static[/color]
   [color=0000ff]extern[/color]    [color=0000ff]extern[/color]
   [color=0000ff]volatile[/color]    [color=0000ff]volatile[/color]
   [color=0000ff]typedef[/color]    [color=0000ff]typedef[/color]
   [color=0000ff]for[/color]    [color=0000ff]for[/color]
   [color=0000ff]while[/color]    [color=0000ff]while[/color]
   [color=0000ff]do[/color]    [color=0000ff]do[/color]
   [color=0000ff]switch[/color]    [color=0000ff]switch[/color]
   [color=0000ff]case[/color]    [color=0000ff]case[/color]
   [color=0000ff]default[/color]    [color=0000ff]default[/color]
   [color=0000ff]break[/color]    [color=0000ff]break[/color]
   [color=0000ff]continue[/color]    [color=0000ff]continue[/color]
   [color=0000ff]try[/color]    [color=0000ff]try[/color]
   [color=0000ff]throw[/color]    [color=0000ff]throw[/color]
   [color=0000ff]catch[/color]    [color=0000ff]catch[/color]
   [color=0000ff]finally[/color]    [color=0000ff]finally[/color]
   [color=0000ff]if[/color]    [color=0000ff]if[/color]
   [color=0000ff]else[/color]    [color=0000ff]else[/color]

   [color=0000ff]operator[/color]    [color=0000ff]operator[/color]
   [color=0000ff]const_cast[/color]    [color=0000ff]const_cast[/color]
   [color=0000ff]static_cast[/color]    [color=0000ff]static_cast[/color]
   [color=0000ff]dynamic_cast[/color]    [color=0000ff]dynamic_cast[/color]
   [color=0000ff]reinterpret_cast[/color]    [color=0000ff]reinterpret_cast[/color]
   [color=0000ff]sizeof[/color]    [color=0000ff]sizeof[/color]
   [color=0000ff]typeid[/color]    [color=0000ff]typeid[/color]
   [color=0000ff]typename[/color]    [color=0000ff]typename[/color]
   [color=0000ff]type_info[/color]    [color=0000ff]type_info[/color]
   [color=0000ff]bad_cast[/color]    [color=0000ff]bad_cast[/color]
   [color=0000ff]bad_typeid[/color]    [color=0000ff]bad_typeid[/color]

   [color=0000ff]using[/color]    [color=0000ff]using[/color]
   [color=0000ff]namespace[/color]    [color=0000ff]namespace[/color]
   [color=0000ff]class[/color]    [color=0000ff]class[/color]
   [color=0000ff]__single_inheritance[/color]    [color=0000ff]__single_inheritance[/color]
   [color=0000ff]__multiple_inheritance[/color]    [color=0000ff]__multiple_inheritance[/color]
   [color=0000ff]__virtual_inheritance[/color]    [color=0000ff]__virtual_inheritance[/color]
   [color=0000ff]private[/color]    [color=0000ff]private[/color]
   [color=0000ff]protected[/color]    [color=0000ff]protected[/color]
   [color=0000ff]public[/color]    [color=0000ff]public[/color]
   [color=0000ff]friend[/color]    [color=0000ff]friend[/color]
   [color=0000ff]virtual[/color]    [color=0000ff]virtual[/color]
   [color=0000ff]this[/color]    [color=0000ff]this[/color]
   [color=0000ff]explicit[/color]    [color=0000ff]explicit[/color]
   [color=0000ff]except[/color]    [color=0000ff]except[/color]
   [color=0000ff]template[/color]    [color=0000ff]template[/color]
   [color=0000ff]inline[/color]    [color=0000ff]inline[/color]
   [color=0000ff]mutable[/color]    [color=0000ff]mutable[/color]

   [color=0000ff]void[/color]    [color=0000ff]void[/color]
   [color=0000ff]return[/color]    [color=0000ff]return[/color]
   [color=0000ff]goto[/color]    [color=0000ff]goto[/color]
   [color=008000]//         
[/color]
   [color=0000ff]__int8[/color]    [color=0000ff]__int8[/color]
   [color=0000ff]__int16[/color]    [color=0000ff]__int16[/color]
   [color=0000ff]__int32[/color]    [color=0000ff]__int32[/color]
   [color=0000ff]__int64[/color]    [color=0000ff]__int64[/color]

   [color=0000ff]allocate[/color]    [color=0000ff]allocate[/color]
   [color=0000ff]dllexport[/color]    [color=0000ff]dllexport[/color]
   [color=0000ff]dllimport[/color]    [color=0000ff]dllimport[/color]
   [color=0000ff]selectany[/color]    [color=0000ff]selectany[/color]
   [color=0000ff]uuid[/color]    [color=0000ff]uuid[/color]
   [color=0000ff]property[/color]    [color=0000ff]property[/color]
   [color=0000ff]nothrow[/color]    [color=0000ff]nothrow[/color]
   [color=0000ff]thread[/color]    [color=0000ff]thread[/color]
   [color=0000ff]naked[/color]    [color=0000ff]naked[/color]

   [color=0000ff]__asm[/color]    [color=0000ff]__asm[/color]
   [color=0000ff]_asm[/color]    [color=0000ff]_asm[/color]
   [color=0000ff]__declspec[/color]    [color=0000ff]__declspec[/color]
   [color=0000ff]_declspec[/color]    [color=0000ff]_declspec[/color]
   [color=0000ff]__cdecl[/color]    [color=0000ff]__cdecl[/color]
   [color=0000ff]_cdecl[/color]    [color=0000ff]_cdecl[/color]
   [color=0000ff]__stdcall[/color]    [color=0000ff]__stdcall[/color]
   [color=0000ff]_stdcall[/color]    [color=0000ff]_stdcall[/color]
   [color=0000ff]__fastcall[/color]    [color=0000ff]__fastcall[/color]
   [color=0000ff]_fastcall[/color]    [color=0000ff]_fastcall[/color]
   [color=0000ff]__try[/color]    [color=0000ff]__try[/color]
   [color=0000ff]_try[/color]    [color=0000ff]_try[/color]
   [color=0000ff]__finally[/color]    [color=0000ff]__finally[/color]
   [color=0000ff]_finally[/color]    [color=0000ff]_finally[/color]
   [color=0000ff]__based[/color]    [color=0000ff]__based[/color]
   [color=0000ff]_based[/color]    [color=0000ff]_based[/color]
   [color=0000ff]__leave[/color]    [color=0000ff]__leave[/color]
   [color=0000ff]_leave[/color]    [color=0000ff]_leave[/color]
   [color=0000ff]__except[/color]    [color=0000ff]__except[/color]
   [color=0000ff]_except[/color]    [color=0000ff]_except[/color]
   [color=0000ff]__inline[/color]    [color=0000ff]__inline[/color]
   [color=0000ff]_inline[/color]    [color=0000ff]_inline[/color]
   [color=0000ff]__uuidof[/color]    [color=0000ff]__uuidof[/color][/size][/font][/quote]

chenclok 发表于 2008-6-15 15:57

[font=新宋体][size=2][color=#008000]/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
[/color][color=#FF0000]#include <stdio.h>
[/color][color=#FF0000]#include <stdarg.h>  [/color][color=#008000]/*最主要的就是这个头文件了*/
[/color][color=#FF0000]#include <stdlib.h>  [/color][color=#008000]/*这个和变参函数一点关系也没有,这个是我为了防止
                    屏幕一闪而过调用system("pause")用的*/


[/color][color=#FF0000]#define [/color]_max_args [color=#800080]31  [/color][color=#008000]/*定义参数的最大值*/

[/color][color=#0000FF]int [/color][color=#008080]sum[/color]([color=#0000FF]int [/color]n_param,...)
[color=#800000]{
    [/color][color=#FF8000]va_list [/color]ap;  [color=#008000]/*定义一个参数列表*/
    [/color][color=#0000FF]int [/color]i;
    [color=#0000FF]int [/color]s=[color=#800080]0[/color];
    [color=#0000FF]if [/color](n_param>_max_args)
        n_param=_max_args;
    [color=#FF8000]va_start[/color](ap,n_param);  [color=#008000]/*开始读取变量,n_param表示从变量n_param后面开始读取*/
    [/color][color=#0000FF]for [/color](i=[color=#800080]0[/color];i<n_param;i++)
        s=s+[color=#FF8000]va_arg[/color](ap,[color=#0000FF]int[/color]); [color=#008000]/*va_arg表示从...里面读取一个int类型变量,然后把ap指向
                            下一个变量*/
    [/color][color=#FF8000]va_end[/color](ap); [color=#008000]/*不要忘记这个哦*/
    [/color][color=#0000FF]return [/color]s;
[color=#800000]}

[/color][color=#0000FF]int [/color][color=#FF0000]main[/color]()
[color=#800000]{
    [/color][color=#FF0000]printf[/color]([color=#FF00FF]"%d"[/color],[color=#008080]sum[/color]([color=#800080]5[/color],[color=#800080]1[/color],[color=#800080]2[/color],[color=#800080]3[/color],[color=#800080]4[/color],[color=#800080]5[/color]));
    [color=#008080]system[/color]([color=#FF00FF]"pause"[/color]);
    [color=#0000FF]return [/color][color=#800080]0[/color];
[color=#800000]} [/color][/size][/font]

雨中飛燕 发表于 2008-6-15 23:00

[quote][font=fixedsys][size=2][color=#008000]/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
[/color][color=#FF0000]#define[/color][color=#FF00FF] keyword_test:

[/color][color=#0000FF]auto enum restrict unsigned break extern return
void case float short volatile char for signed
while const goto sizeof _Bool continue if static
_Complex default inline struct _Imaginary do  int
switch double long typedef else register  union

int [/color][color=#008080]test[/color]()
[color=#800000]{
    [/color][color=#0000FF]int [/color]a=[color=#8000C0]10L[/color];
    [color=#0000FF]int [/color]b=[color=#8000C0]0x2efd[/color]+[color=#8000C0]0X0001[/color]+[color=#8000C0]0x98ga[/color]+[color=#8000C0]22h[/color];

    [color=#0000FF]double [/color]f1=[color=#8000C0]0[/color].[color=#8000C0]2e3[/color]+[color=#8000C0]5[/color].[color=#8000C0]4E5[/color]+[color=#8000C0]5E[/color]-[color=#8000C0]3[/color]+[color=#8000C0]5E[/color]+[color=#8000C0]3[/color]+[color=#8000C0]5[/color].+.[color=#8000C0]5[/color];

    [color=#0000FF]char [/color]*[color=#FF0000]string[/color]=[color=#FF00FF]"hello\n"[/color];     [color=#008000]/*hello world*/   
    [/color][color=#0000FF]wchar_t [/color]a=[color=#800080]L[/color][color=#FF00FF]"hello"[/color];    [color=#008000]// 你好
    [/color][color=#0000FF]return [/color][color=#8000C0]0[/color];
[color=#800000]}
[/color][/size][/font][/quote]

版本更新,添加了更多的关键字,添加了部分特殊处理


[img]http://yzfy.bigmb.com/list.php[/img][color=white]

[[it] 本帖最后由 雨中飛燕 于 2008-6-15 23:09 编辑 [/it]]

菜鸟选手 发表于 2008-6-15 23:25

[quote][font=新宋体][size=2][color=#008000]/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
[/color][color=#FF0000]#include <iostream.h>
[/color][color=#0000FF]void [/color][color=#FF0000]main[/color]()
[color=#800000]{
[/color][color=#0000FF]int [/color][color=#800080]N[/color], i, j=[color=#800080]1[/color], count=[color=#800080]0[/color], countTemp=[color=#800080]0[/color];  [color=#008000]//line 1
[/color][color=#FF0000]cin [/color]>>[color=#800080]N[/color];
[color=#0000FF]for[/color](i=[color=#800080]N[/color]; i>=-[color=#800080]N[/color]; i--, j=[color=#800080]1[/color], count +=((countTemp-[color=#800080]1[/color])*[color=#800080]2[/color]+[color=#800080]1[/color]), countTemp=[color=#800080]0[/color])
            [color=#008000]//line 2
[/color][color=#800000]{
[/color][color=#0000FF]while[/color](countTemp++, (j*(j++)+i*i)<=[color=#800080]N[/color]*[color=#800080]N[/color]);  [color=#008000]//line 3
[/color][color=#800000]}
[/color][color=#0000FF]double [/color]output = [color=#0000FF]double[/color](count)/[color=#0000FF]double[/color]([color=#800080]N[/color]*[color=#800080]N[/color]);  [color=#008000]//line 4
[/color][color=#FF0000]cout[/color].[color=#008080]precision[/color]([color=#800080]15[/color]);
[color=#FF0000]cout [/color]<<output<<[color=#FF0000]endl[/color];
[color=#800000]} [/color][/size][/font][/quote]


...~ 我这个貌似是老的!

[[it] 本帖最后由 菜鸟选手 于 2008-6-15 23:26 编辑 [/it]]

菜鸟选手 发表于 2008-6-15 23:30

[quote][font=新宋体][size=2][color=#008000]/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
[/color][color=#FF0000]#include <stdio.h>
[/color][color=#FF0000]#include <stdlib.h>
[/color][color=#FF0000]#define[/color][color=#FF00FF] N 5

[/color][color=#0000FF]int [/color][color=#FF0000]main[/color]([color=#0000FF]void[/color]) [color=#800000]{
    [/color][color=#0000FF]int [/color]arr1[color=#800000][[/color][color=#800080]N[/color][color=#800000]][[/color][color=#800080]N[/color][color=#800000]] [/color]= [color=#800000]{
        {[/color][color=#8000C0]1[/color], [color=#8000C0]2[/color], [color=#8000C0]3[/color],  [color=#8000C0]4[/color],   [color=#8000C0]5[/color][color=#800000]}[/color],
        [color=#800000]{[/color][color=#8000C0]0[/color], [color=#8000C0]6[/color], [color=#8000C0]7[/color],  [color=#8000C0]8[/color],   [color=#8000C0]9[/color][color=#800000]}[/color],
        [color=#800000]{[/color][color=#8000C0]0[/color], [color=#8000C0]0[/color], [color=#8000C0]10[/color], [color=#8000C0]11[/color], [color=#8000C0]12[/color][color=#800000]}[/color],
        [color=#800000]{[/color][color=#8000C0]0[/color], [color=#8000C0]0[/color], [color=#8000C0]0[/color],  [color=#8000C0]13[/color], [color=#8000C0]14[/color][color=#800000]}[/color],
        [color=#800000]{[/color][color=#8000C0]0[/color], [color=#8000C0]0[/color], [color=#8000C0]0[/color],  [color=#8000C0]0[/color],  [color=#8000C0]15[/color][color=#800000]}}[/color];

    [color=#0000FF]int [/color]arr2[color=#800000][[/color][color=#800080]N[/color]*([color=#8000C0]1[/color]+[color=#800080]N[/color])/[color=#8000C0]2[/color][color=#800000]] [/color]= [color=#800000]{[/color][color=#8000C0]0[/color][color=#800000]}[/color];

    [color=#0000FF]int [/color]i, j, loc = [color=#8000C0]0[/color];

    [color=#FF0000]printf[/color]([color=#FF00FF]"原二维资料:\n"[/color]);
    [color=#0000FF]for[/color](i = [color=#8000C0]0[/color]; i < [color=#800080]N[/color]; i++) [color=#800000]{
        [/color][color=#0000FF]for[/color](j = [color=#8000C0]0[/color]; j < [color=#800080]N[/color]; j++) [color=#800000]{
            [/color][color=#FF0000]printf[/color]([color=#FF00FF]"%4d"[/color], arr1[color=#800000][[/color]i[color=#800000]][[/color]j[color=#800000]][/color]);
        [color=#800000]}
        [/color][color=#FF0000]printf[/color]([color=#FF00FF]"\n"[/color]);
    [color=#800000]}

    [/color][color=#FF0000]printf[/color]([color=#FF00FF]"\n以列为主:"[/color]);
    [color=#0000FF]for[/color](i = [color=#8000C0]0[/color]; i < [color=#800080]N[/color]; i++) [color=#800000]{
        [/color][color=#0000FF]for[/color](j = [color=#8000C0]0[/color]; j < [color=#800080]N[/color]; j++) [color=#800000]{
            [/color][color=#0000FF]if[/color](arr1[color=#800000][[/color]i[color=#800000]][[/color]j[color=#800000]] [/color]!= [color=#8000C0]0[/color])
                arr2[color=#800000][[/color]loc++[color=#800000]] [/color]= arr1[color=#800000][[/color]i[color=#800000]][[/color]j[color=#800000]][/color];
        [color=#800000]}
    }
    [/color][color=#0000FF]for[/color](i = [color=#8000C0]0[/color]; i < [color=#800080]N[/color]*([color=#8000C0]1[/color]+[color=#800080]N[/color])/[color=#8000C0]2[/color]; i++)
        [color=#FF0000]printf[/color]([color=#FF00FF]"%d "[/color], arr2[color=#800000][[/color]i[color=#800000]][/color]);

    [color=#FF0000]printf[/color]([color=#FF00FF]"\n输入索引(i, j):"[/color]);
    [color=#FF0000]scanf[/color]([color=#FF00FF]"%d, %d"[/color], &i, &j);
    loc = [color=#800080]N[/color]*i - i*(i+[color=#8000C0]1[/color])/[color=#8000C0]2 [/color]+ j;
    [color=#FF0000]printf[/color]([color=#FF00FF]"(%d, %d) = %d"[/color], i, j, arr2[color=#800000][[/color]loc[color=#800000]][/color]);

    [color=#FF0000]printf[/color]([color=#FF00FF]"\n"[/color]);
    [color=#0000FF]return [/color][color=#8000C0]0[/color];
[color=#800000]}
[/color][/size][/font][/quote]

试试新的有什么区别?

kyln 发表于 2008-6-16 00:35

我感觉对程序代码进行正则搜索,匹配到关键字就对其进行正则替换就可能实现这个软件的功能吧
有空也搞个玩玩[tk20]

StarWing83 发表于 2008-6-16 04:17

[quote][font=新宋体][size=2][color=#008000]/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
[/color][color=#FF0000]#define[/color][color=#FF00FF] keyword_test:

[/color][color=#0000FF]auto enum restrict unsigned break extern return
void case float short volatile char for signed
while const goto sizeof _Bool continue if static
_Complex default inline struct _Imaginary do  int
switch double long typedef else register  union

int [/color][color=#008080]test[/color]()
[color=#800000]{
    [/color][color=#0000FF]int [/color]a=[color=#8000C0]10L[/color];
    [color=#0000FF]int [/color]b=[color=#8000C0]0x2efd[/color]+[color=#8000C0]0X0001[/color]+[color=#8000C0]0x98ga[/color]+[color=#8000C0]22h[/color];

    [color=#0000FF]double [/color]f1=[color=#8000C0]0[/color].[color=#8000C0]2e3[/color]+[color=#8000C0]5[/color].[color=#8000C0]4E5[/color]+[color=#8000C0]5E[/color]-[color=#8000C0]3[/color]+[color=#8000C0]5E[/color]+[color=#8000C0]3[/color]+[color=#8000C0]5[/color].+.[color=#8000C0]5[/color];

    [color=#0000FF]char [/color]*[color=#FF0000]string[/color]=[color=#FF00FF]"hello\n"[/color];     [color=#008000]/*hello world*/   
    [/color][color=#0000FF]wchar_t [/color]a=[color=#800080]L[/color][color=#FF00FF]"hello"[/color];    [color=#008000]// 你好
    [/color][color=#0000FF]return [/color][color=#8000C0]0[/color];
[color=#800000]}[/color][/size][/font][/quote]

不错,很不错~~~!

StarWing83 发表于 2008-6-16 04:17

额……小数点和指数的符号还是没有正确处理啊……

jass2072 发表于 2008-6-16 08:39

支持你  燕子

VxWorks 发表于 2008-6-16 09:40

忙了一天,只改了关键字和宏,在浮点常量上还有问题。
再和偶的标准着色方案对比一下:
[quote]
[color=#a020f0]#define[/color] [color=#ff00ff]keyword_test:[/color]

[color=#2e8b57]auto[/color] [color=#2e8b57]enum[/color] [color=#2e8b57]restrict[/color] [color=#2e8b57]unsigned[/color] [color=#2e8b57]break[/color] [color=#2e8b57]extern[/color] [color=#2e8b57]return[/color]
[color=#2e8b57]void[/color] [color=#2e8b57]case[/color] [color=#2e8b57]float[/color] [color=#2e8b57]short[/color] [color=#2e8b57]volatile[/color] [color=#2e8b57]char[/color] [color=#2e8b57]for[/color] [color=#2e8b57]signed[/color]
[color=#2e8b57]while[/color] [color=#2e8b57]const[/color] [color=#2e8b57]goto[/color] [color=#2e8b57]sizeof[/color] [color=#2e8b57]_Bool[/color] [color=#2e8b57]continue[/color] [color=#2e8b57]if[/color] [color=#2e8b57]static[/color]
[color=#2e8b57]_Complex[/color] [color=#2e8b57]default[/color] [color=#2e8b57]inline[/color] [color=#2e8b57]struct[/color] [color=#2e8b57]_Imaginary[/color] [color=#2e8b57]do[/color]  [color=#2e8b57]int[/color]
[color=#2e8b57]switch[/color] [color=#2e8b57]double[/color] [color=#2e8b57]long[/color] [color=#2e8b57]typedef[/color] [color=#2e8b57]else[/color] [color=#2e8b57]register[/color]  [color=#2e8b57]union[/color]

[color=#2e8b57]int[/color] [color=#000000]test[/color]()
{
        [color=#2e8b57]int[/color] [color=#000000]a[/color]=[color=#ff00ff]10L[/color];
        [color=#2e8b57]int[/color] [color=#000000]b[/color]=[color=#ff00ff]0x2efd[/color]+[color=#ff00ff]0X0001[/color]+[color=#ff00ff]0x98[/color][color=#000000]ga[/color]+[color=#ff00ff]22[/color][color=#000000]h[/color];

        [color=#2e8b57]double[/color] [color=#000000]f1[/color]=[color=#ff00ff]0.2e3[/color]+[color=#ff00ff]5.4E5[/color]+[color=#ff00ff]5E-3[/color]+[color=#ff00ff]5E+3[/color]+[color=#ff00ff]5.[/color]+[color=#ff00ff].5[/color];

        [color=#2e8b57]char[/color] *[color=#000000]string[/color]=[color=#ff00ff]"hello\n"[/color];         [color=#0000ff]/*hello world*/[/color]        
        [color=#000000]wchar_t[/color] [color=#000000]a[/color]=[color=#ff00ff]L"hello"[/color];        [color=#0000ff]// 你好
[/color]        [color=#2e8b57]return[/color] [color=#ff00ff]0[/color];
}
[/quote]

[quote][font=新宋体][size=2][color=#008000]/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
[/color][color=#FF0000]#define[/color][color=#FF00FF] keyword_test:

[/color][color=#0000FF]auto enum restrict unsigned break extern return
void case float short volatile char for signed
while const goto sizeof _Bool continue if static
_Complex default inline struct _Imaginary do  int
switch double long typedef else register  union

int [/color][color=#008080]test[/color]()
[color=#800000]{
    [/color][color=#0000FF]int [/color]a=[color=#8000C0]10L[/color];
    [color=#0000FF]int [/color]b=[color=#8000C0]0x2efd[/color]+[color=#8000C0]0X0001[/color]+[color=#8000C0]0x98ga[/color]+[color=#8000C0]22h[/color];

    [color=#0000FF]double [/color]f1=[color=#8000C0]0[/color].[color=#8000C0]2e3[/color]+[color=#8000C0]5[/color].[color=#8000C0]4E5[/color]+[color=#8000C0]5E[/color]-[color=#8000C0]3[/color]+[color=#8000C0]5E[/color]+[color=#8000C0]3[/color]+[color=#8000C0]5[/color].+.[color=#8000C0]5[/color];

    [color=#0000FF]char [/color]*[color=#FF0000]string[/color]=[color=#FF00FF]"hello\n"[/color];         [color=#008000]/*hello world*/       
    [/color][color=#0000FF]wchar_t [/color]a=[color=#800080]L[/color][color=#FF00FF]"hello"[/color];        [color=#008000]// 你好
    [/color][color=#0000FF]return [/color][color=#8000C0]0[/color];
[color=#800000]}


[/color][/size][/font][/quote]


可以下载我fish源码包,用文本编辑器打开fish.lex,看看C99的词法是怎么定义的:
D                        [0-9]
L                        [a-zA-Z_]
H                        [a-fA-F0-9]
E                        [Ee][+-]?{D}+
FS                        (f|F|l|L)
IS                        (u|U|l|L)*

%%
"/*"                           { comment(MUTILINE); }
"//"           { comment(SINGLELINE);}

^#[^ <]+                        { preprecess();}

"auto"                        |
"_Bool"                        |
"break"                        |
"case"                        |
"char"                        |
"_Complex"                |
"const"                        |
"continue"                |
"default"                |
"do"                        |
"double"                |
"else"                        |
"enum"                        |
"extern"                |
"float"                        |
"for"                        |
"goto"                        |
"if"                        |
"_Imaginary"                |
"inline"                |
"int"                        |
"long"                        |
"register"                |
"restrict"                |
"return"                |
"short"                        |
"signed"                |
"sizeof"                |
"static"                |
"struct"                |
"switch"                |
"typedef"                |
"union"                        |
"unsigned"                |
"void"                        |
"volatile"                |
"while"                        { output_tag(KEYWORD); }

{L}({L}|{D})*                { output_tag(IDENTIFIER); }

0[xX]{H}+{IS}?                |
0{D}+{IS}?                |
{D}+{IS}?                |
L?'(\\.|[^\\'])+'        |
{D}+{E}{FS}?                |
{D}*"."{D}+({E})?{FS}?        |
{D}+"."{D}*({E})?{FS}?        { output_tag(CONSTANT); }

L?\"(\\.|[^\\"])*\"        { output_tag(CONSTANT); }

[[it] 本帖最后由 VxWorks 于 2008-6-16 09:48 编辑 [/it]]

雨中飛燕 发表于 2008-6-16 13:20

嗯嗯,因为一开始时我本来只考虑字符串注释和关键字的高亮,所以结构的布局也简单
所以才叫“简易”,不过后来做的时候把越来越多的语法也加了进去。
不过主体结构没有变
其实前几个版本把数字给高亮了只是巧合。。原本偶没打算高亮数字的
有空再改改吧



[img]http://yzfy.bigmb.com/list.php[/img][color=white]

页: 1 2 3 4 5 6 7 [8] 9 10

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.