1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          windows下bison的安裝與入門

          來源:互聯網轉載 時間:2024-01-29 08:17:32

          Bison是一個語法分析器,bison和flex配合使用
          可以將用戶提供的語法規則轉化成一個語法分析器
          利用Bison,可以開發各種語言解釋器

          Bison的輸入文件以.y作為后綴名
          其語法文件的一般格式如下:

          %{    Prologue%}Bison declarations%%Grammar rules%%Epilogue

          使用兩個%%分隔符,將文件分為三個部分
          Prologue定義動作中使用的類型和變量
          Bison Declaration聲明了終結符號和非終結符號的名稱
          還可以描述運算符的優先級以及各種符號的語義值的數據類型

          Grammar rules定義了如何從各個部分構造每個非終結符
          Epilogue可以包含要使用的任何代碼

          回歸正題,windows下怎么安裝Bison呢?
          Bison的下載地址為http://gnuwin32.sourceforge.net/packages/bison.htm

          直接下載,點擊安裝即可
          全都安裝好以后還要設置一下環境變量Path,即需要將Bison的安裝目錄添加到Path中
          打開右鍵->我的電腦→屬性→高級系統設置->環境變量->系統變量->Path->編輯->新建->輸入Bison的安裝目錄具體到bin目錄下->確定
          退出后,打開CMD,輸入bison - V,記住這里的v要大寫。若安裝成功就會顯示bison的相關信息

          C:\>bison -Vbison (GNU Bison) 2.4.1Written 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 NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

          然后結合具體的例子——四則運算來看看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 <stdio.h>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();}

          然后,就是執行過程
          首先bison -dyv cal.y
          得到y.output,y.tab.c和y.tab.h這三個文件

          然后執行詞法分析文件
          flex cal.l
          得到lex.yy.c文件

          最后對c文件進行編譯
          gcc lex.yy.c y.tab.c -o cal
          得到可執行文件cal.exe
          cal.exe就是我們的小型四則運算的編譯器

          測試結果如下

          D:\>cal.exe2+3ans=55*9ans=451-5*7ans=-344+(6-9)ans=1

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

          標簽:bison-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          請問如何用UG做流體分析,謝謝?高級仿真里Thermal Flow1.建立約束模型2.對流體區域進行建模Cast里有個小例子~學習了UG設計還有必要學習模流分析嗎?模流分析是模具設計的輔助工具,剛開始做設計的時候可以不用模流分析,一般大型企業有專業的模流分析工程師。如果做了3年以上的設計時,有時間的情況下可以學習一下模流分析。在三維畫圖軟件中,proe、UG和Solidworks,你認為哪個符合你...

          compareto比較大小規則?從兩個字符串的第一個字符開始,逐個進行比較(根據字符的ASCII值),直到出現不同的字符或遇到“0”。如果所有字符相同,則認為兩個字符串相等,并返回0;如果有不同的字符,則以第一個不同字符的比較結果為準;如果前一個字符大于后一個字符,則返回1;否則返回-1。compareTo和comparetoIgnorecase有啥區別?CompareTo:comparecomp...

          華縣隸屬安陽市。1.河南省直管縣華縣位于河南省北部,與濮陽、安陽、鶴壁、新鄉接壤。南距鄭州130公里,北距安陽70公里,東北距濮陽53公里,西南距新鄉70公里。2.滑縣位于河南省北部平原,隸屬安陽市。目前是省直管縣,與濮陽、演金、??h、長垣、封丘、內黃接壤。北距安陽70km,東北距濮陽53km,西南距新鄉70km,西北距鶴壁新城25km。河南的滑縣屬于哪個市?河南省直管縣滑縣?;h是河南省直屬縣,...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>