Универсальный синтаксис для языков программирования
От: Chrome  
Дата: 15.10.08 14:59
Оценка: 3 (1)
Вопрос такой – возможно ли отделить синтаксис языков программирования от семантики.
Возможно ли создать универсальный синтаксис, эффективный для человека и пригодный для описания произвольной семантики современных языков программирования.

Под описанием семантики я подразумеваю формирование(при помощи универсального синтаксиса)дерева — эквивалентного дереву разбора, которое формирует парсер обычного языка.
Эффективный для человека – означает, что эквивалентное описание должно быть не намного длиннее оригинального.

Сегодня синтаксис и семантика языка связаны – каждый язык имеет свою грамматику для описания набора концептов, которыми язык оперирует – классов, функций, переменных и т д
Несколько языков имеют примерно общую семантику, но различный синтаксис, как в примере Visual basic .Net and C#
Более того, существуют предложения создавать грамматику на каждый новый набор понятий (DSL)

Напрашивается аналогия с XML
До него каждый изобратал свой формат для каждого вида текстовых данных, после – резко перестали.
Для примера пара XML и HTML – у последнего есть несколько вкусностей – иногда можно опустить кавычки вокруг значений атрибутов, атрибуты могут вообще не иметь значений, открывающие и закрывающие таги могут пересекаться. Некоторые элементы не требуют закрывающих тагов. Но от этого постепенно отказываются в пользу универсальности(XHTML) – никому не хочется изучать эти часности.
И речь не идет о машинном разборе – HTML часто пишет и читает человек.
Тем не меннее, XHTML выглядит предпочтительно.

Начасть можно с рассмотрения лексических примитивов:
Оформление комментариев
Допустимые символы в идентификаторах
Синтаксис строк – вид кавычек, специальные символы, перенос на новую строку
Формат чисел
Чувствительность к регистру.
Все эти детали изменяются от языка к языку, на усмотрение его авторов, не принося ничего, кроме головной боли для пользователей.

Потребность в синтаксисе не связанном с семантикой зачастую возникает в рамках программирования на любом языке.
Когда в программу на C# или C++ нужно вставить какое нибудь дерево, типа XML, HTML, SQL и т д — тут начинается нецелевое использование конструкций языка, таких как: темплейты, выражения, дерево классов. Функциональные языки приспосабливают свои функции.

Решение, не очень хорошее, в природе существует – синтаксис типа лиспа, или гораздо хуже XML – можно выразить что хочешь, но слишком многословно, и недостаточно статически типизировано.

Хотелось бы понять, почему конкретный синтаксис настолько более компактен по сравнению с общим и какие успехи достигнуты в данном направлении мыслящим сообществом.
Re: Универсальный синтаксис для языков программирования
От: samius Япония http://sams-tricks.blogspot.com
Дата: 15.10.08 15:08
Оценка: :))) :))) :))) :))
Здравствуйте, Chrome, Вы писали:

http://www.transhumanism-russia.ru/content/view/331/116/
Оно?
Re: Универсальный синтаксис для языков программирования
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.10.08 15:11
Оценка: +1
Здравствуйте, Chrome, Вы писали:

C>Вопрос такой – возможно ли отделить синтаксис языков программирования от семантики.


Имхо, вряд ли.

C>Возможно ли создать универсальный синтаксис, эффективный для человека и пригодный для описания произвольной семантики современных языков программирования.


Какая-то неактуальная задача. Гораздо актуальней разработать тулзину с одной кнопкой "Сделать как надо"

C>Решение, не очень хорошее, в природе существует – синтаксис типа лиспа


