Компилятор C с открытым исходным кодом в C#? [закрытый]

21
задан Robert Harvey 26 November 2015 в 19:49
поделиться

4 ответа

Вам будет сложно найти образец кода. Авторы компилятора используют начальную загрузку . Первый компилятор C был написан на языке B. Который затем был использован для написания первого компилятора C ++. Которая использовалась для написания компилятора C #. Что очень часто используется для написания компиляторов для управляемого кода.

Это не обратный процесс. Хотя побочные действия были обычным явлением, компиляторы C часто использовались для кросс-компиляции компилятора для другой операционной системы.

Думаю, я использовал эту книгу , в ее приложениях есть потрясающий код компилятора C. Написано на C. Я использовал его части при написании базового компилятора, который мне понадобился в большом проекте. Синтаксический анализатор выражений сложно понять, он имеет элегантное решение для правил приоритета операторов.

Ориентация на управляемый язык - более простой способ добиться этого. Язык не должен иметь большого значения, настоящая проблема - заставить его работать. Несмотря на то, что много легче заставить работать управляемый код. Если вы хотите нацелиться на C, вам понадобятся навыки машинного кода черного пояса и глубокое понимание формата объектного файла и компоновщика.

11
ответ дан 29 November 2019 в 21:24
поделиться

Самый простой реальный язык с точки зрения синтаксиса, кажется, C.

Я не уверен, что вы имеете в виду под "настоящим языком", но что бы ни означало «реальный язык», я не могу согласиться с тем, что C имеет «прямую» лексическую или синтаксическую грамматику, а его семантика недооценена. Если вам нужен чрезвычайно простой язык с довольно четко определенной семантикой, почему бы не выбрать Scheme? Scheme имеет очень простую грамматику, но определенно не является тривиальной задачей для правильного понимания ее семантики.

10
ответ дан 29 November 2019 в 21:24
поделиться

нашел это через google.

http://blogs.msdn.com/jmstall/archive/2005/02/06/368192.aspx

EDIT: и это (не совсем C): http://msdn.microsoft.com/en-us/magazine/cc136756.aspx

5
ответ дан 29 November 2019 в 21:24
поделиться

Я не знаю ни одного существующего, но нет причин, по которым нельзя было или не должно было быть.

Написание компилятора для C-подобного языка - классический проект для семестровых курсов по компиляторам в колледже. Если вы уже знаете C #, он предоставляет множество функций, которые сделают вашу работу проще, чем когда я учился в колледже! Существует множество библиотек, которые упростят работу, не снимая проблем, и вы всегда можете заменить их своим собственным специальным кодом, если вам нужна гибкость, которую они не обеспечивают.

Первый компилятор C был написан на BCPL, потому что это то, что у них было. Текущие компиляторы C обычно пишутся на C, потому что они стремятся быть переносимыми. Я не думаю, что кто-то станет утверждать, что C - хороший язык для написания компиляторов. (C # не идеален, но он намного лучше!) В статически компилируемом языке, таком как C, я не думаю, что вы получите много пользы. , если есть, от использования целевого языка для написания компилятора.

Компилятор в HLL потенциально имеет много преимуществ. Это было бы короче и проще, чем написанное на C. Уже одно это могло бы сделать многие вещи настолько легкими, что их можно было бы опустить ниже порога «слишком сложно, чтобы никто никогда не собирался их делать». (GCC - это своего рода пример того, как компилятор, написанный на LLL, может быть настолько сложным, что движется с ледяной скоростью.) Оптимизация - это в основном преобразования графа, что не совсем сильная сторона C.

Я вообще не считаю "задом наперед" использование C # для компиляции C.Если кто-то не предлагает переписать весь свой код C на языке более высокого уровня, его все равно нужно как-то скомпилировать, а это значит, что вам нужен компилятор. Разве этот компилятор не должен быть написан с инструментами, которые позволяют ему обеспечивать максимальную надежность и производительность?

Удачи! Я с нетерпением жду того, что вы напишете!

4
ответ дан 29 November 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: