2015-06-08 2 views
1

До сих пор я мог использовать pyparsing для синтаксического анализа грамматик ebnf. Однако, я хотел попробовать следующий образец кода, но не смог найти хорошую грамматику.pyparsing - parse scoped variables

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

Значение радиуса с областью действия должно быть 10, 5 в противном случае. Любая помощь будет оценена по достоинству?

С уважением

Praveen

+0

Я думаю, этот вопрос выходит далеко за рамки основного вопроса синтаксического анализа. После того, как вы проверили этот синтаксический анализ, вы должны иметь надлежащую среду исполнения, которая будет учитывать область видимости переменных. Я бы сказал, что работа должна идти. – PaulMcG

+0

Спасибо, Пол. Будет делать то же самое. После разбора я оставлю его до действия синтаксического анализа, чтобы отличить глобальные и локальные переменные. –

ответ

0

Я был в состоянии получить парсер для кода выше, запустив:

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

У меня есть следить за вопросом. Я привык писать грамматику ebnf, используя http://pyparsing.wikispaces.com/file/view/ebnf.py

Могу ли я получить некоторую помощь в определении ebnf для пересылки или эквивалента вышеуказанного кода? или я должен делать вне ebnf?

С уважением

Praveen