PDA

View Full Version : سوال: نوشتن کامپایلر



moonDark
چهارشنبه 14 تیر 1391, 20:35 عصر
سلام من یه سوال دارم که ممکنه تکراری و یا مسخره باشه ولی خیلی لازم دارم
من میخام یه کامپایلر بنویسم که فقط کد هایی رو که خودم بهش میدمو بخونه و اون کد ها رو به صورت قابل اجرا در بیاره که فقط با برنامه ای که نوشتم باز بشن
اگه میشه راهنماییم کنید به شدت لازم دارم

maktoom
چهارشنبه 14 تیر 1391, 21:42 عصر
سلام
یه سر به تالار open source بزنید. پروژه ای با مختصات تقریبی چیزی که می خواید مدتیه که در حال پی گیریه.

moonDark
چهارشنبه 14 تیر 1391, 22:39 عصر
نه تا اون حد شدید که بخام از اول همه رو بنویسم فقط میخام مثل یه مرورگر که فایل html رو باز میکنه و مشخصاتشو میخونه و اطلاعاتو نشون میده و یا کار خاصی میکنه باشه ولی یکم کوچیکتر

alimanam
چهارشنبه 14 تیر 1391, 23:09 عصر
با سلام


من میخام یه کامپایلر بنویسم

اگه منظورت از کامپایلر ! , کامپایل شدن کدهای دات نت بوسیله موتور خود فرم ورک هستش میتونی از کلاس CodeDom برای این منظور استفاده کنی . کار کردن باهاش تقریباً آسونه .


نه تا اون حد شدید که بخام از اول همه رو بنویسم فقط میخام مثل یه مرورگر که فایل html رو باز میکنه و مشخصاتشو میخونه و اطلاعاتو نشون میده

به این کار نمیگن کامپایل ! شما برای این منظور باید فایلی که خروجی برنامه خودتون هست رو در هنگامی که برای مثال روش دبل کلیک میشه رو در برنامه خودت Open یا لود کنی برای این کار نیازه که Extention فایل فایل خروجی برنامه شما در سیستم عامل مشخص بشه . برای اینکه گیج نشی به مطالب لینک زیر سری بزن , استراتژی کار تقریباً همونه .

http://www.codeproject.com/Articles/18594/File-Association-in-VB-NET

موفـــق باشید./

moonDark
پنج شنبه 15 تیر 1391, 11:51 صبح
با سلام



اگه منظورت از کامپایلر ! , کامپایل شدن کدهای دات نت بوسیله موتور خود فرم ورک هستش میتونی از کلاس CodeDom برای این منظور استفاده کنی . کار کردن باهاش تقریباً آسونه .



به این کار نمیگن کامپایل ! شما برای این منظور باید فایلی که خروجی برنامه خودتون هست رو در هنگامی که برای مثال روش دبل کلیک میشه رو در برنامه خودت Open یا لود کنی برای این کار نیازه که Extention فایل فایل خروجی برنامه شما در سیستم عامل مشخص بشه . برای اینکه گیج نشی به مطالب لینک زیر سری بزن , استراتژی کار تقریباً همونه .

http://www.codeproject.com/Articles/18594/File-Association-in-VB-NET

موفـــق باشید./

ممنون لینک خیلی کمک کرد حالا یه مشکل دیگه دارم
وقتی که فایل توسط برنامه من باز شد و متن داخل فایل رو نشون داد چه طوری پارامتر هاشو تشخیص بده که برنامه من بفهمه که اون فایل چی میخواد و اون کارو انجام بده

alimanam
پنج شنبه 15 تیر 1391, 12:21 عصر
با سلام و تبریک میلاد منجی عالم حضرت مهدی (ع) ارواحنا فداء


وقتی که فایل توسط برنامه من باز شد و متن داخل فایل رو نشون داد چه طوری پارامتر هاشو تشخیص بده که برنامه من بفهمه که اون فایل چی میخواد و اون کارو انجام بده

این دیگه برمیگرده به برنامه نویسی برنامه شما ! و ربطی به پارامتری که میفرمائین نداره . برای مثال ممکنه خروجی برنامه شما که قراره در یک فایل با پسوند aaa.* ذخیره بشه به صورت زیر باشه :

[Obj1]
134
231
120
30

