欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

PostgreSQL源碼解讀(167)-查詢#87(基礎(chǔ)知識-語法分析器Bison)

輸入一條SQL語句,PostgreSQL如何解析輸入的SQL,識別SQL類型以及基表/字段等信息?接下來的幾節(jié)將逐一進行解析.
本節(jié)介紹了開源工具語法分析器Bison.

一、Bison

基本概念
Bison是一個語法分析器,和Flex配合使用,它可以將用戶提供的語法規(guī)則轉(zhuǎn)化成一個語法分析器。Flex生成token stream,Bison根據(jù)定義的產(chǎn)生式和動作表來解析token stream,從而解析句子.
Bison自定義語法文件,一般以.y作為文件擴展名,其格式如下:


%{
Declarations
%}
Definitions
%%
Productions
%%
User subroutines

其中Declarations(聲明)和 User subroutines(用戶自定義過程)和Flex的.l文件是一樣的,Bison會將這些代碼原樣的拷貝到y(tǒng).tab.c文件中;Definitions(定義)段和Flex類似,也是在這個段定義一些Bison專有的變量,稍后再解釋這個文件中的這個段里的代碼;最重要的是Productions 段,這里面是用戶編寫的語法產(chǎn)生式.

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、迪慶州網(wǎng)站維護、網(wǎng)站推廣。

示例
下面用Flex和Bison實現(xiàn)一個簡單的乘法器.
mul.l
詞法文件


%{
#include "y.tab.h"
void yyerror(const char *msg);
void undefined_char(char c);
%}
%%
[0-9]+          { yylval = atoi(yytext); return T_NUMBER; }
[*()\n]        { return yytext[0]; }
.               { return 0; /* end when meet everything else */ }
%%
int yywrap(void) { 
    return 1;
}
void undefined_char(char c) {
    char buf[32] = "Unrecognized character: ?";
    buf[24] = c;
    yyerror(buf);
}
void yyerror(const char *msg) {
    printf("Error :%s\n", msg);
    exit(1);
}

mul.y
語法文件


%{
#include <stdio.h>
%}
%token T_NUMBER
%left '*'
%%
S   :   S E '\n'        { printf("result = %d\n", $2); }
    |   /* empty */     { /* empty */ }
    ;
E   :   E '*' E         { $$ = $1 * $3; }
    |   T_NUMBER        { $$ = $1; }
    ;
%%
int main() {
    return yyparse();
}

makefile


CC = gcc
OUT = mul
OBJ = lex.yy.o y.tab.o
MUL_L = mul.l
MUL_Y = mul.y
build: $(OUT)
run: $(OUT)
    ./$(OUT)
clean:
    rm -f *.o lex.yy.c y.tab.c y.tab.h y.output $(OUT)
$(OUT): $(OBJ)
    $(CC) -o $(OUT) $(OBJ)
lex.yy.c: $(MUL_L) y.tab.c
    flex $<
y.tab.c: $(MUL_Y)
    bison -vdty $<

執(zhí)行:


[xdb@localhost mul]$ make run
./mul
23*3
result = 69

二、參考資料

Bison

網(wǎng)頁名稱:PostgreSQL源碼解讀(167)-查詢#87(基礎(chǔ)知識-語法分析器Bison)
文章分享:http://aaarwkj.com/article12/jjjgdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)響應(yīng)式網(wǎng)站、、網(wǎng)站設(shè)計公司營銷型網(wǎng)站建設(shè)、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
一区二区三区欧美小黄片| 国产亚洲精品视频热| 91九色最新国产在线| 国产精品线路一线路三| 91人妻人澡人人爽| 国产麻豆剧传媒国产av| 国产内射一级一片内射高清视频1 亚洲一区二区三区不卡伦理 | 日本岛国大片一区二区在线观看| 午夜影院网站在线看黄| 人妻中文字幕在线av| 黑人巨大一区二区三区| 亚洲av香蕉一区二区| 欧美激情日韩精品久久久| 国产精品黄色91熟女| 欧美中文字幕内射合集| 亚洲成人av综合在线| 曰韩av毛片在线观看| 一区二区三区人妻av| 关于男女性生活的视频| 免费黄片视频大全在线播放| 日韩中文字幕精品一区| 久草视频在线免费资源站| 九九视频在线观看免费观看| 欧美日韩国产av一区| 日本欧美三级高潮受不了| 亚洲精品国产高清久久| 亚洲av免费一区二区三区| 国产老熟女高潮一区二区| 宫部凉花中文字幕在线| 日韩免费毛片在线观看| 日本在线观看精品综合| 熟女精品国产一区二区三区 | 日韩有码高清av在线| 一区二区三区欧美小黄片| 最近免费欧美一级黄片| 色日韩在线观看视频| 一区二区亚洲欧美精品| 亚洲高清精品一区二区| 99精品国产一区二区青青性色| 欧美日韩亚洲视频一区久久| 中文字幕乱码十国产乱码|