• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-59  評論-36  文章-0  trackbacks-0

            以下兩則代碼均是在向論壇上的高手們學(xué)習(xí)之后模仿出的結(jié)果,而自己之前寫的那叫個臭呀!

            代碼1

             1/*
             2* 用狀態(tài)機實現(xiàn)對代碼中注釋的清除.
             3*/

             4
             5#include <stdio.h>
             6#include <string.h>
             7
             8#define SCREEN
             9
            10void initialize_fsm(char fsm[7][256]);
            11
            12int main()
            13{
            14    int ch , temp = 0 ;
            15    int state = 0;
            16    char fsm[7][256];
            17
            18    FILE *pfin ;
            19    if ((pfin = fopen("sweep-comments.txt","r")) == NULL)
            20    {
            21        printf("can not open the file");
            22        exit(0);
            23    }

            24
            25    #ifdef SCREEN
            26        #define OUT stdout
            27    #else
            28        FILE *pfout;
            29        pfout = fopen("result.txt","w");
            30        #define OUT pfout
            31    #endif
            32
            33    initialize_fsm(fsm);
            34
            35    #pragma region FSM ///嘗試#pragma region功能. Visual C++ 2005
            36
            37    while ((ch = fgetc(pfin)) != EOF)
            38    {
            39        state = fsm[state][ch];
            40
            41        if ( state != 2  && ch !='*' && temp == '/')
            42            fputc(temp,OUT);
            43
            44        temp = ch;
            45
            46        switch(state)
            47        {
            48            /*0,5,6執(zhí)行同一個動作*/
            49            case 5:
            50            case 6:
            51            case 0:
            52                    fputc(ch,OUT);
            53                    break;
            54            case 7:
            55                    state = 0;
            56                    break;
            57        }

            58
            59        if(state != 1)
            60            temp=0;
            61    }

            62    #pragma endregion
            63}

            64
            65void initialize_fsm(char fsm[7][256])
            66{
            67    int lenth = sizeof(char)*256;
            68
            69    memset(fsm[0],0,lenth);
            70    memset(fsm[1],0,lenth);
            71    memset(fsm[2],2,lenth);
            72    memset(fsm[3],3,lenth);
            73    memset(fsm[4],3,lenth);
            74    memset(fsm[5],5,lenth);
            75    memset(fsm[6],5,lenth);
            76
            77    fsm[0]['"'= 5;
            78    fsm[0]['/'= 1;
            79    fsm[1]['/'= 2;
            80    fsm[1]['*'= 3;
            81    fsm[2]['\n'= 0;
            82    fsm[3]['*'= 4;
            83    fsm[4]['/'= 7;
            84    fsm[5]['\\'= 6;
            85    fsm[5]['"'= 0;
            86}

            87

            代碼2
             1%{
             2/*
             3*用lex實現(xiàn)清除代碼注釋
             4*/

             5void comment(int style);
             6void string_constant();
             7const int singalline =0, multiline =1;
             8
             9%}

            10
            11
            12%%
            13
            14"/*"        {comment(multiline );}
            15"//"        {comment(singalline);}
            16"\""        {string_constant();}
            17.|\n        {fprintf(yyout,"%c",*yytext);} 
            18
            19%%
            20
            21int main(int argc,char *argv[])
            22{
            23    FILE *pfin ,*pfout;
            24    if ((pfin = fopen (argv[1],"r")) ==NULL)
            25    {
            26        printf("can not open the file\n");
            27        exit (1);
            28    }

            29    pfout = fopen("output.txt","w");
            30    
            31    yyin = pfin;
            32    yyout = pfout;
            33    
            34    yylex();
            35
            36    return 0;
            37}

            38
            39void string_constant()
            40{
            41    int ch ;
            42
            43    fprintf(yyout,"%c",*yytext);
            44
            45    while ( (ch = input()) != EOF)
            46    {
            47        if (ch == '\\')
            48        {
            49            fprintf(yyout,"%c",ch);
            50            ch = input();
            51            fprintf(yyout,"%c",ch);
            52            
            53            continue;
            54        }

            55
            56        if (ch == '\"')
            57        {
            58            fprintf(yyout,"%c",ch);
            59            break;
            60        }

            61        
            62        fprintf(yyout,"%c",ch);
            63    }

            64}

            65
            66void comment(int style)
            67{
            68    int ch , prev=0;
            69    if (style == multiline)
            70    {
            71        while ( (ch = input()) != EOF )
            72        {
            73            if (prev == '*' && ch == '/')
            74                return ;
            75
            76            prev = ch;
            77        }

            78        
            79        return ;
            80    }

            81    else
            82    {
            83        while ( (ch = input()) != EOF )
            84        {
            85            if (ch == '\n')
            86            {
            87                fprintf(yyout,"%c",'\n');
            88                return ;
            89            }

            90        }

            91    }

            92}

            93int yywrap()
            94{
            95        return 1;
            96}

            97
            posted on 2009-05-07 14:21 zhaoyg 閱讀(649) 評論(0)  編輯 收藏 引用 所屬分類: 小代碼
            久久综合综合久久综合| 国产成人精品久久亚洲高清不卡 | 久久久久18| 日韩欧美亚洲综合久久| 日韩乱码人妻无码中文字幕久久 | 亚洲综合日韩久久成人AV| 亚洲国产精品无码久久98| 99久久99这里只有免费的精品| 精品熟女少妇aⅴ免费久久| 欧美日韩精品久久免费| 久久国产精品成人影院| 亚洲日韩欧美一区久久久久我| 97久久国产亚洲精品超碰热| 久久夜色撩人精品国产| 好久久免费视频高清| 久久中文字幕人妻熟av女| 久久久久女教师免费一区| 久久综合九色综合精品| 亚洲国产精品无码久久久蜜芽| 久久se精品一区二区影院| 久久久久人妻一区精品色| 久久亚洲熟女cc98cm| 久久久人妻精品无码一区| 久久婷婷综合中文字幕| 久久久一本精品99久久精品88| 伊人久久五月天| 天天影视色香欲综合久久| 国产精品无码久久四虎| 成人综合伊人五月婷久久| 精品久久久久久无码不卡| 久久伊人影视| 精品久久人人爽天天玩人人妻 | 国产精品va久久久久久久| 无码人妻精品一区二区三区久久 | 久久婷婷色综合一区二区| 久久99精品久久久久久9蜜桃 | 国产精品伦理久久久久久| 久久国产精品-久久精品| 亚洲嫩草影院久久精品| 国产午夜电影久久| 久久久人妻精品无码一区|