青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

使用bison和flex工具

Posted on 2010-09-20 15:29 Prayer 閱讀(804) 評論(0)  編輯 收藏 引用 所屬分類: C/C++
這里有一個使用bison建立一個簡單的計算器的例子:
http://www.cs.berkeley.edu/~maratb/cs164/bison.html

使用bison和flex工具學習編譯原理,遠比單獨看書然后自己編寫一些程序生動的多。這樣你就不會在那些復雜的字符處理,正則表達式的處理上浪費精力,最后費盡心力,卻沒有結(jié)果,失去了學習的興趣。

我 這里有一個簡單的計算器的程序,可以實現(xiàn)加、減、乘、除運算,并支持括號的處理和26個字母作為變量。以前自己使用后綴表達式方式寫過一個這樣的程序,單 單中綴表達式改為后綴表達式就是幾百行的代碼,反正自己現(xiàn)在還是不知道怎么處理里面復雜的堆棧的(我用了STL的List實現(xiàn))。


詞法處理文件calc.lex內(nèi)容如下:
%{
    /*
     *  一個簡單計算器的Lex詞法文件
     */
    #include <stdlib.h>
   
    void yyerror(char*);
    #include "calc.tab.h"
%}
%%
    /* a-z為變量 */
[a-z]    {
        yylval = *yytext - 'a';
        return VARIABLE;
    }
    /* 整數(shù) */
[0-9]+    {
        yylval = atoi(yytext);
        return INTEGER;
    }
    /* 運算符 */
