直譯器模式雖然聽上去有些費解,但是如果用示例說明一下就不難理解了。我們知道在c語言中,關於變數的定義是這樣的:乙個不以數字開始的由字母、數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。
[cpp]view plain
copy
typedef
struct
_interpret
interpret;
上面的資料結構比較簡單,但是很能說明問題。就拿變數來說吧,這裡就可以定義成字母的直譯器、數字直譯器、下劃線直譯器三種形式。所以,我們可以進一步定義一下process的相關函式。
[cpp]view plain
copy
#define digital_type 1
#define letter_type 2
#define bottom_line 3
void
* digital_process(
void
* pdata,
int* type,
int* result)
if(*str ==
'\0'
)
if(*str ==
'_')
if(*str >=
'a'&& *str <=
'z'|| *str >=
'a'&& *str <=
'z')
*result = false;
return
null;
}
void
* letter_process(
void
* pdata,
int* type,
int* result)
if(*str ==
'\0'
)
if(*str ==
'_')
if(*str >=
'0'&& *str <=
'9')
*result = false;
return
null;
}
void
* bottom_process(
void
* pdata,
int* type,
int* result)
if(*str ==
'\0'
)
if(*str >=
'a'&& *str <=
'z'|| *str >=
'a'&& *str <=
'z')
if(*str >=
'0'&& *str <=
'9')
*result = false;
return
null;
}
C語言和設計模式(直譯器模式)
直譯器模式雖然聽上去有些費解,但是如果用示例說明一下就不難理解了。我們知道在c語言中,關於變數的定義是這樣的 乙個不以數字開始的由字母 數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。typedef struct interpret interpret 上...
C語言和設計模式(直譯器模式)
直譯器模式雖然聽上去有些費解,但是如果用示例說明一下就不難理解了。我們知道在c語言中,關於變數的定義是這樣的 乙個不以數字開始的由字母 數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。cpp view plain copy typedef struct i...
C語言和設計模式(直譯器模式)21
直譯器模式雖然聽上去有些費解,但是如果用示例說明一下就不難理解了。我們知道在c語言中,關於變數的定義是這樣的 乙個不以數字開始的由字母 數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。cpp view plain copy print typedef st...