PEJI.IR

بررسی stack برای توابع تو در تو

۱۴۰۱ شهریور ۱۹, شنبه ساعت ۹:۲۸

باید stack رو برای توابع تو در تو بررسی کنم ودلیل باگی که در آرایه به وجود میاد رو بفهمم

برطرف کردن باگ ایجاد تابع برای prototype

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

یک باگ خیلی عجیب و غریب داخل ایجاد تابع جدید برای کلاس آرایه دارم که باید اون رو برطرف کنم. خیلی داره اذیت میکنه و زمان زیادی داره میگیره ...

تفکیک array با object

۱۴۰۱ شهریور ۱۳, یکشنبه ساعت ۱۳:۱۳

خب دیگه آرایه ها و آبجکت ها از یک نوع نیستن. مثلا کلاس ها الان نوع کلاس رو دارن و یا وقتی اونها رو new میکنیم هم نوع آبجکت رو دارن و آرایه ها فقط با [] قابل تعریف هستن. یا اینکه یک آرایه رو new کنیم ...

new Array

اضافه شدن مثال regex و اکستنشن شدن string و regex

۱۴۰۱ شهریور ۱۳, یکشنبه ساعت ۹:۲۲

خب مثال regex رو در زیر میگذارم


main() {

	let r = /^(\w+)\s*(\w+)\s*$/g.exec("this is test");

	print( r );


}

فعلا خروجی تابع exec مقادیر match شده به صورت آرایه است.

بعدا match , replace, match all و ... رو هم اضافه میکنم به string class

دیگه نیازی به import کتابخونه برای regex نیست و مستقیم در بکند کار تعریف شده.

قبلا مثال های string رو قرار دادم. الان توسعه زبان خیلی راحت شده و میتونم اون رو برای array و object هم به صورت extension توسعه بدم.

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

اکستنشن کردن string, array, object, regex

۱۴۰۱ شهریور ۱۲, شنبه ساعت ۸:۲۸

برای توسعه بهتر کلاس های پایه ای رو باید به صورت اکستنشن در بیارم.

regex رو هم با pcre2 نوشتم، فقط باید به صورت extension اون رو پیاده سازی کنم.

ternary

۱۴۰۱ شهریور ۱۰, پنجشنبه ساعت ۱۶:۱۲

خب ternary رو هم اوکی کردم. البته یکم دیگه کار داره که اون رو هم به زودی تکمیل میکنم. shift left و shift right رو هم اوکی کردم.

چیزی تا بستن پروژه برای x86 باقی نمونده.

main() {
	let a;
	a = 20;
	let b;
	b = a < 30 ? 5 : 3;
	print(b);
}

اضافه شدن regex

۱۴۰۱ شهریور ۹, چهارشنبه ساعت ۸:۴۹

syntax مربوط به regex رو شبیه به js اضافه کردم و کلاسش رو هم اینطرف تعریف کردم و در c اون رو صدا زدم. اگر کلاسی اینطرف تعریف بشه در c هم میتونم اون رو صدا بزنم ...

import lib.regexp

main() {

	print( /\w+\s/g );
	
}

base64, encryption, big num, float, double, hex, regex

۱۴۰۱ شهریور ۸, سه‌شنبه ساعت ۱۷:۱۳

کارهای پیش رو که باید انجام بدم

base64, encryption, big num, float, double, hex, regex

با انجام این کارها زبان تکمیل میشه ...

json parser

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

خب تا اینجای کار تونستم یک پردازش خیلی ساده انجام بدم :

class jsonParser {
	construct( a ) {
		this.str = a;
		this.i = 0;
		this.res = this.parse();

	}

	next() {
		this.i++;
		while( this.tok() == ' ' ) {
			this.i++;
		}	
	}

	tok() {
		return this.str[ this.i ];
	}

	parseObject() {

		this.next();
		let ret = [];
		while( this.tok() != '}' ) {
			let k = this.parse();

			this.next();

			let v = this.parse();

			ret[k] = v;

			if( this.tok() == ',' ) {
				this.next();
			}

		}
		this.next();

		return ret;
	}

	parseStr() {

		let a = "";

		this.next();	
		while( this.tok() != '"' ) {
			a = a + this.tok();
			this.next();
		}
		this.next();

		return a;
	}

	parseArray() {
		this.next();
		let ret = [];
		let i = 0;
		while( this.tok() != ']' ) {
			let k = i++;
			
			let v = this.parse();

			ret[k] = v;

			if( this.tok() == ',' ) {
				this.next();
			}
		}
		this.next();

		return ret;
	}

	init() {

	}

	parse() {
		let a = this.tok();
		if( a == "{" ) {
			return this.parseObject();
		} else if( a == '"' ) {
			return this.parseStr();
		} else if( a == '[' ) {
			return this.parseArray();
		}
	
	}
}

main() {

	let a = new jsonParser('{ "test" : "123" , "test1" : "321", "array" : [ "a", "b", "c", "d" ], "inner" : {"aa" : "11", "bb" : "22", "cc" : "33"} }');
	print( a.res );
	print( a.res.test );

}

ادامه کار هم بعد از بازگشت از کاشان ...

نوشتن یک json parser با dolang برای دیباگ زبان

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

قرار بود که یک http server بنویسم و زبان رو دیباگ کنم. به این نتیجه رسیدم که یک json parser بنویسم و زبان رو دیباگ کنم. تا الان خیلی از مشکلاتش رو برطرف کردم و با پایان json parser خیلی از قسمت ها دیباگ میشه.

بعد از اون هم به سراغ نوشتن http server میرم.

بعد از اون به سراغ اعداد float میرم.

پیاده سازی کلاس در زبان c رو هم انجام دادم که روال اون رو راحتتر میکنم.