Какой альтернативный синтаксис существует для C / C ++? (думаю, что SPECS или Mirah) - PullRequest
15 голосов
/ 24 марта 2011

Я задавался вопросом, есть ли какой-нибудь более простой или более мощный синтаксис для C или C ++.Я уже сталкивался с SPECS .Это альтернативный синтаксис для C ++.Но есть ли другие, а как насчет C?

Это также может быть своего рода генератор кода, чтобы такие вещи, как функторы, можно было определять менее многословно.Я полагаю, что это можно сделать как генератор кода, который компилируется в код на C или C ++, который очень похож на код, который вы написали в альтернативном синтаксисе.

Mirah - пример этогодля Java.

В идеале я хотел бы написать C на Go как синтаксис.Мне нравится, как они исправили switch-case и вообще сделали все гораздо менее многословным.

Ответы [ 5 ]

12 голосов
/ 24 марта 2011
#define BEGIN {
#define END }

Нет! Просто скажи НЕТ!

6 голосов
/ 24 марта 2011

Единственный инструмент общего назначения, о котором я знаю, это Lazy C ++ , который позволяет вам создать один исходный файл .lzz, из которого он может генерировать файлы .h и .cpp .

Существует также множество подходов к созданию кода для C ++. (Например, см. Cog , Pump или список Википедии .) Это не полноценные альтернативные синтаксисы, но они могут помочь с определенными категориями синтаксис (например, автоматическая генерация шаблонов с аргументами от 1 до N, чтобы обойти отсутствие шаблонных переменных).

3 голосов
/ 24 марта 2011

Вместо изменения в синтаксисе рассмотрим изменение в абстракции: увеличьте свою абстракцию с помощью пользовательского DSL. Поддержка инструмента будет необходима для достижения оптимальной производительности.

Если ваша цель - упрощение, легкий подход к моделированию, основанный на тексте (например, XText ), на графике (например, MetaEdit + ) или на дереве (как AtomWeaver ) устранит некоторую сложность проекта, упростив решение.

2 голосов
/ 24 марта 2011

Если вам нужен только синтаксис, почему вы не можете определить свой собственный, как тривиальный препроцессор -> parser-> C-pretty-printer chain?Это будет не более чем семантически доступный препроцессор, что-то вроде стиля CamlP4, но для C. Никто, кроме вас, не знает, какой синтаксис вы найдете подходящим, поэтому его реализация полностью зависит от вас.

1 голос
/ 24 марта 2011

Мне уже не кажется, что SPECS действительно является C ++, мне, конечно, будет трудно читать такой код (по крайней мере, на начальном этапе).

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

Если вы хотите запрограммировать Go, то программируйте на Go, не пытайтесь писать C в Go-подобном синтаксисе, так как это усложнит для любого, кто действительно знает C, для чтения вашего кода.

...