מישהו יכול לעזור ב- VC++????

ssone

New member
מישהו יכול לעזור ב- VC++????

אני צריך לכתוב תוכנית ב-vc++ שמדמה קומפיילר.מישהו יכול לעזור לי בזה??? תודה מראש!
 

gilad_no

New member
ניתוח לקסיקלי

היה מישהו ששאל את זה לפני כמה זמן וצירפתי מדריך לבניית מהדר. תבצע חיפוש
 

DarkArcher

New member
הנה...

אוקי.... בד"כ קומפיילר מוכב מ 4 חלקים : - ניתוח לקסיקלי - ניתוח סינטקס - בניית טבלת סימבולים - תרגום לשפת ביניים אח"כ, תכנה לך IDE כדי שיהיה קל לעבוד עם הקומפיילר. עכשיו, איזה אינפורמציה אתה רוצה לדעת ? איזה סוג של קומפיילר אתה בונה ? אתה רוצה המלצות לספרים ?
 

ssone

New member
קומפיילר

אני צריך קוד שיהיה שיעבוד כקומפיילר: בframe אחד יהיה תרשים הזרימה של התוכנית שמקמפלים ובframe אחד יהיה את השגיאות ובfarme אחד תהיה התוכנית המקומפלת.אם תוכל לעזור אודה לך לתת ךי כיוון מסוים או התחלה מסוימת. תודה!!!
 

DarkArcher

New member
אוקי...

אתה עובד עם VisualStudio לכן, יש לך כמה אפשרויות... אחת היא ליצור יישום MFC חדש בעזרת האשף, לגזור את מחלקת התצוגה ממחלקת הפורם כלומר : CFormView תהיה מחלקב שממנה נגזרת CView שם תוכל לבנות לך 3 פקדי RichEditTextBox... מקור כך פקד יהיה שונה, אחד יטען את נתוניו מקובץ שצריך לקמפל.. שני, יהיה חלון התוצאה, אתה יכול לקבל חלון התוצאה בעזרת כמה פקודות מתוך APU של Console למשל שלישי יהיה חלון השיגות, אני הייתי מגיד מחלקה לטיפול בשיגות, עם מונה שגיאות ושורות, מחלקה זו תקבל שורה מסויימת ממחלקה אחרת שתפקידה לסרוק את קובץ קוד המקור, אם מצאה שיגאה, סיטקס או לקסיקלית, תוסיף אותה לחלון השגיאות. תבנה לך למשל נערך של מלים שמורות, שמוכרות ע"י הקומפיילר שלך, כמו char, int, return וכדומה, אתה גם צריך לבדוק סיטקס, למשל איך גיליתה מילה printf אז ישנו סיטקס מסויים, אתה חייב לפינח את כל השורה ולבדוק סיטקס. ישנם עוד כמה דברים שקשורים בקומפילציה ובדיקה, תשאל אם יש שאלות. לסיכום: CCheckLex class to check error in syntax CReadClass to read lines from text file, and send them to CCheckClass GlobalResWords*[] will be a table for reserved words מצטער אם בילבלתי אותך או משהו, אבל זה מה שיש לי להגיד... אם אתה צריך דוגמאות, הנה למשל דוגמא :
struct ResWord { char *pString; TokenCode code; }; static ResWord rw2[] = { {"if",tcIF}, }; static ResWord rw3[] = { {"for",tcFOR},{"int",tcINT}, }; static ResWord rw4[] = { {"case",tcCASE},{"char",tcCHAR},{"else",tcELSE}, {"long",tcLONG},{"void",tcVOID}, }; static ResWord rw5[] = { {"break",tcBREAK},{"const",tcCONST},{"float",tcFLOAT}, }; static ResWord rw6[] = { {"double",tcDOUBLE},{"return",tcRETURN},{"switch",tcSWITCH}, };​
 

ssone

New member
תודה אבל....

אין לי מןשג איך עושים את זה. אתה חושב שתוכל לעזור לי בזה? זה למחרתיים. תודה
 
למעלה