為什麼標示符不能用數字開頭?

2021-10-01 22:01:32 字數 363 閱讀 1711

因為會引起二義性

double e = 3e3;

如果識別符號允許第乙個字元為數字字元的話,那麼 3e3 既可表示識別符號(變數名),亦可表示數值:3*10^3, 編譯時會顯示二義性。

如果乙個變數以數字開頭,那麼分析器就必須在遇到第乙個或第二個英文本元的時候回溯來確定是否是數字、變數名還是詞法錯誤,這時候變成了二型文法。二型文法分析器的好處是支援回溯和遞迴語法(所以語法分析是靠它的),但是缺點是狀態機相比正則文法狀態大大增加,而且**寫起來更困難。

考慮到詞法分析部分只是用來斷字,我們實在是沒有為了支援變數名以數字開頭這麼乙個小功能而讓整個詞法分析部分用二型文法寫。

故,最後大家都預設了變數要避免用數字開頭。

aspen為什麼不能用 地坪漆為什麼不能用在室內?

在很多的營銷號中,人們常說地坪漆為什麼不能在室內使用。但是這種說法是錯誤的,地坪漆的種類居多,不同的地坪的使用地方也不同。不同材料的地坪漆使用的地方也不同,比如在化工廠用在室內的話,那肯定是不可以的。下面我們來解析一下室內地坪。一 工程部位 室內地坪 二 地面施工工藝 基層處理 找標高 彈線 灑水濕...

為什麼不能用memcached儲存Session

memcached建立者dormando很早就寫過兩篇文章 1 2 告誡開發人員不要用memcached儲存session。他在第一篇文章中給出的理由大致是說,如果用memcached儲存session,那麼當memcached集 生故障 比如記憶體溢位 或者維護 比如公升級 增加或減少伺服器 時,...

oracle 查詢日期型別為什麼不能用

對於新手而言,沒有接觸過oracle經常會問oracle 查詢日期型別為什麼不能用 來查詢資料,對於這個問題要注意在等號的兩邊必須資料型別一致,比如 2010 9 19 這是乙個字串不能直接與日期型別字段比較 必須要進行日期轉換 1 日期轉換成字串 to char date,yyyy mm dd 2...