#quantum-computing #qiskit
Вопрос:
Я пытался заставить grammarinator генерировать случайные тестовые программы на основе грамматики openQasm3.0 (https://github.com/Qiskit/openqasm/blob/master/source/grammar/qasm3.g4 ), То, что я хочу получить, это:
qasm3.g4 -> Antlr4py3 -> * .g4 files -> Grammarinator-generate -> набор допустимых программных файлов в качестве тестов.
Пока что я получил:
- antlr4py3 -o ./somedir qasm3.g4 (который основан на инструкциях, приведенных на openqasm github)
- Шаг 1 дал кучу файлов, самое главное: qasm3Lexer.py , qasm3Parser.py , qasm3Lexer.токены, qasm3tokens.
- Когда я посмотрел на них, они, похоже, не отражают того, что ожидает grammarinator. Основываясь на информации и примерах, которые я прочитал в Интернете, мне нужно передать grammarinator-process и grammarinator-generate с некоторыми файлами g4, такими как qasm3Lexer4 и qasm3Parser.g4 и т. Д., Но я не могу найти их с шага 2. Я попытался передать им файлы * .py с шага 2, но они сгенерировали бессмысленные тестовые программы.
Вот некоторые из команд, которые я пробовал:
i) grammarinator-обработать qasm3Lexer.tokens qasm3.tokens -o
ii) grammarinator -обработать вывод qasm3.g4 -o
Далее следует: grammarinator-generate -l qasm3Unlexer.py -п qasm3Uparser.py -r программа -n номер -d глубина -o test.txt
Я также пробовал различные комбинации, сравнивал образцы с тем, что есть в qasm3, но безрезультатно, и я потерялся. Просто интересно, может ли кто-нибудь дать мне несколько советов о том, как действовать дальше? Заранее спасибо.
Ответ №1:
Извините за это. Я определенно неправильно понял пару вещей о antlr4 и grammarinator. Последний ожидает ввода qasm3.g4, который затем генерирует соответствующие Unlexer и Unparser. Таким образом, процесс выглядит следующим образом: qasm3.g4 (из github) -> либо antlr4, либо grammarinator -> выходы.
В итоге мне удалось заставить grammarinator генерировать некоторые тестовые программы, загрузив в него файл qasm3.g4:
- grammarinator-process qasm3.g4 -o outputdir <— этот процесс генерирует два файла, а именно qasm3Unlexer.py и qasm3Unparser.py , и они используются на следующем шаге для создания тестовых программ.
- grammarinator-generate -l outputdir/qasm3Unlexer.py -п outputdir/qasm3Unparser.py -программа r (или что-то, что вы хотите протестировать на основе qasm3.g4) -n somenum -d somedepth -o outputdir/test_%d.txt