ccaY 的補充內容

2021-04-13 08:17:09 字數 1944 閱讀 2246

lex 的常規表示式

常規表示式是一種使用元語言的模式描述。表示式由符號組成。符號一般是字元和數字,但是 lex 中還有一些具有特殊含義的其他標記。 下面兩個**定義了 lex 中使用的一些標記並給出了幾個典型的例子。

用 lex 定義常規表示式

字元含義

a-z, 0-9, a-z構成了部分模式的字元和數字。

.匹配任意字元,除了 /n。

-用來指定範圍。例如:a-z 指從 a 到 z 之間的所有字元。

[ ]乙個字元集合。匹配括號內的 任意 字元。如果第乙個字元是^那麼它表示否定模式。例如: [abc] 匹配 a, b, 和 c中的任何乙個。

*匹配 0個或者多個上述的模式。

+匹配 1個或者多個上述模式。

?匹配 0個或1個上述模式。

$作為模式的最後乙個字元匹配一行的結尾。

指出乙個模式可能出現的次數。 例如: a 表示 a 可能出現1次或3次。

/用來轉義元字元。同樣用來覆蓋字元在此表中定義的特殊意義,只取字元的本意。

^否定。

|表示式間的邏輯或。

"《一些符號》"字元的字面含義。元字元具有。

/向前匹配。如果在匹配的模版中的「/」後跟有後續表示式,只匹配模版中「/」前 面的部分。如:如果輸入 a01,那麼在模版 a0/1 中的 a0 是匹配的。

( )將一系列常規表示式分組。

常規表示式舉例

常規表示式含義

joke[rs]

匹配 jokes 或 joker。

ashis+

匹配 aashis, ashis, aashi, ashi。

(a[b-e])+

匹配在 a 出現位置後跟隨的從 b 到 e 的所有字元中的 0 個或 1個。

lex 變數

yyin

file* 型別。 它指向 lexer 正在解析的當前檔案。

yyout

file* 型別。 它指向記錄 lexer 輸出的位置。 預設情況下,yyin 和 yyout 都指向標準輸入和輸出。

yytext

匹配模式的文字儲存在這一變數中(char*)。

yyleng

給出匹配模式的長度。

yylineno

提供當前的行數資訊。 (lexer不一定支援。)

name.y - 語法檔案

%

typedef char* string;

#define yystype string

%}%token name eq age

%%file : record file

| record

;record : name eq age ;%%

int main()

int yyerror(char *msg)

name.lex - lex 的解析器檔案

%

char [a-za-z]

num [0-9]

eq [=]

name +

age +%%

%%int yywrap()

指標內容補充

在前面總結引數傳遞的三種方式時,我們提到,在建立乙個指標之後,我們首先要給它乙個位址,即int p a 之後p本身的值所代表的就是它所指向內容的位址,而 p就是它所指向的內容的值。但之前我們討論的,都是指標指向乙個值的情況,例如指向乙個int型變數或者char型等等。但今天在複習深淺複製時,發現當我...

Linux學習筆記 補充內容

命令格式 find 目錄 條件 條件值1.find name find etc name passwd 查詢 etc下名字叫做passwd的檔案2.find user group a o not find mnt group root find mnt user westos find mnt gr...

Phthon十五 Python內容補充

1.特殊的方法舉例 init self,這個方法在新建物件恰好要被返回使用之前被呼叫。del self 恰好在物件要被刪除之前呼叫。str self 在我們對物件使用print語句或是使用str 的時候呼叫。lt self,other 當使用 小於 運算子 的時候呼叫。類似地,對於所有的運算子 等等...