خوب این اعداد ممکنه نام , موقعیت یک شیی و اندازه اش باشه !!! وقتی فایل مورد نظرتوسط کاربر دبل کلیک میشه در برنامه شما باید محتویات این فایل خوانده بشه و بستگی به برنامه شده داره که چطوری میخواد از این اطلاعات استفاده کنه . اگر توجه کرده باشین فایل های DXF اتوکد دقیقاً میاد همین کار رو میکنه یعنی آبجکتهای مربوط به اون ترسیم رو به صورت مجموعه ایی از اعداد که مشخصات هر آبجکت رو به صورت جداگانه دسته بندی هست میخونه و بعد با توجه به اون مشخصات هنگامی که کاربر اون فایل رو خوند ( باز کرد ) شروع به ترسیم خطوط , نوشته ها , وهرچیزی که هست میکنه .

این یک مثال ساده بود برای روشن تر شدن بیشتر مسئله ...

موفــــق باشید ./

moonDark
پنج شنبه 15 تیر 1391, 12:35 عصر
منم منظورم همینه ولی نمیدونم چه طوری این کارو بکنم مثلا میخام وقتی فایل باز شد از اولین خط به ترتیب شروع کنه به خوندن و مثلا وقتی به این کد رسید ()openFile_show یه دیالوگ رو نشون بده که تایتل اون دیالوگ توی پرانتز ()openFile_show باشه و برنامه بتونه اونو اجرا کنه
ببخشید واضح تر از نمیتونم توضیح بدم

alimanam
پنج شنبه 15 تیر 1391, 12:44 عصر
با سلامی 3 باره !


()openFile_show یه دیالوگ رو نشون بده که تایتل اون دیالوگ توی پرانتز ()openFile_show باشه و برنامه بتونه اونو اجرا کنه

عزیزم این دیگه میشه کامپایل کد ! و با چیزی که تا الان بالا منبر توضیح دادم از زمین تا آسمون فرق داره ! برای این چیزی که شما میگین یا باید خروجی برنامه شما یک فایل اجرایی مثل EXE یا Bat یا هر فایل اجرایی دیگه باشه ! یا اینکه یه فایل حاوی سورس باشه که بشه در Run Time اون رو به خورد کلاس CodeDom بدی که بتونه اجراش کنه .

موفــــق باشید./

moonDark
پنج شنبه 15 تیر 1391, 12:50 عصر
یعنی از کلاس codeDom باید استفاده کنم؟
100% جواب میده؟

alimanam
پنج شنبه 15 تیر 1391, 12:53 عصر
یعنی از کلاس codeDom باید استفاده کنم؟
100% جواب میده؟

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

موفـــق باشید./

kiarashk
پنج شنبه 15 تیر 1391, 13:44 عصر
با سلامی 3 باره !



عزیزم این دیگه میشه کامپایل کد ! و با چیزی که تا الان بالا منبر توضیح دادم از زمین تا آسمون فرق داره ! برای این چیزی که شما میگین یا باید خروجی برنامه شما یک فایل اجرایی مثل EXE یا Bat یا هر فایل اجرایی دیگه باشه ! یا اینکه یه فایل حاوی سورس باشه که بشه در Run Time اون رو به خورد کلاس CodeDom بدی که بتونه اجراش کنه .

موفــــق باشید./
ببخشيد وسط حرف مي ام ولي فكر كنم ايشون مي خوان مفسر بسازن نه كامپايلر

alimanam
پنج شنبه 15 تیر 1391, 14:01 عصر
با سلام


ببخشيد وسط حرف مي ام ولي فكر كنم ايشون مي خوان مفسر بسازن نه كامپايلر


برای این چیزی که شما میگین یا باید خروجی برنامه شما یک فایل اجرایی مثل EXE یا Bat یا هر فایل اجرایی دیگه باشه ! یا اینکه یه فایل حاوی سورس باشه که بشه در Run Time اون رو به خورد کلاس CodeDom بدی که بتونه اجراش کنه .

اگر به " یا باید " جمله بنده توجه کنین متوجه منظور بنده میشین .

شرح بیشتر :

اگر برنامه ایی خروجی فایل اجرایی بده بیرون به صورتی که یکجا فایل خروجی خوانده ( اجرا ) بشه به برنامه مادر یک کامپایلر میگن نه مفسر ... حالا ما قراره از Enigne خود فرم ورک برای این منظور استفاده کنیم . ولی اگه بخوایم صرفاً ( به قسمت دوم که گفتم " یا اینکه یه فایل حاوی سورس باشه که بشه در Run Time اون رو به خورد کلاس CodeDom بدی که بتونه اجراش کنه " ) توجه کنین به این میگن تفسیر کد چون در حقیقت ما اومدیم سورس رو از یک فایل غیر اجرایی خوندیم و خط به خط میخوایم اجراش کنیم .

موفــق باشید./

