PDA

View Full Version : تولید یک کامپایلر کوچک در C#



mo.jalilian
پنج شنبه 05 فروردین 1389, 18:33 عصر
من یک برنامه نوشتم که یک متن txt که داخل آن دستورات خامی قرار دارد را گرفته و یک فایل تولید می کند که کد کامل مربوط به آن فایل ورودی می باشد و اگر ما متن این فایل تولید شده را داخل یک کامپایلر c++ اجرا کنیم ، بدون خطا اجرا می شود.
اما کاری که من الان میخوام توی c# انجام بدم این است که بجای کپی کردن دستی این کدها، کاری کنم این فایل تولید شده با فرمت cpp. در همین سی شارپ کامپایل بشه و فایل exe را به من بده.

راه حلی دارید؟
ممنون

sia_2007
پنج شنبه 05 فروردین 1389, 20:32 عصر
چرا باید دستورات ++C در #C کار کنه ؟

FastCode
پنج شنبه 05 فروردین 1389, 23:40 عصر
چرا باید دستورات ++C در C#‎‎‎ کار کنه ؟
چون mo.jalilian هیچ کدوم از زبونها رو بلد نیست.:لبخند:

دوست عزیز چطور توقع داری که دستوری مثل:
System::Object^ item = gcnew class1();
در C#‎‎ کار کنه؟:متفکر:

mo.jalilian
جمعه 06 فروردین 1389, 01:32 صبح
با سلام خدمت شما دو دوست عزیز.
اولا این نکته را بگم که این طرز صحبت اصلا درست نیست و خود من مدیر یک دوتا فروم هستم و اصلا اینجور جواب دادن مناسب نیست. فکر نکنم این هم جزو مقررات باشه.

و در مورد اینکه من در مورد برنامه نویسی چیزی میدونم یا نه بگزریم، چون اینجا نه حاشه و نیازی هست که من خودم را ثابت کنم.

من هم نگفتم که میخوام سی شارپ مثلا دستور
delegate void mydeligate();
که در سی شارپ هست در سی پلاس کار کنه و برعکس.

من سوال کردم که راه حلی هست که مثلا کامپایلر سی پلاس را فراخوانی کنیم و برنامه کامپایل بشه و بعد خروجی تولید بشه. به همین راحتی. :لبخندساده: یاد گرفتی برادر.!!

چون فکر کنم این یک فایل exe هست و قرار نیست که کسی بفهمه اون پشت چه خبره. من که پروژم GNU نیست که بخوام سورسش را بدم.
:بامزه:

FastCode
جمعه 06 فروردین 1389, 01:52 صبح
با سلام خدمت شما دو دوست عزیز.
اولا این نکته را بگم که این طرز صحبت اصلا درست نیست و خود من مدیر یک دوتا فروم هستم و اصلا اینجور جواب دادن مناسب نیست. فکر نکنم این هم جزو مقررات باشه.

و در مورد اینکه من در مورد برنامه نویسی چیزی میدونم یا نه بگزریم، چون اینجا نه حاشه و نیازی هست که من خودم را ثابت کنم.

من هم نگفتم که میخوام سی شارپ مثلا دستور
delegate void mydeligate();
که در سی شارپ هست در سی پلاس کار کنه و برعکس.

من سوال کردم که راه حلی هست که مثلا کامپایلر سی پلاس را فراخوانی کنیم و برنامه کامپایل بشه و بعد خروجی تولید بشه. به همین راحتی. :لبخندساده: یاد گرفتی برادر.!!

چون فکر کنم این یک فایل exe هست و قرار نیست که کسی بفهمه اون پشت چه خبره. من که پروژم GNU نیست که بخوام سورسش را بدم.
:بامزه:
ببخشید من فکر کردم که شما میخواهی, {همون که گفتی}.:افسرده:

و اما مشکل شما:
شما فقط میتونی #C رو کامپایل کنی چون ++C خیلی سخته و فکر میکنم که از حوصله من هم خارجه(توی گوگل بگرد)
برای کامپایل #C یه نمونه میزارم(اگر spaghetti معذرت میخوام, برای دوران کودکیه):

SMRAH1
جمعه 06 فروردین 1389, 12:38 عصر
سلام
بهترین راه استفاده از یک کامپایلر خارجی است.به عبارت دیگه یک برنامه دیگه در خارج از برنامه شما باید وظیفه کامپایل رو به عهده بگیره و خروجی مناسب تولید کنه و شما فقط باید در خط دستور بهش بگید که فایل منبع کجاست و کجا باید فایل خروجی رو ایجاد کنه.
به این منظور من DJGPP رو پیش نهاد می کنم.البته mingw هم هست (من خیلی باهاش کار نکردم و نظر خاصی در این زمینه ندارم!).
موفق باشید

exlord
جمعه 06 فروردین 1389, 13:00 عصر
اجرای متد نوشته شده در C++‎‎‎ در C#‎‎‎
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/8badce0e-9e71-4b7e-977f-c3849e3ebba4
Linking native C++‎‎ into C#‎‎ applications

http://blogs.msdn.com/texblog/archive/2007/04/05/linking-native-c-into-c-applications.aspx
C++‎ to C#‎ Translator

http://sourceforge.net/projects/cxx2cs/
به جای اینکه خودتو اینجا خسته کنی کافی بود اینو تو google بگردی.......
compiling c++ with c#

mo.jalilian
جمعه 06 فروردین 1389, 22:35 عصر
از کمک و راهنمایی دوستان ممنونم ولی من نتونستم به جوابم برسم، فکر میکنم اگه سوالم رو واضحتر بپرسم جواب بهتری بگیرم.
من یک برنامه سی شارپ دارم که در حالت خیلی ساده مثلا در یک فایل txt. که متن زیر قرار دارد را باز می کنم و با زدن دکمه ذخیره یک فایل به صورت فایلی که در ضمیمه است ذخیره می شود.
حالا من چطوری دوباره این فایل را در سی شارپ باز کنم(در همین برنامه) و سپس کامپایلر سی پلاس را بر روی آن اجرا کنم و پس از اجرا برنامه exe از این کامپایلر ایجاد شود .

متن فایل اولیه برای مثال:
a=1
b=a+1

exlord
جمعه 06 فروردین 1389, 22:59 عصر
http://barnamenevis.org/forum/showthread.php?t=210460