Ну, например, люди взяли что-то от Лиспа и сделали достаточно расширяемую штуку со статической типизацией. Фрагмент отсюда:
{define-proc {save visual:Graphic, 
                 save-to-file?:bool = false,
                 filename:String = "image.png"}:void 
    
    || calculate offset
    let x:Distance = 0pt
    let y:Distance = 0pt
    {if visual.parent != null then
        set (x,y)={transform-coordinates 0pt,0pt, visual.parent,visual}
    }
    
    {dump x,y}
    
    || get display context
    let gc = {visual.get-display-context}
    {if visual.layout == null then
        {throw {Exception "InvalidLayout"}}        
    }
    
    
    || get bounds
    let bounds:GRect = {visual.layout.get-bounds}
    {output bounds.width, bounds.height}
    
    || create the offscreen stuff
    let (r2:Renderer2d, d:Drawable) =
        {Renderer2d.create-offscreen 
            (bounds.width + 2 * visual.margin + 2* visual.border-width), 
            (bounds.height+ 2 * visual.margin + 2* visual.border-width) ,  
            ||the resolution makes a difference in the jpg-file
            {max 300dpi, (1/(gc.pixel-size))}
        }
...

Только в народ эта штука не пошла.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Универсальный синтаксис для языков программирования
От: fmiracle  
Дата: 15.10.08 16:17
Оценка:
Здравствуйте, Chrome, Вы писали:

C>Хотелось бы понять, почему конкретный синтаксис настолько более компактен по сравнению с общим и какие успехи достигнуты в данном направлении мыслящим сообществом.


Потому что он конкретный, а не общий.

Ты предлагаешь всегда использовать разводной ключ вместо комплекта "обычных" гаечных ключей. Но если тебе почти всегда нужно крутить гайки 10 и 13 то удобнее использовать один единственный ключ из комплекта, вместо этой здоровой и неудобной дуры, а при особых случаях заглядывать в комплект.

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

А самое главное — что непонятно зачем это нужно.

Зачем нужен XML — понятно. Он описывает данные. Универсальный формат записи структур данных — это хорошо. Потому что новые структуры данных возникают постоянно при решении текущих рабочих задач. Для каждой из них придумывать или изучать новый синтаксис — жутко неудобно. Излишние потери времени и соответственно денег. А как часто приходится по работе менять язык, на котором пишешь? В большинстве случаев хватает одного-двух ключей. И молотка.
Если же вдруг появилась какая-то потребность в новом, не использовавшемся ранее языке — то скорее всего изучение его синтаксиса будет ну самой наименьшей из всех возникших при этом проблем. Так зачем оно надо?

Обобщенное средство всегда неудобнее конкретного, созданного специально под данную задачу.
Re: Универсальный синтаксис для языков программирования
От: Mr.Cat  
Дата: 15.10.08 16:24
Оценка:
Здравствуйте, Chrome, Вы писали:
C>Возможно ли создать универсальный синтаксис, эффективный для человека и пригодный для описания произвольной семантики современных языков программирования.

А зачем?
Re: Универсальный синтаксис для языков программирования
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.10.08 16:35
Оценка: 12 (1) +3 :))) :))) :))) :))
Здравствуйте, Chrome, Вы писали:

C>Вопрос такой – возможно ли отделить синтаксис языков программирования от семантики.


- Отрок! Ответь мне на вопрос! Может ли душа отделиться от тела и жить вне него?
— Может, отче.
— Обоснуй!
— Иду я давиче мимом вашей кельи и слышу — "А теперь душа моя одевайся и у...вай...". Обосновал, отче?
— Обосновал, отрок. Но припохабно...

Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Универсальный синтаксис для языков программирования
От: Chrome  
Дата: 16.10.08 09:34
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>А зачем?

Попробую провести аналогию.
Был такой язык в школе — Бейсик
в нем на уровне грамматики были втроены забавыные конструкции, вроде
Print, Draw, Circle
Еще был паскаль, а в нем ReadLn, WriteLn, кажется.
Думаю, много еще таких языков было, где в грамматику были встроены библиотечные функции.
Не было в то время ясного понимания, что есть язык и есть библиотека.
И не следует мешать одно с другим. А следует отделять мух от котлет.
Думаю, что от монолитного понятия "ЯЗЫК ПРОГРАММИРОВАНИЯ" можно аналогичным образом отделить еще несколько составных частей. Эти части традиционно содержатся в понятии "ЯЗЫК ПРОГРАММИРОВАНИЯ", но, как мне кажется, не имеют к нему прямого отношения.
Кандидаты на эти части, подлежащие отделению
— Back end копилятора
— Runtime engine
— лексический анализатор
— и, как мне кажется, синтаксис языка

Достаточно очевидно, что первые три пункта не сильно меняются от языка к языку и могут развиваться независимо.
Что пойдет языкам на пользу. Не будет каждый автор языка тратить 90 процентов времени на изобретение велосипеда.
У меня есть мысль, что и синтаксис — не вполне часть языка.
Что синтаксис — это набор правил, по которым человеку удобно описывать в текстовом виде концепты предметной области.
эти концепты разные в разных языках, но это не значит, что не существует удобного синтаксиса для их описания.

Так что на вопрос "Зачем" я бы ответил — это попытка убрать из понятия "ЯЗЫК ПРОГРАММИРОВАНИЯ" все лишнее.
(Зы. Остаться там должно то, что между деревом разбора и Back end копилятора)
Re[2]: Универсальный синтаксис для языков программирования
От: Chrome  
Дата: 16.10.08 10:08
Оценка:
Здравствуйте, fmiracle, Вы писали:

F>Здравствуйте, Chrome, Вы писали:


