類似 Python 的縮排文法是喬姆斯基多少級語言?

時間 2021-06-01 03:01:25

1樓:

同意@馮東 的回答,我再說具體一點。實際寫程式時,縮排並不列入文法的考慮範圍內,而是在詞法分析階段直接將多於上一行的兩個空格識別為乙個類似「」的閉合符號。這樣一來語法分析器看到的就是一門普通的語言了,和縮排無關。

2樓:Belleve

一級。證明在此:http://www.

cs.uni-salzburg.at/~ck/wiki/uploads/TCS-Summer-2006.

IndentationSensitiveLanguages/report.pdf

實際上「縮排」語言可用附標文法(Indexed Grammar)表示。在只用一種字元縮排的情況下,下面的文法表示了乙個簡單的「縮排」語言(起始符號是 )

3樓:Alan Li

我認為是喬姆斯基1級,上下文相關文法。我的理解如下,考慮這個產生式:

suite ::=

stmt_list NEWLINE

NEWLINE INDENT statement+ DEDENTINDENT和DEDENT用來控制縮排數量,其中INDENT增加以下文法statement+的縮排,DEDENT減少文法縮排。於是這個不是純粹 X -> a N b的表示式,我們還需要乙個額外的縮排資訊,所以不是上下文無關文法。

這是我想到的乙個反例,correct me if I am wrong.

python語言的強制縮排是乙個敗筆?

張迪 自從用了py,不管是c還是vb,就算是有了括號,我還是喜歡加個table。層層遞進真的確實賞心悅目,也好查詢。如果覺得是缺點,請多用幾個函式,邏輯更清晰一點。 是的,但是和強迫優雅之類的無關,而是強制縮排導致了語法上無法實現匿名函式,別跟我講只能寫一行的lambda,也別跟我安利其它什麼東西,...

python有什麼類似特性(或者是解釋型語言特性)?

除非你想走編譯原理等方向否則不建議去鑽牛角尖 想這個東西是怎麼實現的 Coldwings 已經從編譯原理的基礎 語法樹 方向做了乙個很專業的回答 從提問來看你很需要乙個基礎的邏輯 語言感,也就是說你需要先知道基本邏輯運算 條件控制 變數等東西,然後你才可以更進一步去知道 這個東西是怎麼實現的 否則一...

python有沒有類似於java的jar包的方式匯入第三方模組?

DamonChen 語言不一樣,所以不要輕易的那麼認為,因為Python有很多C擴充套件,這部分的二進位制在不同平台上是不相容的 windows上的肯定不能執行在linux上 python的包依賴,你可以修改sys.path來改變依賴路徑。但是呢,僅限於純Python檔案。都是Windows的,可以...