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

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>
            国产精品激情av在线播放| 亚洲欧美另类久久久精品2019| 亚洲免费观看| 一区二区不卡在线视频 午夜欧美不卡在| 一区二区三区在线视频播放| 黑人操亚洲美女惩罚| 影音先锋成人资源站| 亚洲精品国产品国语在线app| 99精品久久| 欧美在线首页| 亚洲第一毛片| 一个人看的www久久| 亚洲欧美日韩中文播放| 久久在线观看视频| 欧美日韩在线观看视频| 国产在线高清精品| 亚洲免费高清视频| 亚洲伦理久久| 亚洲欧美综合| 欧美激情第六页| 一区二区欧美在线| 久热re这里精品视频在线6| 欧美午夜精品久久久| 禁断一区二区三区在线| 亚洲私人黄色宅男| 美女图片一区二区| 国产精品99久久久久久宅男 | 亚洲三级电影全部在线观看高清| 99热这里只有精品8| 久久视频这里只有精品| 国产精品美女久久久久久2018| 亚洲韩日在线| 狼狼综合久久久久综合网| 亚洲一区二区三区四区在线观看| 欧美成人高清| 在线看国产一区| 欧美亚洲日本国产| 亚洲精品一级| 女主播福利一区| 国产一区二区三区网站| 亚洲一区精品电影| 亚洲精品久久久久久下一站| 美女网站久久| 在线成人性视频| 欧美一区二区三区在线| 99国产精品| 欧美黑人在线播放| 在线精品视频一区二区三四| 欧美一区三区二区在线观看| 亚洲人成久久| 嫩草成人www欧美| 影视先锋久久| 老司机午夜免费精品视频 | 欧美1区免费| 亚洲高清成人| 免费人成网站在线观看欧美高清| 午夜精品久久久久久久久久久| 久久综合色婷婷| 亚洲一区www| 国产精品多人| 亚洲一级片在线观看| 亚洲乱码国产乱码精品精可以看| 美女脱光内衣内裤视频久久影院 | 免播放器亚洲一区| 久久精品国亚洲| 在线观看欧美黄色| 女生裸体视频一区二区三区| 久久夜色精品国产亚洲aⅴ| 在线日韩一区二区| 欧美激情网友自拍| 欧美日本在线播放| 亚洲一区二区在线观看视频| 亚洲一区二区三区免费视频| 国产午夜精品在线| 麻豆成人小视频| 欧美高清在线播放| 亚洲一区二区成人| 久久成年人视频| 亚洲国产精品久久久久婷婷老年| 欧美福利视频网站| 欧美日韩中国免费专区在线看| 午夜精品一区二区三区在线视| 欧美一级日韩一级| 亚洲精品久久视频| 亚洲在线国产日韩欧美| 激情综合久久| 亚洲精品中文字幕女同| 国产裸体写真av一区二区| 久久永久免费| 欧美日韩日日夜夜| 久久免费国产| 欧美日本二区| 久久久国产精品亚洲一区| 欧美a级理论片| 欧美一区日韩一区| 欧美精品在线一区| 久久久久久久91| 欧美日韩的一区二区| 久久久999精品| 欧美日韩精品一区二区在线播放| 久久精品亚洲精品国产欧美kt∨| 欧美mv日韩mv国产网站app| 欧美一级成年大片在线观看| 欧美精品色综合| 女同性一区二区三区人了人一| 国产精品久久久久久av福利软件 | 国产精品毛片| 亚洲国产女人aaa毛片在线| 国产日产精品一区二区三区四区的观看方式| 欧美aaa级| 韩国av一区二区三区四区| 亚洲视频福利| 亚洲视频一区二区免费在线观看| 麻豆精品在线播放| 久久综合电影| 国产日韩精品入口| 日韩小视频在线观看专区| 亚洲福利一区| 久久久久国产精品一区| 欧美综合国产| 国产女人水真多18毛片18精品视频| 亚洲欧洲另类国产综合| 亚洲人成网站999久久久综合| 久久人人爽人人| 久久亚洲精选| 精品动漫3d一区二区三区免费| 午夜久久tv| 久久精品亚洲一区| 国产一区二区高清不卡| 欧美在线观看网站| 久久久综合激的五月天| 国产一区二区三区四区| 久久爱91午夜羞羞| 久久亚洲春色中文字幕久久久| 狠狠爱综合网| 美乳少妇欧美精品| 最新中文字幕一区二区三区| 99成人在线| 欧美—级在线免费片| 亚洲国产美女精品久久久久∴| 亚洲日本精品国产第一区| 欧美激情一区二区三区| 亚洲精品国产精品国自产在线| 99re6这里只有精品| 欧美日韩美女一区二区| 亚洲一区二区3| 久久亚洲免费| 一道本一区二区| 国产精品久久久久久久电影| 亚洲欧美精品一区| 噜噜爱69成人精品| 亚洲日本欧美天堂| 欧美日韩成人免费| 亚洲一区二区三区成人在线视频精品| 午夜精品999| 在线看日韩欧美| 欧美大片91| 亚洲视频一区二区| 久久精品国产久精国产思思| 亚洲第一中文字幕| 欧美日韩在线播放一区| 欧美一级专区| 欧美激情中文字幕一区二区| 亚洲一区二区三区色| 国内精品久久久久国产盗摄免费观看完整版| 久久久午夜电影| 一区二区不卡在线视频 午夜欧美不卡'| 欧美亚洲免费高清在线观看| 亚洲国产精品激情在线观看| 欧美日一区二区三区在线观看国产免| 午夜精品久久| 亚洲国产精品福利| 欧美在线一二三| 亚洲美女在线视频| 国模私拍视频一区| 欧美日韩一区二区三区在线视频 | 欧美不卡三区| 亚洲欧美日韩精品| 亚洲大片一区二区三区| 亚洲尤物视频网| 欧美激情按摩| 欧美一区观看| 一二美女精品欧洲| 亚洲第一毛片| 久久精品视频va| 亚洲欧美国产高清| 亚洲黄色影片| 国产一区二区三区观看| 国产精品成人v| 欧美极品在线视频| 久久久精品国产一区二区三区| 亚洲综合首页| 亚洲性夜色噜噜噜7777| 亚洲日本电影在线| 欧美激情欧美狂野欧美精品| 久久精品一本久久99精品| 午夜精品久久久久影视| 日韩视频在线一区二区三区| …久久精品99久久香蕉国产| 国产在线不卡|