Является ли Vala разумным языком для анализа по сравнению с C ++? - PullRequest
7 голосов
/ 27 ноября 2010

Проблемы синтаксического анализа C ++ хорошо известны. Он не может быть проанализирован исключительно на основе синтаксиса, он не может быть выполнен как LALR (каким бы ни был термин, я не теоретик языка), языковая спецификация состоит из миллиарда страниц и т. Д. По этой и другим причинам я Я выбираю альтернативный язык для моих личных проектов.

Вала выглядит как хороший язык. Хотя обеспечение многих улучшений по сравнению с C ++ так же сложно разобрать? Или у него аккуратная формальная грамматика разумной длины или какое-то логическое описание, подходящее для построения синтаксических анализаторов для компиляторов, анализаторов исходного кода и других инструментов?

Каким бы ни был ответ, это относится к альтернативному синтаксису Genie?

(Мне также интересно, хотя и менее сильно, о D и других языках, не относящихся к виртуальной машине, кроме C ++.)

Ответы [ 2 ]

7 голосов
/ 27 ноября 2010

C ++ является одним из самых сложных (если не самых сложных) языков программирования для общего использования.Особую сложность представляют правила поиска имен и правила создания шаблонов.C ++ не разбирается с использованием синтаксического анализатора LALR (1) (такого как парсеры, сгенерированные Bison и Yacc), но он обязательно разбирается (в конце концов, люди используют парсеры, у которых нет проблем с синтаксическим анализом C ++ каждый день).( Фактически, более ранние версии G ++ были построены поверх платформы синтаксического анализатора Bison Generalized LR На самом деле нет, см. Комментарии), прежде чем он был недавно заменен рукописным анализатором рекурсивного спуска)

С другой стороны, я не уверен, что вижу, какие "улучшения" предлагает Vala по сравнению с C ++.Языки стремятся достичь тех же целей.С другой стороны, вы, вероятно, не найдете ничего за пределами GTK +, написанного с помощью интерфейсов Vala.Вы будете использовать интерфейсы C для всего остального, что в действительности лишает смысла использование такого языка.

Если вам не нравится C ++ из-за его сложности, возможно, стоит подуматьВместо этого Objective-C, потому что это простое расширение C (как и Vala), но у вас есть гораздо большее сообщество программистов, на которое вы можете опираться, учитывая его основу для всего на земле Mac.

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

6 голосов
/ 08 декабря 2010

Все довольно просто. Вы можете использовать libvala для анализа, семантического анализа и генерации кода вместо того, чтобы писать свой собственный.

...