moonDark
پنج شنبه 15 تیر 1391, 14:36 عصر
ببخشید من نمیدونستم مفسر چیه ...
حالا میشه یه نمونه از همون codeDom رو بزارین؟

alimanam
پنج شنبه 15 تیر 1391, 15:23 عصر
با سلام


حالا میشه یه نمونه از همون codeDom رو بزارین؟

قرار ما بر سوزوندن مقداری فسفر بود دوست عزیز ! اینجوری چیزی یاد نمیگری چون تا یه سوال واست پیش میاد توانایی خودت رو کلاً نادیده میگیری ... به هر حال من یک نمونه کد کوچک در مورد درخواستی که داشتی نوشتم . میتونی خودت توسعه اش بدی مثلاٌ جوری سورس رو تغییر بدی که بهت خروجی بده مثلاً سورس رو به برنامه بدی بهت فایل خروجی از نوع Exe بده که خودش یه برنامه کامل و بدون متکی بودن به برنامه مادر باشه . در ابتدا کنسول اپلیکشن بده بیرون بعد که کمی دستت روون شد Windows Form Application که مقدری ریزه کاریش بیشتره رو هم به سادگی به عنوان خروجی برنامه میتونی بدی بیرون . سوزوندن فسفر رو فراموش نکن .... :متفکر:

http://alimanam.persiangig.com/image/How%20to%20use%20codeDom.png

موفـــق باشید./

kiarashk
پنج شنبه 15 تیر 1391, 22:32 عصر
با سلام





اگر به " یا باید " جمله بنده توجه کنین متوجه منظور بنده میشین .

شرح بیشتر :

اگر برنامه ایی خروجی فایل اجرایی بده بیرون به صورتی که یکجا فایل خروجی خوانده ( اجرا ) بشه به برنامه مادر یک کامپایلر میگن نه مفسر ... حالا ما قراره از Enigne خود فرم ورک برای این منظور استفاده کنیم . ولی اگه بخوایم صرفاً ( به قسمت دوم که گفتم " یا اینکه یه فایل حاوی سورس باشه که بشه در Run Time اون رو به خورد کلاس CodeDom بدی که بتونه اجراش کنه " ) توجه کنین به این میگن تفسیر کد چون در حقیقت ما اومدیم سورس رو از یک فایل غیر اجرایی خوندیم و خط به خط میخوایم اجراش کنیم .

موفــق باشید./

منم والا با توجه به این حرف دپستمون عرض کردم " فقط میخام مثل یه مرورگر که فایل html رو باز میکنه "

kiarashk
پنج شنبه 15 تیر 1391, 22:33 عصر
با سلام





اگر به " یا باید " جمله بنده توجه کنین متوجه منظور بنده میشین .

شرح بیشتر :

اگر برنامه ایی خروجی فایل اجرایی بده بیرون به صورتی که یکجا فایل خروجی خوانده ( اجرا ) بشه به برنامه مادر یک کامپایلر میگن نه مفسر ... حالا ما قراره از Enigne خود فرم ورک برای این منظور استفاده کنیم . ولی اگه بخوایم صرفاً ( به قسمت دوم که گفتم " یا اینکه یه فایل حاوی سورس باشه که بشه در Run Time اون رو به خورد کلاس CodeDom بدی که بتونه اجراش کنه " ) توجه کنین به این میگن تفسیر کد چون در حقیقت ما اومدیم سورس رو از یک فایل غیر اجرایی خوندیم و خط به خط میخوایم اجراش کنیم .

موفــق باشید./

منم والا با توجه به این حرف دوستمون عرض کردم " فقط میخام مثل یه مرورگر که فایل html رو باز میکنه "

مهرداد صفا
چهارشنبه 04 مرداد 1391, 19:30 عصر
نه تا اون حد شدید که بخام از اول همه رو بنویسم فقط میخام مثل یه مرورگر که فایل html رو باز میکنه و مشخصاتشو میخونه و اطلاعاتو نشون میده و یا کار خاصی میکنه باشه ولی یکم کوچیکتر


سلام
با توجه به گفته هاتون فکر میکنم XML بهترین گزینه میتونه باشه.
از اونجا که اولا یک زبان markup است و در خود .net کلاس های زیادی برای نوشتن و خواندن درون اینگونه فایلها وجود دارد و ثانیا در کل یک زبان انعطاف پذیر است که زبان های بسیاری بر پایه آن طراحی شده و در نرم افزارهای مختلف مورد استفاده قرار میگیرد.
مانند HTML تگهای آماده در آن نیست و شما خودتان میتوانید تگها و مقادیر مورد نظر خود را در آن استفاده کنی.