snake5 icon

new lang: func resolution, storage classes

snake5 | PRO | 01/28/15 06:53:07 PM UTC | 0 ⭐ | 910 👁️ | Never ⏰ | []
Go |

2.48 KB

|

None

|

0 👍

/

0 👎

//// NewLang CODE ////
class twoint
{
    var first : int32;
    var second : uint32;
}
 
extern func dump( v : int32 );
extern func dump( v : float64 );
 
static var gval : int32 = 1;
 
func _test( a : int32 ) : int32
{
    var v : int8 = -5;
    while( v < 0 )
    {
        dump( v + a );
        v += 1;
        break 1;
    }
    return 0s8 + a + v;
}
 
func main()
{
    var ii : twoint;
    ii.first = 5;
    dump( ii.first );
    gval += 123;
    gval += 456;
    dump( gval );
    dump( sizeof( uint16 ) );
    dump( sizeof( 0s8 ) );
    var dbl : float64;
    dump( sizeof( dbl ) );
    
    dump( _test( 1 ) );
    dump( 1.2 );
}
 
//// C CODE ////
#include <inttypes.h>
 
typedef uint8_t Ibool;
typedef int8_t Iint8;
typedef uint8_t Iuint8;
typedef int16_t Iint16;
typedef uint16_t Iuint16;
typedef int32_t Iint32;
typedef uint32_t Iuint32;
typedef int64_t Iint64;
typedef uint64_t Iuint64;
typedef float Ifloat32;
typedef double Ifloat64;
 
typedef struct Itwoint
{
    Iint32 Ifirst;
    Iuint32 Isecond;
}
Itwoint;
 
Iint32 Igval = 1;
 
extern void Idump_IPint32( Iint32 Iv );
extern void Idump_IPfloat64( Ifloat64 Iv );
Iint32 _Itest_IPint32( Iint32 Ia );
void Imain();
 
Iint32 _Itest_IPint32( Iint32 Ia )
{
    Iint8 Iv;
    const Iuint8 I0 = 5;
    Iint32 I1 = -I0;
    Iv = I1;
lbl_0:;
    const Iuint8 I2 = 0;
    Ibool I3 = Iv < I2;
    if( !I3 ) goto lbl_1;
    Iint32 I4 = Iv + Ia;
    Idump_IPint32( I4 );
    const Iuint8 I5 = 1;
    Iv = Iv + I5;
    Iv = Iv;
    goto lbl_1;
    goto lbl_0;
lbl_1:;
    const Iint8 I6 = 0;
    Iint32 I7 = I6 + Ia;
    Iint32 I8 = I7 + Iv;
    return I8;
}
 
void Imain()
{
    Ifloat64 Idbl;
    Itwoint Iii;
    const Iuint32 I0 = 0;
    char* I1 = (char*) &Iii;
    char* I2 = I1 + I0;
    const Iuint8 I3 = 5;
    *(Iint32*) I2 = I3;
    const Iuint32 I4 = 0;
    char* I5 = (char*) &Iii;
    char* I6 = I5 + I4;
    Iint32 I7 = *I6;
    Idump_IPint32( I7 );
    const Iuint8 I8 = 123;
    Iint32 I9 = Igval;
    Iint32 I10 = I9 + I8;
    Igval = I10;
    const Iuint16 I11 = 456;
    Iint32 I12 = Igval;
    Iint32 I13 = I12 + I11;
    Igval = I13;
    Iint32 I14 = Igval;
    Idump_IPint32( I14 );
    const Iint32 I15 = 2;
    Idump_IPint32( I15 );
    const Iint8 I16 = 0;
    const Iint32 I17 = 1;
    Idump_IPint32( I17 );
    const Iint32 I18 = 8;
    Idump_IPint32( I18 );
    const Iuint8 I19 = 1;
    Iint32 I20 = _Itest_IPint32( I19 );
    Idump_IPint32( I20 );
    const Ifloat64 I21 = 1.2;
    Idump_IPfloat64( I21 );
}
 
int main()
{
    Imain();
    return 0;
}
 
//// OUTPUT ////
int32 (5)
int32 (580)
int32 (2)
int32 (1)
int32 (8)
int32 (-4)
int32 (-3)
float64 (1.2)

Comments