2016-12-05 5 views
1

Как написать cfg для блока кода? Я знаю, как написать cfg для регулярного выражения, но если нам нужно написать cfg для следующего ввода, то естьКонтекстная свободная грамматика для выражения

int a = 0;

Как это сделать?

+0

Зависит от того, что вы подразумеваете под «блоком кода». C++, например, не может быть описана CFG. – Iluvatar

+0

@Iluvatar По 'блоку кода', я имею в виду код на C++. Спасибо, btw! –

ответ

1

Придерживайтесь C на данный момент.

Блок состоит из оператора (по существу) или фигурной скобки, списка объявлений переменных, списка операторов или блоков и другой фигурной скобки.

Итак, начните с предположения, что int является единственным допустимым типом переменной l, что нет глобальных переменных или параметров, и что назначение арифметического выражения (например, a = 2 * b + c;) является единственным допустимым типом утверждения ,

Затем добавьте инструкции if в свою грамматику, затем в то время как циклы. Наконец, вызовы функций с параметрами.

Тогда вы по существу получили грамматику языка C-типа, остальное - это просто детали (есть также неудобная проблема с C typedefs, к которой вы придете, когда вы, наконец, обходите их, добавив их).

 Смежные вопросы

  • Нет связанных вопросов^_^