Можно ли использовать синтаксический анализатор FsYacc, разработанный для одного языка, как часть процесса синтаксического анализа для другого языка? - PullRequest
1 голос
/ 09 июня 2011

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

Я уже сделал Lexing -> Parsing -> Производство AST -> Обработка AST процесс для L1 и используется для этого F # с FsLex , FsYacc утилитами.

Можно ли использовать уже разработанный процесс синтаксического анализа (я имею в виду токены , AST production , определенные в синтаксическом анализаторе L1) при синтаксическом анализе другого языка L2?

AST : AST L1 будет использоваться как часть AST для L2, и будет использоваться тот же процесс обработки AST.

FsLexLexer : возможный будет общим для обоих языков, и мне нужно будет просто включить в лексер L1 также несколько отсутствующих ключевых слов для L2.Но , если возможно иметь отдельные лексеры для L1 и L2 и ссылаться на L1 из лексера L2, это будет отлично.

FsYacc Parser : я быне похоже на 'copy-C', код всех парсеров L1 в L2. Есть ли способ ссылаться на мои данные L2, токены и данные AST, определенные в парсере L1?

Заранее спасибо

1 Ответ

2 голосов
/ 09 июня 2011

Вот интересная статья , в которой упоминаются сложности грамматической композиции.Короче говоря, вы не можете делать то, что хотите, используя yacc-подобные генераторы синтаксических анализаторов.Это не означает, что вы не сможете добиться повторного использования кода с помощью некоторой системы на основе макросов, но это останется хаком.

...