שאלת תכנות
נכתב ב-15 ביולי 2007, 22:52 | על-ידי לירון | קטגוריות: כללי
4
אני צריך למצוא regular expression שיזהה אם מחרוזת מסוימת היא קוד TeX. אני לא יודע TeX מספיק טוב בשביל לדעת לעשות כזה דבר. מישהו מקוראיי הנאמנים יכול?
הערה חשובה: false-positives הרבה יותר גרועים לי מ-false-negatives, אז אם אתם כותבים משהו, חישבו בהתאם.
תודה!
(אגב, הקוד הזה ישתתף בתוכנת קוד פתוח שאני עובד עליה עכשיו, משהו שיקל על משתמשי ווינדוז, ואופיס במיוחד, לעבוד עם תוכנות שמוציאות פורמטים פתוחים כמו SVG, TeX וכו'.)
אני חושב שמעט מאוד משתמשים היום ב-TeX, אם כבר אז ב-LaTeX.
נראה לי הכי הגיוני לזהות את זה עפ"י הפותח והסוגר (שהם שונים ביניהם, בTeX צריך רק \bye בסוף, וב-LaTeX צריך begin-\end\) ואז כמות הfalse-positives תהיה מינימלית, אבל בטוח יש דרך יותר מתוחכמת…
אם זה כבר קוד פתוח, הסתכלת איך זה ממומש בכלי זיהוי קובץ עפ"י תוכן "file" של לינוקס?
אם זה עוזר לך, מצאתי גם קוד ב-C שמזהה תקינות של TeX/LaTeX עפ"י כמות הפותחים וכמות הסוגרים:
http://www.cs.stir.ac.uk/~kjt/software/download/chktex.tar.gz
תודה, אני אבדוק בכיוון!
(אני לא מאמין שאני מסתכל על קוד מ-1988…)
(מכיר את הקטע שאתה כותב תוכנה, ודואג להכל, אבל פשוט אין לך כוח ל-error handling?)
מדוע שלא תשתמש בנתח (parser) של TeX למשימה הזאת? זה די יבטיח לך שלא יהיו לך false positives. יתירה מזאת, אני לא מאמין שביטוי רגולרי מתאים לשפה כמו TeX.
זה משהו שצריך לרוץ ברקע ולנתח טקסטים שנמצאים בשימוש, לשים parser מלא יהיה כבד מדי, לדעתי.