Любые инструменты могут произвольно сгенерировать исходный код в соответствии с грамматикой языка?

Исходный код программы AC может быть проанализирован в соответствии с грамматикой C (описанной в CFG) и в конечном итоге превращен во многие AST. Я рассматриваю, существует ли такой инструмент: он может делать обратное, сначала случайным образом генерируя множество AST, которые включают токены, которые не имеют конкретных строковых значений, только типы токенов в соответствии с CFG, а затем генерируют конкретные токены в соответствии с определениями токенов в регулярном выражении.

Я могу представить, что первый шаг выглядит как итеративная нетерминальная замена, которая происходит случайным образом и может быть ограничена определенным количеством итераций. Второй шаг - просто генерировать случайные строки в соответствии с регулярными выражениями.

Есть ли какой-нибудь инструмент, который может это сделать?

5
задан Wooble 22 March 2013 в 18:39
поделиться