По умолчанию все числа - 32битные целые, как в текущей версии pixilang.
По некоему запросу программиста пикси переключается в режим чисел с плавающей точкой (32bit float).
Далее возникают такие вопросы.
1. Как описывать число с плавающей точкой (float)? Варианты:
* число с плавающей точкой должно обязательно иметь в своем описании точку :) типа 0.1, 0.2, 4.223.
* число с плавающей точкой определяется символом F на конце: 0.1F, 2.4F, 3F.
2. Как переключаться в режим float. Варианты:
* если в выражении есть хотя бы одна явная float составляющая. Пример: a = 0.3 * i2f( b )
//здесь i2f() - это сокращение от int2float() - преобразование из целого числа в float.
* вводим отдельные мат.операции для float-ов, например, добавляя к обычным операциям символ ^. Пример: a = 0.3 ^* i2f( b )
* воодим символы начала и конца участка с float-операциями. Пример: FLOAT { a = 0.3 * i2f( b ) }
Концепция Pixilang 3. Математика
- NightRadio
- Site Admin
- Posts: 3955
- Joined: Fri Jan 23, 2004 12:28 am
- Location: Ekaterinburg. Russia
- Contact:
Re: Концепция Pixilang 3. Математика
Голосую за варианты 1.a и 2.a.
Т.е.
a = 2 // целое
b = 8.0 // float
с = a + b // c - это float, т.к. b является числом с плавающей запятой
d = 0.0 + a // d - float, из-за присутствия 0.0 в выражении
Ну это если парсер потянет...
Т.е.
Я бы даже отказаля от специальной функции i2f() в пользу автоматических неявных преобразований целых в float:1. Как описывать число с плавающей точкой (float)? Варианты:
* число с плавающей точкой должно обязательно иметь в своем описании точку типа 0.1, 0.2, 4.223.
2. Как переключаться в режим float. Варианты:
* если в выражении есть хотя бы одна явная float составляющая. Пример: a = 0.3 * i2f( b )
//здесь i2f() - это сокращение от int2float() - преобразование из целого числа в float.
a = 2 // целое
b = 8.0 // float
с = a + b // c - это float, т.к. b является числом с плавающей запятой
d = 0.0 + a // d - float, из-за присутствия 0.0 в выражении
Ну это если парсер потянет...
Re: Концепция Pixilang 3. Математика
Согласен с Zuf-ом, думаю, что это наиболее удобные варианты.
Re: Концепция Pixilang 3. Математика
Согласен с Zufом и Intre!
- NightRadio
- Site Admin
- Posts: 3955
- Joined: Fri Jan 23, 2004 12:28 am
- Location: Ekaterinburg. Russia
- Contact:
Re: Концепция Pixilang 3. Математика
Я тоже согласен :)
Только от i2f отказаться не получится. Предложенный Zuf'ом пример логичен только для языков, где переменные хранят внутри себя тип значения (int,float,double,string и т.д.). Pixilang устроен более просто - переменные в нем, как регистры в ассемблере, просто хранят 32-битное число, а как его интерпретировать - это зависит от пользователя. И это одна из основных фишек Пикси :)
Можно еще заставить парсер следить за тем, где и какое значение записали в переменную, но с этим тоже вылазит вогон ненужных сложностей :)
Только от i2f отказаться не получится. Предложенный Zuf'ом пример логичен только для языков, где переменные хранят внутри себя тип значения (int,float,double,string и т.д.). Pixilang устроен более просто - переменные в нем, как регистры в ассемблере, просто хранят 32-битное число, а как его интерпретировать - это зависит от пользователя. И это одна из основных фишек Пикси :)
Можно еще заставить парсер следить за тем, где и какое значение записали в переменную, но с этим тоже вылазит вогон ненужных сложностей :)
Re: Концепция Pixilang 3. Математика
А разве недостаточно хранить информацию о типа в таблице символов на этапе компиляции?
- NightRadio
- Site Admin
- Posts: 3955
- Joined: Fri Jan 23, 2004 12:28 am
- Location: Ekaterinburg. Russia
- Contact:
Re: Концепция Pixilang 3. Математика
Не совсем. Пикси-компилятор не может точно сказать, какого типа данная переменная в данном месте кода, т.к. в любой момент какая-нибудь подпрограмма может в эту переменную записать значение противоположного типа.