interpeter ל brainf***, ול Befunge - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

interpeter ל brainf***, ול Befunge


Jaman

Recommended Posts

אני כותב interpreter ל ***brainf ב C++ ואני רוצה להיות בטוח שכשאני מוסיף 1 למשתנה מסוג unsigned char שמכיל 255 ערכו יהיה 0, ולהיפך.

האם זה תמיד יהיה ככה או שצריך להגיד משהו עם define או הגדרות קומפיילר כלשהן כדי לוודא שזה יקרה?

או שאין בכלל דרך לוודא שזה יהיה ככה על כל מכונה וצריך לכתוב קוד עבור מקרי הקצה?

קישור לתוכן
שתף באתרים אחרים

תודה, סיימתי את ה interpreter, הוא לא הכי מהיר, אבל לפי מה שבדקתי הוא עובד כמו שצריך :).

צירפתי את הקוד ואת הקובץ המקומפל למי שמעוניין.

[attachment deleted by admin]

קישור לתוכן
שתף באתרים אחרים

Nice! ואם הקוד של Zelig עןשה מה שהוא צריך לעשות אז זה אכן עובד ;D

בכל מקרה כמה הערות בקשר לקוד:

אתה כותב ב C++ אז למה להתשמש בקריא של קבצים משפת C? ל C++ יש מנגון יפה של קריאה מקובץ. ולא משנה מה השפה (C/C++) יש דרך לקרוא את כל הקובץ לחוצץ במקום לקרוא תו תו, שים לב כמה פעמים אתה יוצר אובייקט של סטרינג כאשר אתה קורא את הקובץ תו-תו.

הימנע מלהשתמש ב DEFINE במיוחד בדרים כמו הגדרת טיפוסים חדשים, בשביל זה יש typedef.

זהו חוץ מזה כל הכבוד ^^ אהבתי את הרעיון

קישור לתוכן
שתף באתרים אחרים

בעקרון define זה דבר בעייתי. כשאתה מגדיר משהו באמצעות define, אז מה שקורה הוא שpreprocessor לוקח את הערך שהגדרת ופשוט מדביק אותו בכל המקומות שבהם אתה משתמש בו. זה יכול לגרום לכל מיני בעיות אם אתה לא משתמש בו בצורה נכונה. לדוגמה:


const int NUMBER = -42;
int main()
{
int x = -NUMBER;
}

תחשוב מה יקרה עם תשתמש ב-define במקום ב-const int.

חוץ מזה, המילים השמורות typedef ו-const נועדו בדיוק למצבים האלה, אז למה לא להשתמש בהן?

נ.ב. חיפוש קצר בגוגל ייתן לך עוד כל מיני דוגמאות בהן עדיף להשתמש ב-typedef וב-const על פני define.

קישור לתוכן
שתף באתרים אחרים

Nice! ואם הקוד של Zelig עןשה מה שהוא צריך לעשות אז זה אכן עובד ;D

עובד נהדר :xyxthumbs:

בכל מקרה כמה הערות בקשר לקוד:

אתה כותב ב C++ אז למה להתשמש בקריא של קבצים משפת C? ל C++ יש מנגון יפה של קריאה מקובץ. ולא משנה מה השפה (C/C++) יש דרך לקרוא את כל הקובץ לחוצץ במקום לקרוא תו תו, שים לב כמה פעמים אתה יוצר אובייקט של סטרינג כאשר אתה קורא את הקובץ תו-תו.

א) אני לא מכיר/זוכר את המנגנון של C++ :-\

ב) אני יודע שיש דרכים יותר טובות מלקרוא תו תו, הבעיה שהדרכים שאני מכיר מחזירות מחרוזות בסגנון c והשתמשתי פה בטיפוס string, והחלטתי ללכת על מה שאני יודע במקום להתעקב על הקטע הזה..

הימנע מלהשתמש ב DEFINE במיוחד בדרים כמו הגדרת טיפוסים חדשים, בשביל זה יש typedef.

צודק, התבלבלתי פה.

זהו חוץ מזה כל הכבוד ^^ אהבתי את הרעיון

תודה :).

קישור לתוכן
שתף באתרים אחרים

  • 4 שבועות מאוחר יותר...

ד.א. INT OVERFLOW מאט את התוכנית בהרבה. תנסה להימנע מINT OVERFLOW כמה שיותר.

מה!? מאיפה הבאת את זה!? כל קומפיילר C שאני מכיר פשוט מתעלם מ-overflow, ואני לא מכיר אף פלטפורמה שמדליקה את ה-integer overflow exception (בהנחה שהוא בכלל קיים במעבד).

אולי אתה מתבלבל עם python 3 או משהו?

קישור לתוכן
שתף באתרים אחרים

קיבלתי חשק לעשות מה שרציתי לעשות בזמנו - לכתוב גם קומפיילר ל BF.

אני מתאר לעצמי שלשפה פשוטה כמו BF זה לא צריך להיות יותר קשה מלכתוב את ה interpreter, אבל אני לא יודע ממש איך להתחיל :/.

ממה שקראתי קצת ברשת אני צריך להבין איך לממש את ה code generator (אין כמעט צורך לעשות ניתוח תחבירי וכו').

בשביל לעשות את זה אני צריך ידע ב assembler?

אשמח לקישור למאמר שיוכל לעזור אותי (הדבר הכי טוב שמצאתי זה זה: http://compilers.iecc.com/crenshaw/ , אבל זה קצת overkill בגלל שכותבים שם קומפיילר הרבה יותר מתוחכם).

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...