[-+()=/*\n]    {return *yytext;}
    /* 空白被忽略 */
[ \t]    ;
    /* 其他字符都是非法的 */
.    yyerror("無效的輸入字符");
%%
int    yywrap(void)
{
    return 1;
}
詞法處理的目標就是區(qū)分出來每個成員到底是什么,這里有兩種 INTEGER和VARIABLE。只要區(qū)分出來各個成分詞法分析的任務就完成了。



語法處理文件calc.y內(nèi)容如下:
%token    INTEGER VARIABLE
%left    '+' '-'
%left    '*' '/'
%{
    #include <stdio.h>
    void yyerror(char*);
    int yylex(void);
    int sym[26];
%}
%%
program:
    program statement '\n'
    |
    ;
statement:
     expr    {printf("%d\n", $1);}
     |VARIABLE '=' expr    {sym[$1] = $3;}
     ;
expr:
    INTEGER
    |VARIABLE{$$ = sym[$1];}
    |expr '+' expr    {$$ = $1 + $3;}
    |expr '-' expr    {$$ = $1 - $3;}
    |expr '*' expr    {$$ = $1 * $3;}
    |expr '/' expr    {$$ = $1 / $3;}
    |'('expr')'    {$$ = $2;}
    ;
%%
void yyerror(char* s)
{
    fprintf(stderr, "%s\n", s);
}
int main(void)
{
    printf("A simple calculator.\n");
    yyparse();
    return 0;
}
語法分析文件的寫法就是將BNF表達式描述一下即可,規(guī)則隨著條目逐漸細化,變成了可以理解的內(nèi)容。這里不用管如何實現(xiàn)這些語法的分析,只是需要告知如何構(gòu)建這些語法。



編譯命令如下:
>bison -d calc.y
>flex calc.lex
>gcc calc.tab.c lex.yy.c -o calc

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美高清在线视频| 可以看av的网站久久看| 欧美日韩伦理在线| 欧美日韩精品伦理作品在线免费观看| 欧美调教vk| 亚洲精品综合| 麻豆视频一区二区| 久久综合一区二区三区| 国产精品视频久久久| 欧美伊人影院| 欧美视频一区二区三区在线观看| 伊人色综合久久天天五月婷| 亚洲综合二区| 亚洲精品久久久久久久久久久久| 亚洲一区免费| 欧美日韩综合在线| 一区二区三区免费观看| 亚洲国产91| 欧美成人免费网站| 91久久精品国产| 亚洲国产精品久久久久秋霞不卡| 久久精品视频99| 亚洲国产成人91精品| 欧美激情影院| 欧美激情精品久久久久久免费印度 | 欧美在线视频全部完| 国产精品老女人精品视频| 亚洲午夜av| 亚洲欧美另类在线观看| 国产亚洲欧美日韩在线一区| 久久综合网色—综合色88| 久久蜜桃精品| 亚洲久久一区| 亚洲欧美高清| 在线不卡亚洲| 亚洲国产午夜| 国产精品美女xx| 久久视频精品在线| 欧美国产综合| 欧美一区二区三区免费视| 久久国产精品久久久久久久久久 | 羞羞视频在线观看欧美| 性欧美video另类hd性玩具| 在线日韩一区二区| 亚洲精品在线视频| 国产精品主播| 欧美寡妇偷汉性猛交| 欧美日韩一区二区三区在线视频 | 国产女主播在线一区二区| 日韩视频永久免费观看| 久久看片网站| 免费视频一区二区三区在线观看| 日韩视频一区二区在线观看 | 国产精品一区二区久久精品| 久久精品国产一区二区三| 久久久久久尹人网香蕉| 99视频超级精品| 亚洲欧美国产高清| 亚洲三级免费| 欧美亚洲网站| 日韩亚洲成人av在线| 午夜视频久久久久久| 亚洲三级电影全部在线观看高清| 亚洲性人人天天夜夜摸| 亚洲国产天堂久久综合| 亚洲综合首页| 中日韩高清电影网| 久久青草欧美一区二区三区| 亚洲免费在线| 一区二区三区视频免费在线观看| 在线电影一区| 新67194成人永久网站| 亚洲视频一区在线观看| 乱码第一页成人| 久久婷婷亚洲| 国产精品一区亚洲| 一本一本久久a久久精品牛牛影视| 在线播放国产一区中文字幕剧情欧美| 一区二区三区|亚洲午夜| 免费观看30秒视频久久| 久久亚洲免费| 国产一区二区三区的电影| 99精品视频一区二区三区| 亚洲精品国产精品乱码不99| 久久精品一区二区三区不卡牛牛| 亚洲女人天堂av| 欧美另类视频在线| 亚洲第一网站免费视频| 雨宫琴音一区二区在线| 久久国产福利国产秒拍| 久久国产乱子精品免费女| 国产精品日韩久久久久| 一本色道久久综合亚洲二区三区| 99视频有精品| 欧美日韩不卡一区| 亚洲精品在线三区| 亚洲神马久久| 国产精品高潮呻吟久久av黑人| 亚洲激情影院| 一区二区欧美国产| 欧美日本韩国在线| 欧美在线一区二区| 国产一在线精品一区在线观看| 亚洲欧美日韩成人| 欧美在线视频一区| 伊人久久大香线| 久久精品成人欧美大片古装| 久久天天躁狠狠躁夜夜av| 亚洲国产成人午夜在线一区 | 欧美日本一区二区视频在线观看| 亚洲精品久久久一区二区三区| 亚洲精品乱码久久久久久| 亚洲经典在线| 在线一区观看| 国产精品自拍在线| 久久国产精彩视频| 亚洲国产精品va在线观看黑人| 亚洲人成网站在线观看播放| 欧美精品久久久久久久免费观看| 亚洲精品美女| 国产精品亚洲成人| 久久精品国产视频| 欧美国产亚洲精品久久久8v| 99综合电影在线视频| 国产精品久久久久久久久久免费| 一个色综合av| 久久精品一二三| 亚洲欧洲在线一区| 国产精品美女黄网| 久久综合成人精品亚洲另类欧美| 亚洲欧洲日韩综合二区| 亚洲一区二区三区国产| 国产在线麻豆精品观看| 欧美精品一区二区精品网 | 欧美69视频| 亚洲综合色噜噜狠狠| 免费人成精品欧美精品| 亚洲深夜福利网站| 亚洲国产婷婷综合在线精品| 欧美性猛交一区二区三区精品| 欧美在线电影| 一区二区三区www| 蜜乳av另类精品一区二区| 日韩一区二区电影网| 国产亚洲欧美激情| 欧美视频在线观看| 免费在线欧美视频| 欧美诱惑福利视频| 日韩亚洲在线| 麻豆精品视频在线观看| 国产亚洲精品激情久久| 欧美破处大片在线视频| 久久精品视频va| 亚洲欧美激情一区| 一本色道**综合亚洲精品蜜桃冫 | 久久久九九九九| 亚洲视频中文字幕| 亚洲国产第一页| 国产亚洲aⅴaaaaaa毛片| 欧美另类一区| 欧美国产高潮xxxx1819| 久久影院午夜片一区| 亚洲免费在线| 99精品免费| 性高湖久久久久久久久| 一区二区精品| 亚洲精品一区二区三区福利| 国产综合在线看| 国产婷婷色综合av蜜臀av| 欧美午夜视频| 国产精品国产精品| 欧美日韩裸体免费视频| 欧美1区2区| 免费久久99精品国产自| 老司机一区二区| 久热成人在线视频| 久久免费精品日本久久中文字幕| 欧美一级免费视频| 亚洲欧美国产高清| 亚洲欧美不卡| 欧美一区午夜视频在线观看| 午夜日韩视频| 久久久久久久激情视频| 欧美xxx成人| 欧美va天堂| 久久综合影音| 男女激情久久| 亚洲国产精品va在线看黑人| 欧美jjzz| 亚洲精品国产精品乱码不99按摩| 亚洲第一黄网| 日韩视频在线观看一区二区| 夜夜嗨av一区二区三区免费区| 亚洲视频观看| 久久国产精品久久国产精品| 老牛国产精品一区的观看方式| 欧美激情视频一区二区三区在线播放 | 国产日韩精品视频一区| 红桃视频国产精品| 亚洲激情女人|