2014-01-25 16 views

回答

1

這個限制是爲了簡化語言分析器而存在的。接受具有前導數字的標識符所需的工作可能不被認爲是值得的複雜性。

儘管如此,並非所有語言都有此限制;考慮Racket(一種Lisp /計劃方言):

[email protected]: ~ racket 
Welcome to Racket v5.3.6. 
-> (define 9times! 9) 
-> (* 9times! 2) 
18 

但那麼當然Lisp的語言特別容易解析。

至於混淆,我敢肯定這個事實,標識符可以是Unicode字符(如球拍和圍棋)可以這樣更加混亂:

-> (define ǝʃqɐıɹɐʌ-ɐ-sı-sıɥ⊥ 144) 
-> (sqrt ǝʃqɐıɹɐʌ-ɐ-sı-sıɥ⊥) 
12 
+0

這個限制並不一定會簡化語言分析器(畢竟只要不是所有的字符都是標識符中的數字,它只是對詞法分析器的簡單修改)。如果有的話,這是對語言規則的簡化*,包括例如'2f'(數字或標識符?)。 – user2864740

1

爲了使解析效率解析器依賴展望下一個角色以確定下一個令牌的可能性。當變量名稱,常量名稱和單詞等標識符可以以數字開頭時,下一個標記分支的可能性會顯着增加。同樣取決於解析方法,它可能必須向前看更多的字符才能確定令牌類型,從而導致解析器更復雜。

相關問題