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