C>>Хотелось бы понять, почему конкретный синтаксис настолько более компактен по сравнению с общим и какие успехи достигнуты в данном направлении мыслящим сообществом.


F>Потому что он конкретный, а не общий.


F>Ты предлагаешь всегда использовать разводной ключ вместо комплекта "обычных" гаечных ключей. Но если тебе почти всегда нужно крутить гайки 10 и 13 то удобнее использовать один единственный ключ из комплекта, вместо этой здоровой и неудобной дуры, а при особых случаях заглядывать в комплект.


К сожалению, в области программирования вашу аналогию следует дополнить таким пассажем:
к каждому из "обычных" ключей прилагается инструкция по применению — 500 страниц. И если вы ее не прочитали, вы с высокой вероятнотью будете закручивать гайки против резьбы.
Думаю, с таким уточнением вы не будете скептически настроены по отношению к изобретению разводного ключа.

F>Как говорится нельзя запихнуть незапихуемое. Если попробовать сделать синтаксис, который одинаково хорошо подходит для всего, то скорее всего получится синтаксис, который для всего подходит одинаково плохо.


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

F>А самое главное — что непонятно зачем это нужно.


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

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

F>Зачем нужен XML — понятно. Он описывает данные. Универсальный формат записи структур данных — это хорошо. Потому что новые структуры данных возникают постоянно при решении текущих рабочих задач. Для каждой из них придумывать или изучать новый синтаксис — жутко неудобно. Излишние потери времени и соответственно денег. А как часто приходится по работе менять язык, на котором пишешь? В большинстве случаев хватает одного-двух ключей. И молотка.


Обычно не хватает, но выбора нет.

F>Если же вдруг появилась какая-то потребность в новом, не использовавшемся ранее языке — то скорее всего изучение его синтаксиса будет ну самой наименьшей из всех возникших при этом проблем. Так зачем оно надо?


F>Обобщенное средство всегда неудобнее конкретного, созданного специально под данную задачу.


это не так. Обратите внимание на корень слова "Обобщенное" — под него подпадает ситуация, кода люди решали задачу частным образом, а потом некто обобщил эти попытки и решил ее в общем случае. И не факт, что это решение хуже.
Вот если бы вы сказали СПЕЦИАЛИЗИРОВАННОЕ средство, я может с вами и согласился бы.
Но в данном случае я пытаюсь понять, возможно ли именно ОБОБЩИТЬ понятие синтаксиса и вынести его из понятия "язык программирования".
Re[3]: Универсальный синтаксис для языков программирования
От: Mr.Cat  
Дата: 16.10.08 10:24
Оценка: 3 (1) +2 :))) :))
Здравствуйте, Chrome, Вы писали:
C>Синтаксис, который подходит для всего, но не очень хорошо, уже существует, например ЛИСП.
Теперь это ветка про лисп. Вот вам картинка для размышления.
Re: Универсальный синтаксис для языков программирования
От: Chrome  
Дата: 16.10.08 11:18
Оценка:
Одна утопия для иллюстрации концепции
Возьмем язык C#
Его синтаксис хорошо подходит для описания программ на языке C#
Но программистам этого недостаточно.
Им требовалось включать в тексты деревья программ на других языках
Наиболее частые примеры HTML и SQL
Для описания HTML приделали костыль в виде темплейтов ASPX
Для SQL немного расширили синтаксис, теперь при помощи синтаксиса C# 3.0 можно удовлетворительно описывать подмножество языка SQL, причем синтаксис этого описания немного проигрывает оригинальному синтаксису SQL
Согласитесь?
Пойдем немного дальше.
Попробуем применить расширенный синтаксис к старой проблеме HTML
Мы видим, что у нас появилась возможность описать структуру HTML страниц приемлемым образом
new HTML{ Head = {Title = "Page title"}, Body=new HtmlBody(..elements..)}
как то так. Уже довольно близко к оригиналу.
Давайте представим, что разработчики языка еще немного напряглись и стало возможным
описывать структуру HTML совсем близко к тексту. ASPX пойдут в топку.
Мы получим один синтаксис подходящий для трех языков.
При этом мы не обьединили грамматики трех языков.
Может случиться так, что улучшенный синтаксис позволит формировать
деревья программ не только для простейших языков типа SQL, но и для самого C#
и описание родной конструкции типа switch в его нотации будет не менее изящьно, чем встроенное.
тогда можно будет провести ревизию грамматики C# 10.0 и выкинуть из него излишние конструкции.
ну и получим что то вроде синтаксиса отделенного от семантики.
Re[3]: Универсальный синтаксис для языков программирования
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.10.08 14:21
Оценка: :)
Здравствуйте, Chrome, Вы писали:

