我總是碰到一個奇怪的事實,而讀任何編程語言參考:爲什麼很多語言不接受從數字開始的名字?
變量或常量名不能以數字
當然開始,即使從數字名稱被允許的話,使用這種做法是不好的做法。
但是真正的主要原因是什麼?
是否會很難解析?
爲避免混淆代碼而棄用了嗎?
我總是碰到一個奇怪的事實,而讀任何編程語言參考:爲什麼很多語言不接受從數字開始的名字?
變量或常量名不能以數字
當然開始,即使從數字名稱被允許的話,使用這種做法是不好的做法。
但是真正的主要原因是什麼?
是否會很難解析?
爲避免混淆代碼而棄用了嗎?
這個限制是爲了簡化語言分析器而存在的。接受具有前導數字的標識符所需的工作可能不被認爲是值得的複雜性。
儘管如此,並非所有語言都有此限制;考慮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
爲了使解析效率解析器依賴展望下一個角色以確定下一個令牌的可能性。當變量名稱,常量名稱和單詞等標識符可以以數字開頭時,下一個標記分支的可能性會顯着增加。同樣取決於解析方法,它可能必須向前看更多的字符才能確定令牌類型,從而導致解析器更復雜。
這個限制並不一定會簡化語言分析器(畢竟只要不是所有的字符都是標識符中的數字,它只是對詞法分析器的簡單修改)。如果有的話,這是對語言規則的簡化*,包括例如'2f'(數字或標識符?)。 – user2864740