Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > скриптовый язык. спиок переменных |
Автор: ZC1989 12.12.2012, 08:02 | ||
Всем Доброго времени суток) пытаюсь написать примитивный скриптовый язык. начал из далека, и первым решил сделать стек где будут храниться переменные используемые в скрипте. По сути стек у меня это связанный список. вот так выглядит сам элемент переменной
в общем ничего такого уж сложного нету, и это работает, но мне очень не нравится как получилось сделать хранение оригинального типа данных. массив для хранения значения битовый и что бы засунуть числовое значение а потом его получить, хочется то же сделать шаблонную функцию, которая будет в зависимости от типа хранимой переменной возвращать разные типы а не просто массив бит... делать весь класс шаблоном как то не хочется, потому что тогда получается что весь список будет принадлежать какому то конкретному классу. есть мысли как это можно немного переиграть? |
Автор: GremlinProg 12.12.2012, 08:09 | ||
|
Автор: borisbn 12.12.2012, 09:23 |
sizefo( b ) равен размеру указателя, а не выделенной памяти |
Автор: ZC1989 12.12.2012, 09:33 | ||
borisbn, по поводу буфера я не думал пока, как его лучше хранить, это пробный вариант... но и кстати, в случае char и bool он выделяет 1 байт, а когда передаю int - 4... суть не в этом, можно что нибудь получше придумать с запоминанием типа переменной? Добавлено через 12 минут и 52 секунды у меня была мысль сделать класс шаблоном но есть касяк:
точно такое же возникает при объявлении ссылки на первый элемент, которая при отсутствии элементов просто нулевая... а получается что нужно заранее указать ее тип |
Автор: xvr 12.12.2012, 13:30 |
Язык С++ - это язык со статической типизацией (даже с учетом шаблонов - они раскрываются в статические типы compile-time). Вы же пытаетесь сделать интерпретатор с run-time динамической типизацией (насколько я понял). Т.е. никакие конструкции С++ вам в этом не помогут ![]() ![]() |
Автор: ZC1989 12.12.2012, 13:55 |
xvr, ну это слишком гибко, круто конечно, но я даже не думал делать так. мысль то была что в скриптовом языке будут указываться типы переменных, но сам так называемый "стек" хотел сделать более гибким. можно было бы сделать шаблонный класс, но тогда пришлось бы для каждого типа данных делать свой список. а я как раз хотел что бы этого делать не приходилось... и список был общий.... даже, бонально, на поиске имени переменной было бы проще. нежели перебирать несколько списков. хотя, с другой стороны ты навел на мысль сделать сложнее) но проще использовать) погуглю, попробую, отпишусь) |
Автор: borisbn 12.12.2012, 14:05 |
ZC1989, посмотри http://www.boost.org/doc/libs/1_52_0/doc/html/any.html |
Автор: ZC1989 12.12.2012, 14:24 |
borisbn, давно еще читал про эту библиотеку, но совершенно забыл! уже читаю) спасибо) |
Автор: xvr 12.12.2012, 16:31 | ||
Вот этого как раз делать не надо. Одна и та же переменная в динамическом скриптовом языке может в разное время хранить данные разных типов. Никакой шаблон этого делать не умеет. Нужен всего один С++ тип для любого значения (и не только для переменных) - динамически типизированное значение. Например -
|
Автор: artsb 12.12.2012, 21:41 |
ZC1989, если вы знакомы с C++Builder или Delphi, то можете покопаться в классе TVariant. Вроде бы, это как раз то, про что говорит xvr. |
Автор: ZC1989 13.12.2012, 00:18 |
artsb, с++ булдер и делфи не особо знаю, так, абстрактно... поэтому их тонкостей я не знаю... в основном пользуюсь Си наследованными языками... |
Автор: xvr 13.12.2012, 11:49 |
Ну вообще то TVariant это не 'их тонкости'. Это всего лишь обвертка над VARIANT, который в свою очередь пришел из мира ActiveX, а он [ActiveX] и был придуман для поддержки реализации скриптовых языков. Почитайте в MSDN (хотя в вашем случае это наверное будет чересчур) |
Автор: Result 13.12.2012, 23:29 |
Еще можно посмотреть как в Пайтоне представлены переменные И объекты, и возможно позаимствовать подход в своих наработках. |
Автор: volatile 14.12.2012, 17:44 |
borisbn, исходники доступны с http://www.python.org/ |
Автор: Result 15.12.2012, 12:28 | ||||
У Марка Лутца, в 4-ом издании, хорошее описание с картинками, с особыми объяснениями для Сишников. |
Автор: fish9370 16.12.2012, 18:26 |
а чем твой скриптовый язык будет лучше (оличаться) от других, perl, php, lua и подобных? |