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

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>
            久久精品国产精品亚洲精品| 亚洲精品免费在线观看| 日韩视频一区| 国产精品美女久久久浪潮软件| 国内视频一区| 久久九九国产| 午夜精品福利电影| 国产噜噜噜噜噜久久久久久久久 | 亚洲网站啪啪| 亚洲人成人99网站| 亚洲国产天堂久久综合网| 久久精品亚洲热| 国产真实乱偷精品视频免| 久久黄金**| 欧美一区国产二区| 国产精品一区久久| 久久精品三级| 久久久久网站| 最新国产精品拍自在线播放| 欧美成人一品| 欧美成人激情视频| 夜夜夜久久久| 亚洲图片欧美午夜| 久久中文字幕一区| 亚洲狼人精品一区二区三区| 亚洲国产欧美日韩另类综合| 欧美日韩mp4| 欧美亚洲午夜视频在线观看| 久久高清国产| 亚洲日本一区二区| 99v久久综合狠狠综合久久| 国产精品第十页| 亚洲大片免费看| 亚洲清纯自拍| 国产精品久久久久三级| 欧美在线观看视频一区二区三区| 欧美在线观看天堂一区二区三区| 在线日韩欧美| 亚洲精品国产品国语在线app| 欧美视频一区| 久久精品国产第一区二区三区最新章节 | 欧美+亚洲+精品+三区| 一本久久青青| 欧美一区2区三区4区公司二百 | 欧美二区乱c少妇| 欧美激情一区二区三区不卡| 亚洲激情电影中文字幕| 国产精品sss| 麻豆9191精品国产| 99re国产精品| 国产综合精品| 亚洲欧洲日产国码二区| 国产日产亚洲精品系列| 亚洲高清在线| 国产人成精品一区二区三| 女同一区二区| 国产欧美精品在线播放| 老司机67194精品线观看| 欧美性久久久| 亚洲精选中文字幕| 欧美综合77777色婷婷| 一本色道久久88亚洲综合88| 久久久国产一区二区| 亚洲综合色丁香婷婷六月图片| 久久久久青草大香线综合精品| 亚洲欧美综合网| 欧美大片免费观看| 猛干欧美女孩| 黄色一区二区在线观看| 亚洲与欧洲av电影| 一区二区三区鲁丝不卡| 免费在线观看精品| 欧美主播一区二区三区美女 久久精品人| 日韩午夜av| 欧美午夜电影一区| 亚洲第一级黄色片| 亚洲国产欧美日韩精品| 久久精品亚洲| 久久久久久久综合| 国产精品豆花视频| 99精品热视频只有精品10| 亚洲美女黄网| 欧美激情一区二区三区| 亚洲免费成人| 欧美高清自拍一区| 亚洲国产高潮在线观看| 亚洲国产日韩一级| 狂野欧美激情性xxxx| 麻豆精品精华液| 一区二区三区自拍| 免费观看在线综合色| 欧美成人精品一区二区三区| 在线观看精品| 欧美a级在线| 亚洲人成在线播放网站岛国| 99精品免费视频| 欧美精品成人| 一本大道久久a久久精二百| 国产精品久久久久久久9999| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美顶级少妇做爰| 亚洲国产经典视频| 99精品视频一区| 欧美日韩成人免费| 夜夜嗨av一区二区三区| 午夜亚洲福利| 国产美女精品一区二区三区| 性色av一区二区怡红| 久久午夜色播影院免费高清| 在线日韩日本国产亚洲| 欧美激情一区二区久久久| 在线亚洲欧美专区二区| 久久精品亚洲一区二区三区浴池| 国内成+人亚洲+欧美+综合在线| 久久精品亚洲一区二区| 91久久久在线| 亚洲一区日韩| 老司机午夜精品| 一区二区三区四区五区视频 | 免播放器亚洲一区| 亚洲精品一区在线观看| 欧美图区在线视频| 久久精品中文字幕一区| 亚洲精品久久久久久久久| 亚洲一区亚洲| 亚洲福利视频三区| 欧美亚洲成人网| 国产精品99久久久久久久女警 | 久久综合免费视频影院| av成人免费观看| 久久嫩草精品久久久精品一| 亚洲精品一区在线| 狠狠色狠狠色综合日日91app| 欧美精品久久久久久久| 午夜视频在线观看一区| 亚洲国产二区| 久久久精品久久久久| 欧美三级小说| 久久一区二区精品| 一区二区免费看| 欧美成人亚洲成人日韩成人| 亚洲欧美www| 亚洲精品在线一区二区| 国产自产在线视频一区| 国产精品亚洲精品| 欧美精品一区二区三| 欧美中文字幕精品| 亚洲性视频h| 亚洲激情综合| 美女在线一区二区| 欧美中文字幕久久| 亚洲欧美日韩综合aⅴ视频| 亚洲三级电影在线观看| 一区在线免费| 国产午夜精品一区理论片飘花| 欧美精品激情在线| 老司机成人在线视频| 久久av在线| 久久av一区二区| 欧美亚洲视频一区二区| 亚洲一区二区黄| 在线亚洲国产精品网站| 一本大道久久a久久综合婷婷 | 欧美91精品| 久久天天综合| 久久久久国产成人精品亚洲午夜| 洋洋av久久久久久久一区| 亚洲欧洲精品一区二区| 极品少妇一区二区三区精品视频| 国产乱码精品一区二区三区五月婷 | 欧美成人综合| 亚洲国产日韩欧美| 欧美二区视频| 免费观看一级特黄欧美大片| 久久久久一区二区三区四区| 久久av二区| 久久久久在线观看| 久久深夜福利| 免费在线看一区| 欧美成人视屏| 91久久国产自产拍夜夜嗨| 欧美国产日产韩国视频| 亚洲国产精品成人久久综合一区 | 欧美无砖砖区免费| 亚洲尤物精选| 欧美亚洲综合久久| 欧美一区二区三区在线播放| 欧美亚洲视频一区二区| 久久久亚洲午夜电影| 欧美激情第二页| 欧美精品一区二区三区一线天视频| 一区二区三区视频在线| 亚洲午夜精品视频| 性欧美办公室18xxxxhd| 久久嫩草精品久久久精品一| 快射av在线播放一区| 欧美日韩中文在线观看| 国产一区三区三区| 亚洲黑丝一区二区| 亚洲深夜福利|