直譯器模式雖然聽上去有些費解,但是如果用示例說明一下就不難理解了。我們知道在c語言中,關於變數的定義是這樣的:乙個不以數字開始的由字母、數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。
typedef struct _interpret
interpret;
上面的資料結構比較簡單,但是很能說明問題。就拿變數來說吧,這裡就可以定義成字母的直譯器、數字直譯器、下劃線直譯器三種形式。所以,我們可以進一步定義一下process的相關函式。
#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語言中,關於變數的定義是這樣的 乙個不以數字開始的由字母 數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。cpp view plain copy typedef struct i...
C語言和設計模式(直譯器模式)
直譯器模式雖然聽上去有些費解,但是如果用示例說明一下就不難理解了。我們知道在c語言中,關於變數的定義是這樣的 乙個不以數字開始的由字母 數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。cpp view plain copy typedef struct i...
C語言和設計模式(直譯器模式)21
直譯器模式雖然聽上去有些費解,但是如果用示例說明一下就不難理解了。我們知道在c語言中,關於變數的定義是這樣的 乙個不以數字開始的由字母 數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。cpp view plain copy print typedef st...