Какие инструменты компилятора используются разработчиками на «официальном» языке? - PullRequest
2 голосов
/ 23 июля 2010

Существует множество генераторов лексических анализаторов и синтаксических анализаторов - lex / flex и yacc / bison, jflex и javacup, gplex и gppg и т. Д. Мне интересно, какие инструменты используются официальными разработчиками языков - для Sun иMicrosoft использует какие-либо из них при разработке Java и .NET, или магазины такого размера используют только собственные внутренние инструменты?

Ответы [ 4 ]

5 голосов
/ 23 июля 2010

Однажды я услышал легенду о том, что большинство компиляторов c компилируется само по себе.

Они делают то, что пишут новую версию (пример версии 5), компилируют ее, используя старую версию (версию 4),затем, используя вновь скомпилированную версию (версия 5, которая была скомпилирована с использованием версии 4), они снова компилируют себя.(так что версия 5 теперь скомпилирована версией 5).

3 голосов
/ 23 июля 2010

Я был в нескольких коммерческих компиляторах, и я не знаю ни одного, который построен на генераторах lex или yacc. Lex и yacc удобны, чтобы довольно быстро получить синтаксис и выполнить синтаксический анализ, но обычно это не самый высокий приоритет коммерческого продукта. Я не говорю, что коммерческие продукты не могут быть построены на yacc - я уверен, что некоторые из них были - но коммерческие компиляторы, в которых я принимал участие, все были написаны вручную, предпочитая сырую скорость по сравнению со всем остальным. *

И да, компиляция сама по себе является нормой, и это "забавное" приключение Эшера-эска в логике makefile. ;>

0 голосов
/ 12 октября 2017

Более общие компиляторы см. В ответе Д. Торпа. Обычно они этого не делают.

Такие инструменты, тем не менее, используются компаниями, которые обычно перенаправляют компиляторы C, как правило, на новые цели (*), с целевыми конкретными расширениями, чтобы быстро вставлять новые функции безопасным и согласованным способом, а затем запускают некоторый пакет проверки, чтобы результат соответствует.

(*) Подумайте о новых DSP, микроконтроллерах и т. Д.

0 голосов
/ 23 июля 2010

JavaCC имеет современную грамматику Java. Вопрос о том, написан ли Java-компилятор на самом деле через JavaCC, - это другой вопрос.

...