提交于 2017-02-07 10:03:44
以 Python 為例,因為代碼塊是以縮進數(shù)量來判斷的,寫 parser 構(gòu)建 scope tree 的時候就需要做一些計算 indent 數(shù)量進而判斷代碼塊 scope 位置的額外工作,如果遇到 tab 和空格混用的代碼,處理起來就會很成問題。其他明確地使用『{}』符號來分割代碼塊結(jié)構(gòu)的語言,在這方面處理起來就可以方便許多。
所以從 parser 構(gòu)建角度來看,適當?shù)姆指罘柨梢院喕S多工作。
提交于 2017-02-17 09:37:21
代碼是字符串,字符串就要被復(fù)制。顯然在把代碼從一個地方復(fù)制/剪切到另一個地方的時候,使用大括號+分號或者類似的結(jié)構(gòu)的語言可以保持大概的語義不變,而python,嘿!嘿!嘿!
其實我心目中的IDE,應(yīng)該支持把一個語言渲染成不同的風(fēng)格,譬如說大括號啊,縮進啊,要不要分號啊,還是干脆用begin/end啊,渲染成lisp啊,縮進要多少啊,大括號要不要換行啊,if后面要不要加空格啊,隨便你!反正保存下來的是二進制的語法樹,拒不兼容其它文本編輯器,merge工具IDE給你做好,一了百了。