بیتافرهی
پنج شنبه 16 خرداد 1387, 20:19 عصر
سلام
من دارم یه کامپایلر برای پاسکال درست می کتم.(البته فقط یکی از فازهای کامپایلر را)
به یه مشکلی برخوردم واونم اینکه وقتی یه برنامه به زبان پاسکالرا نوشتم ،برنامه ای که من می ن.یسم باید بتواند بلاک های آشیانه ای را تشخیص دهد یعنی بنویسد که فلان متغیر در برنامه ی پاسکال به بلاک چندم تعلق دارد؟
BEGIN
X:INTEGET;
.
.
.
.
BEGIN
Y:FLOAT;
.
.
.
END
.
.
.
.END.
مثلا وقتی کاربر چنین برنامه ای را نوشت بنوسد که X متعلق به بلاک اول و Y متعلق به بلاک دوم است.
البته سختی کار اینجاست که اگه مثلا در بلاک دوم یک متغیر X دیگر داشتیم ولی در این بلاک تعریف نشده بود،تشخیص دهد که به بلاک بالاتر تعلق دارد.
اگه کسی بتونه الگوریتم نوشتن این برنامه به زبان سی را به من کمک کنه ممنون میشم.
من دارم یه کامپایلر برای پاسکال درست می کتم.(البته فقط یکی از فازهای کامپایلر را)
به یه مشکلی برخوردم واونم اینکه وقتی یه برنامه به زبان پاسکالرا نوشتم ،برنامه ای که من می ن.یسم باید بتواند بلاک های آشیانه ای را تشخیص دهد یعنی بنویسد که فلان متغیر در برنامه ی پاسکال به بلاک چندم تعلق دارد؟
BEGIN
X:INTEGET;
.
.
.
.
BEGIN
Y:FLOAT;
.
.
.
END
.
.
.
.END.
مثلا وقتی کاربر چنین برنامه ای را نوشت بنوسد که X متعلق به بلاک اول و Y متعلق به بلاک دوم است.
البته سختی کار اینجاست که اگه مثلا در بلاک دوم یک متغیر X دیگر داشتیم ولی در این بلاک تعریف نشده بود،تشخیص دهد که به بلاک بالاتر تعلق دارد.
اگه کسی بتونه الگوریتم نوشتن این برنامه به زبان سی را به من کمک کنه ممنون میشم.