0
我給出前綴符號正則表達式像下面這樣:在Python中從前綴regex創建表達式樹?
(r* (r. r| a (r. b b) (r. c (r* c))) a))
其中:
c (for any char c) means "regex accepting the single-character string c"
r. means "regex accepting the empty string"
r/ means "regex accepting nothing"
(r| r1 r2 ...) means "r1 union r2 union ..."
(r. r1 r2 ...) means "r1 concat r2 union ..."
(r* r1) means "r1*"
我怎麼會去解析成一個表達式樹這給出了上述正則表達式作爲輸入?它不能在空白處被分割,因爲在某些術語中有空格,所以我不確定從哪裏開始。
這聽起來像是功課。如果是這樣,那麼約束是什麼?你是否應該使用正則表達式來解析它,或者寫一個解析器?如果是後者,你可以使用像'pyparsing'這樣的庫嗎?或者你必須從頭開始做什麼,除了stdlib? – abarnert 2013-02-13 22:39:43
@abarnert它是功課。我們應該編寫一個解析器,但如果我們願意,可以使用像pyparsing一樣的庫。我只是沒有經驗與該圖書館,並沒有發現它用於前綴(波蘭)符號的例子。 – Jakemmarsh 2013-02-13 22:42:58
另外,'(r。r1 r2)'看起來含糊不清。規則是否有優先權(嘗試從下到上貪婪地應用規則) - 或者,相當於'r.'實際上是指類似於「正則表達式接受空字符串,除非它是第一個元素括號表達「? – abarnert 2013-02-13 22:44:37