• <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)  編輯 收藏 引用 所屬分類: 小代碼
            久久经典免费视频| 99久久精品免费看国产一区二区三区| 狠狠色婷婷久久一区二区三区| 94久久国产乱子伦精品免费| 久久午夜羞羞影院免费观看 | 国产福利电影一区二区三区久久久久成人精品综合| 开心久久婷婷综合中文字幕| 国产香蕉97碰碰久久人人| 情人伊人久久综合亚洲| 久久久久久久97| 久久国产精品成人免费| 国产成人精品久久亚洲| 久久久久99精品成人片牛牛影视 | 人妻少妇久久中文字幕一区二区| 欧美日韩精品久久免费| 国内精品人妻无码久久久影院导航 | 久久久国产精品亚洲一区 | 国内精品久久久久影院优| 久久精品国产一区二区三区日韩| 久久免费精品一区二区| 久久精品成人| 少妇熟女久久综合网色欲| 性欧美丰满熟妇XXXX性久久久 | 国产一级持黄大片99久久| 99热精品久久只有精品| 欧美激情精品久久久久久久| 久久综合九色综合97_久久久 | 国产99久久久国产精免费| 国产精品成人精品久久久| 午夜精品久久久久久| 久久精品人人做人人爽电影| 亚洲综合日韩久久成人AV| 热99re久久国超精品首页| 久久婷婷是五月综合色狠狠| 亚洲国产美女精品久久久久∴| 久久99国产精品久久| 久久精品亚洲欧美日韩久久| 欧美精品福利视频一区二区三区久久久精品 | 久久精品国产精品亚洲人人| 亚洲精品视频久久久| 国产亚洲精品自在久久|