是什麼構成一篇漢語文章的呢?從小到大列舉,最小單位是「字」(通常狀況不會再去拆部首),「字」組成「詞」,「詞」再組成「句」,「句」組成「段落」,「段落」組成「文章」。
計算機要處理漢語時,第一步通常就是「分詞」,例如說 嫉妒使我面目全非
,可以拆解成「嫉妒」、「使」、「我」、「面目」、「全」、「非」。也許有人會把「面目全非」直接分一個詞,也不能說錯,自然語言本就沒必要只能唯一拆解。
法咒(程式語言)跟自然語言仍是有些共通之處,同樣能拆解成不同層級。
想像編譯器讀取音界咒文件時,它看見的是一個又一個的字元,而分詞器做的事情就很接近上述的漢語分詞器。但法咒(程式語言)不能有岐義,因此需要藉助特殊符號,如空白鍵或音界號來確定詞與詞之間的邊界。
來看個範例:
元.人數=(11+3)*4
人數+1
第一行 元.人數=(1+3)*4
依序是分解為
元
,關鍵字「元」.
,音界號人數
,這是個變數=
,等號(
,左括號11
,數字+
,運算子「加」3
,數字)
,右括號*
,運算子「乘」4
,數字\n
,換行而第二行 人數+1
依序是
人數
,這是個變數+
,運算子「加」1
,數字\n
,換行下表羅列了零・一版音界咒的所有詞:
詞 | 種類 | 細分含義 |
---|---|---|
元 | 關鍵字 | |
( | 左括號 | |
) | 右括號 | |
+ | 運算子 | 加 |
− | 運算子 | 減 |
* | 運算子 | 乘 |
/ | 運算子 | 除 |
= | 等號 | |
・ | 音界號 | |
\n | 換行 | |
[0-9]+ | 數字 | |
除以上詞之外的所有字串 | 變數 |
前幾項全是單字詞,要分出它們是再簡單不過,但最後兩種詞「數字」、「變數」就可能是多個字組成的了。
[0-9]+
是正規表達式,其意思是,字串由一到多個0123456789組成。
而除了特殊詞之外的所有字串都能當作變數,這個定義是否會太過寬鬆?或是造成歧義?這些問題留待下一章實作時,再來討論。