日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

java下bison_windows下bison的安装与入门

發(fā)布時間:2024/3/26 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java下bison_windows下bison的安装与入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Bison是一個語法分析器,bison和flex配合使用

可以將用戶提供的語法規(guī)則轉(zhuǎn)化成一個語法分析器

利用Bison,可以開發(fā)各種語言解釋器

Bison的輸入文件以.y作為后綴名

其語法文件的一般格式如下:

%{

Prologue

%}

Bison declarations

%%

Grammar rules

%%

Epilogue

使用兩個%%分隔符,將文件分為三個部分

Prologue定義動作中使用的類型和變量

Bison Declaration聲明了終結(jié)符號和非終結(jié)符號的名稱

還可以描述運算符的優(yōu)先級以及各種符號的語義值的數(shù)據(jù)類型

Grammar rules定義了如何從各個部分構(gòu)造每個非終結(jié)符

Epilogue可以包含要使用的任何代碼

直接下載,點擊安裝即可

全都安裝好以后還要設(shè)置一下環(huán)境變量Path,即需要將Bison的安裝目錄添加到Path中

打開右鍵->我的電腦→屬性→高級系統(tǒng)設(shè)置->環(huán)境變量->系統(tǒng)變量->Path->編輯->新建->輸入Bison的安裝目錄具體到bin目錄下->確定

退出后,打開CMD,輸入bison - V,記住這里的v要大寫。若安裝成功就會顯示bison的相關(guān)信息

C:\>bison -V

bison (GNU Bison) 2.4.1

Written by Robert Corbett and Richard Stallman.

Copyright (C) 2008 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

然后結(jié)合具體的例子——四則運算來看看bison的作用

首先,準備好flex的詞法文件cal.l:

另:flex的安裝請見https://www.cnblogs.com/ASE265/p/12337922.html

%{

# include "y.tab.h"

%}

%%

[0-9]+ {yylval = atoi(yytext);return T_NUM;}

[-/+*()^\n] {return yytext[0];}

[ \t\r\a]+ {/*ignore all space*/}

. {return 0;}

%%

int yywrap(void){

return 1;

}

然后是bison的語法分析文件cal.y文件

%{

#include

int yylex();

void yyerror(const char* msg){}

%}

%token T_NUM

%left '+' '-'

%left '*' '/'

%%

S : S E '\n' {printf("ans=%d\n",$2);}

| /*enpty*/ {/*enpty*/}

;

E : E '+' E {$$ = $1+$3;}

| E '-' E {$$ = $1-$3;}

| E '*' E {$$ = $1*$3;}

| E '/' E {$$ = $1/$3;}

| T_NUM {$$ = $1;}

| '(' E ')' {$$ = $2;}

;

%%

int main(){

return yyparse();

}

然后,就是執(zhí)行過程

首先bison -dyv cal.y

得到y(tǒng).output,y.tab.c和y.tab.h這三個文件

然后執(zhí)行詞法分析文件

flex cal.l

得到lex.yy.c文件

最后對c文件進行編譯

gcc lex.yy.c y.tab.c -o cal

得到可執(zhí)行文件cal.exe

cal.exe就是我們的小型四則運算的編譯器

測試結(jié)果如下

D:\>cal.exe

2+3

ans=5

5*9

ans=45

1-5*7

ans=-34

4+(6-9)

ans=1

確實,相當于實現(xiàn)了一個小型的四則運算的編譯器

總結(jié)

以上是生活随笔為你收集整理的java下bison_windows下bison的安装与入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。