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

Lex 編譯器入門

系統 3265 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條評論
主站蜘蛛池模板: 爽爽影院免费观看视频 | www.91色.com | 国产福利在线观看 | 国自产拍在线天天更新2019 | 2019偷偷狠狠的日日 | 伊人热久久 | 国产精品伦理 | 亚洲成a v人片在线观看 | 欧美日韩久久 | 日韩 欧美 中文 | 五月婷婷综合激情 | 国产成人精品免费视频网页大全 | 欧美一级特黄真人毛片 | 999精品久久久中文字幕蜜桃 | 天天干天天插 | 亚洲精品一区二区伦理 | 91中文字幕视频 | 中文字幕亚洲欧美日韩高清 | 中日韩欧美中文字幕毛片 | 亚洲综合99 | 亚洲成人在线免费视频 | 特级a毛片| 国产日产亚洲精品 | 亚洲日韩第一页 | 97干色| 欧美精品专区免费观看 | 日日干影院 | 久久综合国产 | 大香伊人久久 | 亚洲欧美人成综合在线最新 | 国产亚洲午夜精品a一区二区 | 久久99在线 | 日本高清视频一区二区 | 豆奶视频污 | 中文字幕日韩欧美一区二区三区 | 国自产拍在线天天更新91 | 日本色一区 | 成人午夜啪啪免费网站 | 爱爱片免费看 | 国产精品免费久久久久影院小说 | 亚洲精品久久久久综合91 |