亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Lex 編譯器入門

系統 2873 0
Lex工具
-------
Lex工具是一種詞法分析程序生成器,它可以根據詞法規則說明書的要求來生成單詞識別程序,由該程序識別出輸入文本中的各個單詞。
1 、lex程序的結構

-定義部分
-規則部分
-用戶子程序部分

其中規則部分是必須的,定義和用戶子程序部分是任選的。

(
1 )?定義部分
定義部分起始于
" %{ " 符號,終止于 " %} " 符號,其間可以是包括include語句、聲明語句在內的C語句。
%{
#include?
" stdio.h "
#include?
" y.tab.h "
extern?int?lineno
;
%}

(
2 )?規則部分
規則部分起始于
" %% " 符號,終止于 " %% " 符號,其間則是詞法規則。詞法規則由模式和動作兩部分組成。模式部分可以由任意的正則表達式組成,動作部分是由C語言語句組成,這些語句用來對所匹配的模式進行相應處理。需要注意的是,lex將識別出來的單詞存放在yytext? [] 字符數據中,因此該數組的內容就代表了所識別出來的單詞的內容。

%%
[ ] ?{ ; }
[ 0-9 ] +.? [ 0-9 ] *. [ 0-9 ] +
{?sscanf(yytext
, " %1f " , ?&yylval.val) ;
return?NUMBER ; ?}
?{?lineno++ ; return?'' '';?}
.?{?return?yytex+ [ 0 ] ; ?}
%%

(
3 )?用戶子程序部分
用戶子程序部分可以包含用C語言編寫的子程序,而這些子程序可以用在前面的動作中,這樣就可以達到簡化編程的目的。下面是帶有用戶子程序的lex程序片段。
" /* " ?skipcmnts() ;
.?/*?rest?of?rules?*/
%%
skipcmnts()
{
for?(?
; ?;?)
{
while?(input()!
= ''*'') ;
if(input()! = ''/'')
unput(yytext
[ yylen-1 ] ) ;
else?return ;
}?

?以上是這個工具的簡要說明。

我在這里以《編譯原理》(龍書)的習題為例,
3.11 編寫一個Lex程式,該程式復制一個文件,并將每一個非空的空白符序列用一個空格代替。
首先,這個“非空的空白符序列”是指由空格和制表符號組成的序列,其正則表達式是[ \t],大家注意在前面有一個空格。
再則就是做一個替換操作了。

代碼為:

%{
#include?
" stdio.h "
%}

delim????
[ ? ]
ws????{delim}+

%%
{ws}?printf(
" ? " ) ;
.?printf( " %c " , yytext [ 0 ] ) ;
%%

存為? P3-11.l
編譯過程
lex P3-11.l
cc -c lex.yy.c
cc lex.yy.o -ll -o run

使用過程
run < in.txt
輸入文件內容

I?am?????a?best?player???in?the???world ,
And?????????I??am?very????sorry?????to?trouble?you.

Hehe.


輸出結果為

I?am?a?best?player?in?the?world ,
And?I?am?very?sorry?to?trouble?you.

Hehe.


最后我提供一個腳本,方便編譯。
我的系統環境是
Ubuntu 7.10
flex 2.5.33

安裝Lex過程
sudo apt-get install flex

# ?Copyright?(C)?2003-2008?Wang?Pengcheng?<wpc0000@gmail.com>
#!/usr/bash

lex?$ 1 ?
cc?
- c?lex . yy . c
cc?lex
. yy . o? - ll? - o?run
rm?lex
. yy .*
rm?
*~

?

Lex 編譯器入門


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 午夜dy888理论不卡达达兔 | 奇米影视小说 | 亚洲视频在线观看视频 | 日本在线亚州精品视频在线 | 久色阁| 亚洲国产高清精品线久久 | 久久精品小视频 | 免费视频不卡一区二区三区 | 理论毛片 | 女人大毛片一级毛片一 | 久久亚洲国产伦理 | 亚洲酒色1314狠狠做 | 精品国产_亚洲人成在线高清 | 不卡视频在线播放 | 久久亚洲一级α片 | 色插视频 | 亚洲天堂国产精品 | 天天夜天干天天爽 | 日韩综合| h视频在线观看免费网站 | 青青青视频精品中文字幕 | 国产欧美日韩高清专区ho | 亚洲视频日韩 | 亚洲精品一区二区四季 | 日本一级毛片大片免费 | 国产精品久久精品 | 精品一区二区三区免费爱 | 五月天丁香婷婷综合 | 91免费网站在线看入口黄 | 毛片站| 性生生活网站免费 | 99久久这里只精品麻豆 | 在线欧洲成人免费视频 | 国产一区二区在线播放 | 久夜色精品国产一区二区三区 | 波多野结衣绝顶大高潮 | 久久国产高清一区二区三区 | 亚洲欧美日韩国产一区二区精品 | 亚洲福利 影院 | 亚洲欧美综合一区二区三区四区 | 国产精品国产三级国产无毒 |