C>К сожалению, в области программирования вашу аналогию следует дополнить таким пассажем:


Следует не дополнять аналогии, а использовать их исключительно для иллюстрации высказанной мысли. А то у тебя аналогия есть, а мысли нету.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[3]: Универсальный синтаксис для языков программирования
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.10.08 14:21
Оценка: -1
Здравствуйте, Chrome, Вы писали:

C>Думаю, что от монолитного понятия "ЯЗЫК ПРОГРАММИРОВАНИЯ" можно аналогичным образом отделить еще несколько составных частей.


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

C>Что пойдет языкам на пользу. Не будет каждый автор языка тратить 90 процентов времени на изобретение велосипеда.


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

C>У меня есть мысль, что и синтаксис — не вполне часть языка.


Мысль это конечно здорово, но без весомых аргументов ценность у нее невелика. А вот с аргументами как то у тебя не очень.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re: Универсальный синтаксис для языков программирования
От: LaptevVV Россия  
Дата: 16.10.08 14:40
Оценка:
Здравствуйте, Chrome, Вы писали:

C>Вопрос такой – возможно ли отделить синтаксис языков программирования от семантики.

C>Возможно ли создать универсальный синтаксис, эффективный для человека и пригодный для описания произвольной семантики современных языков программирования.

C>Хотелось бы понять, почему конкретный синтаксис настолько более компактен по сравнению с общим и какие успехи достигнуты в данном направлении мыслящим сообществом.

Работы по семантике языков программирования ведутся давно.

1960-е – Х. Барендрегт (H. Barendregt) описал семантику ламбда-исчисления
1969 – Д. Скотт (Dana S. Scott) предложил использовать домены (особый вид множеств) для формализации
денотационной семантики как функции вычисления значения синтаксически корректных конструкций языка
1979 – М. Гордон (Michael J.C. Gordon) исследовал денотационную семантику языков программирования
1964 – П. Лендин (Peter J. Landin) разработал семантику модели языка программирования в форме абстрактной
машины на состояниях
1969 – Ч. Хоар (Charles A.R. Hoare) создал аксиоматический метод, моделирующий операторы языка программирования
1960-е – Р. Флойд (Robert W. Floyd) создал метод индуктивных утверждений для формализации семантики
протекания информации в программе (графическая иллюстрация — блок-схемы)

В 1980 году у нас был переведен прекрасный сборник статей, который так и называется "Семантика языков программирования".
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Универсальный синтаксис для языков программирования
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.10.08 19:25
Оценка: +1
Здравствуйте, Chrome, Вы писали:

C>Для описания HTML приделали костыль в виде темплейтов ASPX


Это не костыль, это называется DSL. Там не HTML внутри C#, а наоборот, C# внутри HTML.

C>Для SQL немного расширили синтаксис, теперь при помощи синтаксиса C# 3.0 можно удовлетворительно описывать подмножество языка SQL, причем синтаксис этого описания немного проигрывает оригинальному синтаксису SQL


Во-первых Query comprehension это не SQL, он даже по модели данных не SQL. С SQL его роднят только названия некоторых ключевых слов и функциональная природа. Во-вторых, если уж утверждаешь, что он проигрывает в синтаксисе, хотелось бы услышать какое то обоснование.

C>Согласитесь?


Нет.

C>Давайте представим, что разработчики языка еще немного напряглись и стало возможным

C>описывать структуру HTML совсем близко к тексту. ASPX пойдут в топку.

Неа, не пойдут. Хотя бы потому что пространства HTML и C# кода внутри ASPX не идентичны, и связаны довольно таки нетривиальными преобразованиями. И проблема не в синтаксисе, а в семантике.

C>Может случиться так, что улучшенный синтаксис позволит формировать

C>деревья программ не только для простейших языков типа SQL, но и для самого C#

Та же самая ошибка. Основная задача LINQ это не синтаксис, похожий на SQL, а интеграция запросов в систему типов языка. И даже query comprehension созданы не только и не столько для имитации синтаксиса SQL, сколько для устранения избыточного синтаксического мусора (дублирующихся объявлений параметров лямбд в основном) по сравнению с функциональной формой. И решить эту задачу универсальным способом, не затрагивая семантики, невозможно. И именно поэтому, коль уж хочется кучи собственных DSL в рамках языка универсального, не синтаксис униварсальный придумывают, а создают средства метапрограммирования (читай расширения семантики), как например в случае макросов Немерле.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re: Универсальный синтаксис для языков программирования
От: thesz Россия http://thesz.livejournal.com
Дата: 16.10.08 19:53
Оценка:
C>Вопрос такой – возможно ли отделить синтаксис языков программирования от семантики.

