Получить парсер clang / llvm из парсера yacc - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь собрать парсер для Promela в llvm.У меня есть синтаксический анализатор SPIN, который построен с использованием yacc, включая ввод, который идет к yacc.Есть ли способ использовать парсер yacc для быстрой и безболезненной генерации парсера clang / llvm?Я буду использовать его для генерации графов вызовов и статического анализа.

1 Ответ

1 голос
/ 14 июля 2019

Теперь мне нужно знать, могу ли я использовать существующий компилятор Promela, созданный с помощью yacc, для быстрого создания синтаксического анализатора (а затем и генератора IR) с использованием каркаса llvm.

Да, вы можете повторно использовать существующую YACC-грамматику (и, если хотите, даже существующую AST) для вашего проекта.«Создание синтаксического анализатора с использованием среды llvm» немного вводит в заблуждение, хотя LLVM не будет иметь ничего общего с анализом и AST.LLVM не войдет в него, пока вы не сгенерируете LLVM IR, а затем поработаете с ним.

Таким образом, вы либо берете существующую грамматику YACC и существующую AST, либо вы берете только грамматику и заменяете действия теми, которыесоздайте свой собственный AST, который вы определили сами.В любом случае, эта часть не будет включать LLVM.

Затем вы напишете отдельную фазу, которая обходит AST и генерирует LLVM IR с использованием API LLVM, на котором вы можете затем выполнить все преобразования и анализы, поддерживаемыеLLVM.

...