2
0
Эх сурвалжийг харах

Fixed inf/nan consts in .i files. Fixes #350.

woollybah 7 жил өмнө
parent
commit
bf3653b2fa
2 өөрчлөгдсөн 16 нэмэгдсэн , 1 устгасан
  1. 8 0
      ctranslator.bmx
  2. 8 1
      iparser.bmx

+ 8 - 0
ctranslator.bmx

@@ -5034,6 +5034,14 @@ End Rem
 				Return "0"
 				Return "0"
 			Else
 			Else
 				If TDecimalType(expr.exprType) Then
 				If TDecimalType(expr.exprType) Then
+					If s.StartsWith("1.#INF0000") Then
+						s = "inf"
+					Else If s.StartsWith("-1.#INF0000") Then
+						s = "-inf"
+					Else If s.StartsWith("-1.#IND0000") Then
+						s = "nan"
+					End If
+
 					Return s + TransIfcType(expr.exprType)
 					Return s + TransIfcType(expr.exprType)
 				Else
 				Else
 					Return s
 					Return s

+ 8 - 1
iparser.bmx

@@ -602,9 +602,16 @@ Type TIParser
 				NextToke
 				NextToke
 			Case TOKE_IDENT
 			Case TOKE_IDENT
 				If _toke = "nan" Or _toke = "inf" Then
 				If _toke = "nan" Or _toke = "inf" Then
-					Local value:String = _toke
+					Local value:String
+					Select _toke
+						Case "inf"
+							value = "1.#INF0000"
+						Case "nan"
+							value = "-1.#IND0000"
+					End Select
 					NextToke
 					NextToke
 					If CParse("!") Then
 					If CParse("!") Then
+						value :+ "00000000"
 						expr=New TConstExpr.Create( New TDoubleType,value )
 						expr=New TConstExpr.Create( New TDoubleType,value )
 					Else
 					Else
 						CParse("#")
 						CParse("#")