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

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工具學(xué)習(xí)編譯原理,遠(yuǎn)比單獨(dú)看書然后自己編寫一些程序生動的多。這樣你就不會在那些復(fù)雜的字符處理,正則表達(dá)式的處理上浪費(fèi)精力,最后費(fèi)盡心力,卻沒有結(jié)果,失去了學(xué)習(xí)的興趣。

我 這里有一個簡單的計算器的程序,可以實(shí)現(xiàn)加、減、乘、除運(yùn)算,并支持括號的處理和26個字母作為變量。以前自己使用后綴表達(dá)式方式寫過一個這樣的程序,單 單中綴表達(dá)式改為后綴表達(dá)式就是幾百行的代碼,反正自己現(xiàn)在還是不知道怎么處理里面復(fù)雜的堆棧的(我用了STL的List實(shí)現(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;
    }
    /* 運(yùn)算符 */
[-+()=/*\n]    {return *yytext;}
    /* 空白被忽略 */
[ \t]    ;
    /* 其他字符都是非法的 */
.    yyerror("無效的輸入字符");
%%
int    yywrap(void)
{
    return 1;
}
詞法處理的目標(biāo)就是區(qū)分出來每個成員到底是什么,這里有兩種 INTEGER和VARIABLE。只要區(qū)分出來各個成分詞法分析的任務(wù)就完成了。



語法處理文件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表達(dá)式描述一下即可,規(guī)則隨著條目逐漸細(xì)化,變成了可以理解的內(nèi)容。這里不用管如何實(shí)現(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>
            国产精品日韩在线一区| 欧美精品一区视频| 日韩午夜剧场| 亚洲精品中文字幕在线| 欧美阿v一级看视频| 久久综合五月| 男人插女人欧美| 亚洲电影有码| 欧美亚洲网站| 午夜在线观看免费一区| 性欧美暴力猛交69hd| 在线观看国产欧美| 狠狠狠色丁香婷婷综合激情| 亚洲精品一区中文| 亚洲一区网站| 男女精品视频| 正在播放日韩| 久久精品综合一区| 欧美激情成人在线| 亚洲乱码精品一二三四区日韩在线| 母乳一区在线观看| 亚洲国产aⅴ天堂久久| 亚洲国产精品一区二区尤物区 | 欧美刺激午夜性久久久久久久| 欧美片在线播放| 亚洲电影在线观看| 亚洲欧美在线视频观看| 女同性一区二区三区人了人一| 亚洲国产三级| 久热精品视频在线观看一区| 国产精品久久久久久久久动漫| 一区二区在线观看av| 欧美激情成人在线| 亚洲欧美电影在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美婷婷久久| 一区二区三区四区五区在线| 亚洲第一精品久久忘忧草社区| 欧美亚洲日本网站| 亚洲激情中文1区| 久久网站免费| 在线免费观看欧美| 久久亚洲私人国产精品va| 亚洲永久免费精品| 国产精品爽爽爽| 欧美亚洲综合久久| 中日韩美女免费视频网址在线观看| 欧美午夜欧美| 国产精品三区www17con| 亚洲精品影视在线观看| 一区二区三区不卡视频在线观看 | 欧美日韩高清免费| 欧美在线短视频| 久久久亚洲国产美女国产盗摄| 亚洲欧美精品在线观看| 亚洲欧美激情视频| 在线视频日韩精品| 久久精选视频| 日韩视频久久| 欧美一区二区三区视频免费| 久久综合给合| 99亚洲伊人久久精品影院红桃| 久久午夜视频| 91久久精品网| 欧美在线1区| 亚洲第一在线| 欧美日韩免费观看一区三区 | 欧美视频一区在线| 国产精品盗摄久久久| 国产欧美91| 国产精品成人一区二区三区夜夜夜 | 亚洲电影av在线| 欧美日韩一区视频| 国产精品视频自拍| 亚洲欧美国内爽妇网| 一区二区三区视频免费在线观看| 欧美亚洲一级| 国产精品视频一二| 亚洲电影免费观看高清| 在线综合亚洲欧美在线视频| 韩国欧美一区| 亚洲国产精品成人一区二区| 久久综合网hezyo| 亚洲看片一区| 欧美日韩在线综合| 久久国产欧美| 欧美日韩综合另类| 午夜精品美女久久久久av福利| 欧美激情影音先锋| 久久久久国产成人精品亚洲午夜| 欧美国产精品v| 蜜桃视频一区| 狠狠干成人综合网| 欧美二区在线观看| 国产综合在线看| 欧美一区91| 久久躁狠狠躁夜夜爽| 在线观看国产日韩| 久久综合色综合88| 亚洲激情专区| 亚洲视频在线观看一区| 欧美不卡在线视频| 亚洲欧洲综合| 亚洲一区制服诱惑| 国产精品日韩欧美大师| 欧美一区二区三区久久精品茉莉花| 亚洲女人天堂成人av在线| 国产欧美一区二区三区国产幕精品| 欧美一级大片在线观看| 性欧美8khd高清极品| 欧美一区二区视频网站| 蜜桃av一区二区| 一区二区三区在线免费播放| 久久蜜桃资源一区二区老牛 | 香蕉久久夜色精品国产| 国产视频一区二区三区在线观看| 久久精品国产精品亚洲综合| 欧美大胆a视频| 亚洲一级高清| 亚洲电影网站| 国产欧美日韩三区| 欧美国产在线观看| 欧美一乱一性一交一视频| 亚洲高清在线| 亚洲欧美日韩国产一区| 亚洲国产精品www| 国产在线精品一区二区夜色| 欧美日韩不卡合集视频| 久久午夜精品一区二区| 午夜亚洲伦理| 正在播放欧美视频| 日韩亚洲精品视频| 亚洲国产精品一区二区www| 久久精品视频在线免费观看| 亚洲一区欧美| 亚洲性xxxx| 亚洲字幕在线观看| 亚洲视频在线观看| 欧美激情在线观看| 免费久久99精品国产自| 久久久久久久综合日本| 欧美一区精品| 久久大香伊蕉在人线观看热2| 亚洲一区三区电影在线观看| 一本色道久久综合亚洲91| 日韩视频一区二区三区在线播放 | 亚洲最新视频在线播放| 亚洲级视频在线观看免费1级| 亚洲精品美女在线观看播放| 亚洲国产视频a| 亚洲免费观看视频| 一级日韩一区在线观看| 亚洲香蕉伊综合在人在线视看| 亚洲午夜精品在线| 篠田优中文在线播放第一区| 欧美综合第一页| 国产日韩视频一区二区三区| 国产精品成av人在线视午夜片 | 欧美成人午夜免费视在线看片 | 国产精品最新自拍| 国产欧美va欧美不卡在线| 国产亚洲欧美一区二区三区| 一区一区视频| 亚洲视频在线观看免费| 久久精品综合| 99精品热6080yy久久| 久久精品国产99国产精品澳门| 欧美福利视频| 国产区亚洲区欧美区| 亚洲精品一区中文| 久久永久免费| 亚洲综合色噜噜狠狠| 欧美国产免费| 永久久久久久| 欧美一区二区大片| 亚洲人人精品| 久久久久久91香蕉国产| 国产欧美日韩在线视频| 在线午夜精品| 亚洲福利国产| 欧美一区二区三区在线观看| 欧美国内亚洲| 亚洲第一精品夜夜躁人人躁| 欧美在线看片| 亚洲图片在线观看| 欧美日韩国产在线| 一本大道av伊人久久综合| 欧美高清在线视频观看不卡| 久久久久久一区二区| 禁断一区二区三区在线| 久久久精品国产免费观看同学| 亚洲午夜精品久久久久久app| 欧美日韩激情小视频| 一区二区国产日产| 一本色道久久综合狠狠躁的推荐| 欧美精品日日鲁夜夜添| 亚洲最快最全在线视频| 亚洲精品专区| 国产精品电影网站| 久久成人一区|