编程语言的变量为啥不能是数字开头

参考:https://www.zhihu.com/question/19581495

主要是工程折衷。

程序语言的分析分词法和语法两部分。词法分析主要用的是正规文法,也就是三型文法。这类文法主要采用正则表达式分析。正则文法分析器的特点是它是不回溯的,所以实现很简单。

如果一个变量以数字开头,那么分析器就必须在遇到第一个或第二个英文字符的时候回溯来确定是否是数字、变量名还是词法错误,这时候就变成了二型文法。
二型文法分析器的好处是支持回溯和递归语法(所以语法分析是靠它的),但是缺点是状态机相比正则文法状态大大增加,而且代码写起来更困难。 考虑到词法分析部分只是用来断字,我们实在是没有为了支持变量名以数字开头这么一个小功能而让整个词法分析部分用二型文法写。 故,最后大家都默认了变量要避免用数字开头。

 

posted @ 2019-04-30 17:04  XuMou  阅读(477)  评论(0编辑  收藏  举报