2015-06-08 97 views
1

到目前爲止,我能夠使用pyparsing來解析ebnf語法。 但是,我想嘗試下面的代碼示例,但不能拿出 一個很好的語法。pyparsing - 解析範圍變量

global radius = 5 
DrawCircle(radius) 
{ 
    radius = 10 
    DrawCircle(radius) 
} 
DrawCircle(radius) 

在範圍內的半徑值應該是10,5否則。 任何幫助將不勝感激?

問候

普利文

+0

我認爲這個問題遠遠超出了基本的解析問題。一旦你有了這個解析,那麼你必須有一個適當的執行環境,這將尊重變量的範圍。這就是工作應該去的地方,我會說。 – PaulMcG

+0

謝謝保羅。會做同樣的事情。一旦解析完成,我將把它留給解析操作來實際區分全局變量和局部變量。 –

回答

0

我能夠運行得到上面的代碼分析器:

enclosed = Forward() 
curls = nestedExpr('{', '}', content=enclosed) 
enclosed << (OneOrMore(commands | ',' | curls)) 

我有一個跟進的問題。我習慣於使用http://pyparsing.wikispaces.com/file/view/ebnf.py

來寫出ebnf語法我可以得到一些幫助來識別ebnf的轉發或等效的上述代碼嗎?或者我應該在外面做ebnf?

問候

普利文