Нет.

C>Возможно ли создать универсальный синтаксис, эффективный для человека и пригодный для описания произвольной семантики современных языков программирования.


Нет.

C>Под описанием семантики я подразумеваю формирование(при помощи универсального синтаксиса)дерева — эквивалентного дереву разбора, которое формирует парсер обычного языка.


Это какая-то непонятная предложения.

Где в нем семантика (смысл конструкций) языка-то?

C>Эффективный для человека – означает, что эквивалентное описание должно быть не намного длиннее оригинального.


SK комбинаторы и лямбда-исчисление приводимы друг к другу. Однако, перевод в SK-комбинаторы приводит к выражению размером, пропорциональным экспоненте от размера исходного лямбда-выражения.

Это как пример теоретической невозможности чего-то сделать по краткому переводу.

C>Сегодня синтаксис и семантика языка связаны – каждый язык имеет свою грамматику для описания набора концептов, которыми язык оперирует – классов, функций, переменных и т д

C>Несколько языков имеют примерно общую семантику, но различный синтаксис, как в примере Visual basic .Net and C#
C>Более того, существуют предложения создавать грамматику на каждый новый набор понятий (DSL)

C>Напрашивается аналогия с XML

C>До него каждый изобратал свой формат для каждого вида текстовых данных, после – резко перестали.

http://www.sics.se/~joe/ml9/doc.html как опровержение. Конфигурационные файлы на Tcl/Lua/Python никто не перестал делать.

C>Начасть можно с рассмотрения лексических примитивов:


И вот это я тоже не очень понял. Зачем на лексику-то смотреть, если интересна связь синтаксис+семантика?

C>Потребность в синтаксисе не связанном с семантикой зачастую возникает в рамках программирования на любом языке.

C>Когда в программу на C# или C++ нужно вставить какое нибудь дерево, типа XML, HTML, SQL и т д — тут начинается нецелевое использование конструкций языка, таких как: темплейты, выражения, дерево классов. Функциональные языки приспосабливают свои функции.

Почему нецелевое-то? Очень даже целевое, все же, это языки общего назначения.

C>Хотелось бы понять, почему конкретный синтаксис настолько более компактен по сравнению с общим и какие успехи достигнуты в данном направлении мыслящим сообществом.


Я уже высказался — кое-что теоретически невозможно.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re: Универсальный синтаксис для языков программирования
От: . Великобритания  
Дата: 16.10.08 22:06
Оценка:
Здравствуйте, Chrome, Вы писали:

C>Вопрос такой – возможно ли отделить синтаксис языков программирования от семантики.

Подумай, чем бы ты мог заменить язык регулярных выражений, скажем?
Но хотя да, нередко перебарщивают с изобретением оригинальных синтаксисов для красоты.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: Универсальный синтаксис для языков программирования
От: Cyberax Марс  
Дата: 16.10.08 22:25
Оценка: :)
Здравствуйте, ., Вы писали:

C>>Вопрос такой – возможно ли отделить синтаксис языков программирования от семантики.

.>Подумай, чем бы ты мог заменить язык регулярных выражений, скажем?
XMLем:
s/hello.*/world/g;

<regex>
<pattern>
<textString>hello</textString>
<zeroOrMore><wildcard type="any"/></zeroOrMore>
</pattern>
<replaceWith type="global">
<textString>world</textString>
<replaceWith>
</regex>

Sapienti sat!
Re[3]: Универсальный синтаксис для языков программирования
От: Mr.Cat  
Дата: 16.10.08 22:32
Оценка: :)
Здравствуйте, Cyberax, Вы писали:
C>XMLем:
Зачем же Вы так на ночь глядя? Теперь сниться же будет.
Re[4]: Универсальный синтаксис для языков программирования
От: Cyberax Марс  
Дата: 16.10.08 22:35
Оценка: :))
Здравствуйте, Mr.Cat, Вы писали:

C>>XMLем:

MC>Зачем же Вы так на ночь глядя? Теперь сниться же будет.
Испугался! А если я сейчас ещё напишу библиотеку, которая будет переводить регэксы в такую форму?
Sapienti sat!
Re[5]: Универсальный синтаксис для языков программирования
От: Mr.Cat  
Дата: 16.10.08 22:48
Оценка: -2
Здравствуйте, Cyberax, Вы писали:
C>Испугался! А если я сейчас ещё напишу библиотеку, которая будет переводить регэксы в такую форму?

Мряк. Зато, млин, универсальный синтаксис. Осталось разработать xml-схемы для sql и C++.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.