PEJI.IR

صدا زدن تابع قبل از تعریف

۱۴۰۱ مرداد ۱۳, پنجشنبه ساعت ۷:۳۶

این قسمت رو هم تکمیل کردم.

چند تا جا چند تا باگ دارم که اونها رو باید برطرف کنم تا پروژه به عنوان dolang تکمیل بشه.

برای js یک پروژه دیگه تعریف میکنم و به صورت مجزا اون رو توسعه میدم

main() {
	test();
}

test() {
	print("here");
}
class test {
	a() {
		this.b();
	}

	b() {
		print("in b\\n");
	}
}

main() {
	var a = new test;
	a.a();
}

حدف تابع main و اجرای کدهای js

۱۴۰۱ مرداد ۱۳, پنجشنبه ساعت ۵:۰۴

در ادامه تصمیم دارم که تابع main رو حذف کنم و syntax مربوط به js رو به طور کامل اجرا کنم ...

اضافه شدن import

۱۴۰۱ مرداد ۱۲, چهارشنبه ساعت ۱۹:۵۰

import از یک فایل دیگه رو انجام دادم

با import کلاس هایی که در فایلی که ازش import شده قابل استفاده هست

import testClass;
import test1Class;

test() {
	print("in test function\n");
}

main() {
	var a = new test;
	a.a();

	var a = new test1;
	a.a();

	test();


	var n = new n();
	n.a();
}

اضافه شدن construct و extends

۱۴۰۱ مرداد ۱۲, چهارشنبه ساعت ۱۶:۳۵

خب پیاده سازی این قسمت هم تمام شد و مثال های اون رو هم قرار دادم

به سراغ پیاده سازی let میرم و بعد از اون هم پیاده سازی مابقی operator ها

بعد از این پروژه کاملا قابل استفاده هست و با انجام کلی تست میشه از dolang استفاده کرد

class test {
	construct( a ) {
		print("in construct " + a +"\n" );
		print("here\n")
	}

	a() {
		print("in a\n");
		return this;
	}

	b() {
		print("in b\n");
	}
}


main() {
	var a = new test("test");
	a.a().b();


	print( a );
}


class a {
	a() {
		print("in a\n");
	}
}

class b extends a {
	b() {

	}
}


main() {
	var b = new b;
	b.a();

	print( b );
}

تغییر در ساختار کلی آبجکت ها و کلاس ها

۱۴۰۱ مرداد ۱۲, چهارشنبه ساعت ۱۲:۴۹

ساختار کلی آبجکت ها و کلاس ها رو تغییر دادم.

this رو به همه ی توابع اضافه کردم و چندین مثال از function callback و کلاس اضافه کردم.

Callback در Object :

main() {

	var o = { 'a' : { 'b' : func(a) { print(a); } } };
	print(o);

	o.a.b("in function in object");
}

Callback as Return :

test() {
	return func( a ) {
		print(a);
	};
}


main() {
	var l = test();	
	l("test\n");
}

فراخوانی کلاس ها الان با دقت بالاتری انجام میشه و بعید میدونم دیگه خطایی جایی داشته باشم ...

class as param

۱۴۰۱ مرداد ۱۲, چهارشنبه ساعت ۶:۳۷

اضافه شدن Class As Param و تغییراتی در صدا زدن متد کلاس ها و نگه داشتن نام کلاس و متدهای کلاس ها داخل object مربوط به کلاس ...

class test {
	a() {
		print("in a\n");
	}		

	b() {
		print("in b\n");
	}	
}


test(d) {
	d.a();
}

main() {
	
	var a = new test;
	a.b = "Test";
	print("Test");

	print( a );

	test( a );

	a.b();
}

خورده کاری های مربوط به operator ها

۱۴۰۱ مرداد ۱۰, دوشنبه ساعت ۱۷:۴۹

برای تکمیل پروژه باید && و || و یکسری از توابعی که در فایل x86 خالی هستن رو تکمیل کنم تا پروژه تا اینجا برای cpu x86 قابل استفاده باشه

بعدش به سراغ cpu x64 میرم

ایجاد کردن کلاس داخل تابع رو هم انجام دادم. یک تغییر برای let و var هم باید انجام بدم

قسمت هایی که مربوط به کلاس هستن رو هم باید تکمیل کنم

این پروژه خیلی بهتر از اون چیزی که فکر میکردم شد

ایجاد تابع در تابع

۱۴۰۱ مرداد ۱۰, دوشنبه ساعت ۷:۲۱

خب ایجاد کردن تابع در تابع رو هم اضافه کردم. فقط برای تفکیک بین صدا زدن و ایجاد کردن تابع از کلمه ی کلیدی func داخل توابع استفاده کردم ... اگر داخل تابع main امکان اضافه کردن کلاس رو هم اضافه کنم و کلمه ی کلیدی var رو برای متغییر های global و کلمه ی کلیدی let رو برای متغییر لوکال در نظر بگیرم dolang تا اینجای کار شباهت خیلی زیادی به زبان js پیدا میکنه.

main() {
	func test( a ) {
		print( a );
	}

	test("str\n");	
}

کامل شدن قسمت callback و مثال های اون

۱۴۰۱ مرداد ۹, یکشنبه ساعت ۱۸:۳۷

خب قسمت مربوط به callback به طور کامل پیاده سازی شد. میرم سراغ ادامه توسعه مربوط به کلاس ها و قسمت مربوط به construct و destruct و extends و ...

each( arr, cb ) {
	for( var k,v in arr ) {
		cb( k, v );
	}
}


main() {
	
	var arr = [0 : ['name' : 'second'], 1 : ['name' : 'test1'] ];

	each(arr, func( k, v) {
		print( k );
		print( v );
	});
}

اجرای اولین مثال callback

۱۴۰۱ مرداد ۹, یکشنبه ساعت ۱۸:۲۷

خب تونستم یک تابع رو داخل یک متغییر نگه دارم و اون رو صدا بزنم.

میرم سراغ اجرا کردن مثال های مختلف از callback. مثلا نگه داشتن یک تابع داخل یک object یا به عنوان ورودی یک تابع ...

main() {

	var l = func( a ) {
		print("in callback\\n");
		print( a );
	}

	l("test");

}