#include <string.h> char *strstr(const char *haystack, const char *needle);
לגבי השני, פתרון יפה יהיה בעזרת טכניקות של קומפילציה(לא זה לא מסובך
כמו שזה נשמע)
נעזר במחסנית, נקרא מימין לשמאל, וכל שלב אנחנו מבצעים או shift
או reduce,
shift כלומר לקחת תו נוסף מהמחרוזת ולדחוף על המחסנית.
reduce כלומר לקחת את שלושת האיברים בראש המחסנית שיהיו מספר
פעולה ומספר ולחשב את הפעולה הרלוונטית ולשים אותה בראש המחסנית.
אנו מחליטים האם לבצע shift או reduce לפי קדימויות האופרטורים.
אם בקלט קיבלנו מספר נעביר אותוshift, אם קיבלנו פעולה בקדימות נמוכה מזאת
שבראש המחסנית נעשה reduce אם קיבלנו פעולה בקדימות גבוהה יותר
נעשה shift
אפשר בקלות להרחיב למקרה שבו יש סוגריים, או אופרטורים אונארים
או אופרטורים עם אסוציאציה טבעית ימנית. (בניגוד לכפל חיבור חיסור
להם יש אסוציאציה שמאלית)
DRYICE