<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: פענוח שפות פורמליות</title>
	<atom:link href="http://firefang.net/blog/475/feed" rel="self" type="application/rss+xml" />
	<link>http://firefang.net/blog/475</link>
	<description>May your sockets never timeout</description>
	<pubDate>Thu, 08 Jan 2009 12:25:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1-alpha-10188</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: עמרי</title>
		<link>http://firefang.net/blog/475/comment-page-1#comment-4629</link>
		<dc:creator>עמרי</dc:creator>
		<pubDate>Tue, 05 Jun 2007 10:23:53 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/475#comment-4629</guid>
		<description>ויטלי, האמת היא שניסיתי את JavaCC ומצאתי את Antlr כהרבה יותר נוח.</description>
		<content:encoded><![CDATA[<p>ויטלי, האמת היא שניסיתי את JavaCC ומצאתי את Antlr כהרבה יותר נוח.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ויטלי</title>
		<link>http://firefang.net/blog/475/comment-page-1#comment-4628</link>
		<dc:creator>ויטלי</dc:creator>
		<pubDate>Tue, 05 Jun 2007 10:21:19 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/475#comment-4628</guid>
		<description>לא לשכוח את JavaCC ונגזרותיו שעושים עבודה מצויינת בתחום הזה (הקלט הוא הגדרת השפה והפלט מחלקות JAVA שיודעות לפרסס אותה ומאפשרות גם hookingבכל שלב).</description>
		<content:encoded><![CDATA[<p>לא לשכוח את JavaCC ונגזרותיו שעושים עבודה מצויינת בתחום הזה (הקלט הוא הגדרת השפה והפלט מחלקות JAVA שיודעות לפרסס אותה ומאפשרות גם hookingבכל שלב).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: יונתן אורלב</title>
		<link>http://firefang.net/blog/475/comment-page-1#comment-4615</link>
		<dc:creator>יונתן אורלב</dc:creator>
		<pubDate>Mon, 04 Jun 2007 08:56:19 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/475#comment-4615</guid>
		<description>אוקיי עמרי, תודה רבה.</description>
		<content:encoded><![CDATA[<p>אוקיי עמרי, תודה רבה.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: עמרי</title>
		<link>http://firefang.net/blog/475/comment-page-1#comment-4597</link>
		<dc:creator>עמרי</dc:creator>
		<pubDate>Sun, 03 Jun 2007 17:20:19 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/475#comment-4597</guid>
		<description>יונתן,
לא ידוע לי על שימוש בכלים האלו כמשהו זריז כמו גרפ.
השימוש בהם מורכב ומערב יצירת קוד אוטומטית.</description>
		<content:encoded><![CDATA[<p>יונתן,<br />
לא ידוע לי על שימוש בכלים האלו כמשהו זריז כמו גרפ.<br />
השימוש בהם מורכב ומערב יצירת קוד אוטומטית.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: יונתן אורלב</title>
		<link>http://firefang.net/blog/475/comment-page-1#comment-4593</link>
		<dc:creator>יונתן אורלב</dc:creator>
		<pubDate>Sun, 03 Jun 2007 08:17:34 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/475#comment-4593</guid>
		<description>עמרי,

ראשית, תודה רבה על התשובה. שנית, לזה בדיוק התכוונתי: ברור לי שביטויים רגולריים אי אפשר לעשות הכל. אני מתייחס לביטויים הרגולריים כתת קבוצה של התחבירים (כל ביטוי רגולרי הוא גם תחביר, אבל לא בהכרך להיפך). אבל אני מסכים שהדוגמה לא הייתה טובה. היה עלי לבחור דוגמה אחרת, רק שאני לא יודע באופן פורמלי מה אפשרי עם ב"ר ומה עם כלי תחביר,  אני רק יודע שתחביר רחב יותר. עם ביטויים רגולריים יש לי ניסיון מעשי רב, ואני יודע מה אי אפשר להשיג באמצעותם. ספציפית, אני מכיר ב"ר ברמה של VIM (וכמובן אחרים בשינויי תחביר קלים), אבל לפי מה שאמרו לי יש גם 'משוכללים' יותר, למשל כאלה המאפשרים שימוש בתנאים (conditionals).

מה שכן, התייחסתי יותר לצד המעשי, להשתמש ב- bson  ו- flex ככלים (לא חשוב באיזו צורת מימוש). אח"כ נכנסתי גם למאמר שהצגת, ואני מבין שהכלים האלה פועלים רק על קוד של שפה אחרת. אני לא יודע אם הם כלים בפני עצמם, שאפשר להשתמש בהם כמו שמשתמשים בביטויים רגולריים. לדוגמה: האם כמו ש- Perl תומכת באופן מובנה בביטויים רגולריים, האם היא גם תומכת בכלים האלה? באופן אינטואיטיבי התשובה היא לא, ויתכן גם שהשימוש בהם מורכב מידי מכדי להיות כליי תיסרוט או פיתוח מהיר יעילים.</description>
		<content:encoded><![CDATA[<p>עמרי,</p>
<p>ראשית, תודה רבה על התשובה. שנית, לזה בדיוק התכוונתי: ברור לי שביטויים רגולריים אי אפשר לעשות הכל. אני מתייחס לביטויים הרגולריים כתת קבוצה של התחבירים (כל ביטוי רגולרי הוא גם תחביר, אבל לא בהכרך להיפך). אבל אני מסכים שהדוגמה לא הייתה טובה. היה עלי לבחור דוגמה אחרת, רק שאני לא יודע באופן פורמלי מה אפשרי עם ב&#8221;ר ומה עם כלי תחביר,  אני רק יודע שתחביר רחב יותר. עם ביטויים רגולריים יש לי ניסיון מעשי רב, ואני יודע מה אי אפשר להשיג באמצעותם. ספציפית, אני מכיר ב&#8221;ר ברמה של VIM (וכמובן אחרים בשינויי תחביר קלים), אבל לפי מה שאמרו לי יש גם &#8216;משוכללים&#8217; יותר, למשל כאלה המאפשרים שימוש בתנאים (conditionals).</p>
<p>מה שכן, התייחסתי יותר לצד המעשי, להשתמש ב- bson  ו- flex ככלים (לא חשוב באיזו צורת מימוש). אח&#8221;כ נכנסתי גם למאמר שהצגת, ואני מבין שהכלים האלה פועלים רק על קוד של שפה אחרת. אני לא יודע אם הם כלים בפני עצמם, שאפשר להשתמש בהם כמו שמשתמשים בביטויים רגולריים. לדוגמה: האם כמו ש- Perl תומכת באופן מובנה בביטויים רגולריים, האם היא גם תומכת בכלים האלה? באופן אינטואיטיבי התשובה היא לא, ויתכן גם שהשימוש בהם מורכב מידי מכדי להיות כליי תיסרוט או פיתוח מהיר יעילים.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: עמרי</title>
		<link>http://firefang.net/blog/475/comment-page-1#comment-4592</link>
		<dc:creator>עמרי</dc:creator>
		<pubDate>Sun, 03 Jun 2007 07:20:55 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/475#comment-4592</guid>
		<description>יהונתן, כן ולא.
בגדול הגדרות תחביר מאפשרות לעשות מה שאמרת, אבל הן יותר חזקות מזה.
בדוגמא שלך, אפשר להשתמש בביטוי רגולרי כדי לתפוס את כל ההגדרה של המשתנה, אבל יש דברים שפשוט אי אפשר לתפוס בעזרת ביטוי רגולרי (אוטומט סופי דטרמיניסטי).
הדוגמא הקלאסית היא ביטוי שבו הסוגריים תואמות, X סוגריים פותחות משמאל וX 
סוגריים סוגרות מימין, אבל יש משפחה שלמה של ביטויים כאלו.
אז לשאלתך, כן - Parser generators בהחלט מתאימים ליצירת קוד שמפענח קבצי קונפיגורציה.</description>
		<content:encoded><![CDATA[<p>יהונתן, כן ולא.<br />
בגדול הגדרות תחביר מאפשרות לעשות מה שאמרת, אבל הן יותר חזקות מזה.<br />
בדוגמא שלך, אפשר להשתמש בביטוי רגולרי כדי לתפוס את כל ההגדרה של המשתנה, אבל יש דברים שפשוט אי אפשר לתפוס בעזרת ביטוי רגולרי (אוטומט סופי דטרמיניסטי).<br />
הדוגמא הקלאסית היא ביטוי שבו הסוגריים תואמות, X סוגריים פותחות משמאל וX<br />
סוגריים סוגרות מימין, אבל יש משפחה שלמה של ביטויים כאלו.<br />
אז לשאלתך, כן - Parser generators בהחלט מתאימים ליצירת קוד שמפענח קבצי קונפיגורציה.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: יונתן אורלב</title>
		<link>http://firefang.net/blog/475/comment-page-1#comment-4590</link>
		<dc:creator>יונתן אורלב</dc:creator>
		<pubDate>Sat, 02 Jun 2007 20:04:44 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/475#comment-4590</guid>
		<description>עמרי, עוד משהו, אשמח לשמוע את דעתך ממש בקצרה:

לא קראתי עדיין את הקישור לכלים bisoni ו- flex. אעשה זאת. מעבר לכך ששמעתי את השם, אני לא יודע על הכלים האלה שום דבר.

אני רוצה לומר לך איך אני "תופס" אותם אחרי שקראתי את הפוסט המעניין שלך:

כמו שביטויים רגולריים/כלים לשימוש בביטויים רגולריים (שם עברי שאני מעדיף: ביטויי תבנית) משמשים לחילוץ/עיבוד תתי מחרוזות המתאימות לתבנית מסויימת, האם זה נכון לומר שהכלים האלה הם הרחבה של ב"ר המשמשים לחילוץ מחרוזות המתאימות לתבנית מורכבת יותר (תחביר) ולאיתור הערכים השונים המרכיבים אותן על פי תפקידם?
למשל: איתור הגדרת המשתנה הזו:
int a = 5;
ואיתור ערכי החלקים: "int" הטיפוס, "a" שם המשתנה, "5" ערך המשתנה (לא במקרה רשמתי כמחרוזות).

אם כן, מבחינתי הייתי יכול להשתמש בזה למשל כדי להגדיר ולפענח קבצי קונפיגורציה, או כדי לשמור מבני נתונים בקובץ טקסי. אם כי זה די מיותר: אם אני צריך קובץ קונפיקורציה או נתונים שאינו טריויאלי, אז אני יכול להשתמש ב- XML: כל שפת תיסרוט מודרנית תומכת בה, וגם כל שפת תיכנות.

(מה גם שלדעתי שווה לעבוד עם הכלי/ספרייה SQLite, שאני צריך להתחיל ללמוד. זה כלי מעולה שאתה בוודאי מכיר).</description>
		<content:encoded><![CDATA[<p>עמרי, עוד משהו, אשמח לשמוע את דעתך ממש בקצרה:</p>
<p>לא קראתי עדיין את הקישור לכלים bisoni ו- flex. אעשה זאת. מעבר לכך ששמעתי את השם, אני לא יודע על הכלים האלה שום דבר.</p>
<p>אני רוצה לומר לך איך אני &#8220;תופס&#8221; אותם אחרי שקראתי את הפוסט המעניין שלך:</p>
<p>כמו שביטויים רגולריים/כלים לשימוש בביטויים רגולריים (שם עברי שאני מעדיף: ביטויי תבנית) משמשים לחילוץ/עיבוד תתי מחרוזות המתאימות לתבנית מסויימת, האם זה נכון לומר שהכלים האלה הם הרחבה של ב&#8221;ר המשמשים לחילוץ מחרוזות המתאימות לתבנית מורכבת יותר (תחביר) ולאיתור הערכים השונים המרכיבים אותן על פי תפקידם?<br />
למשל: איתור הגדרת המשתנה הזו:<br />
int a = 5;<br />
ואיתור ערכי החלקים: &#8220;int&#8221; הטיפוס, &#8220;a&#8221; שם המשתנה, &#8220;5&#8243; ערך המשתנה (לא במקרה רשמתי כמחרוזות).</p>
<p>אם כן, מבחינתי הייתי יכול להשתמש בזה למשל כדי להגדיר ולפענח קבצי קונפיגורציה, או כדי לשמור מבני נתונים בקובץ טקסי. אם כי זה די מיותר: אם אני צריך קובץ קונפיקורציה או נתונים שאינו טריויאלי, אז אני יכול להשתמש ב- XML: כל שפת תיסרוט מודרנית תומכת בה, וגם כל שפת תיכנות.</p>
<p>(מה גם שלדעתי שווה לעבוד עם הכלי/ספרייה SQLite, שאני צריך להתחיל ללמוד. זה כלי מעולה שאתה בוודאי מכיר).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: עמרי</title>
		<link>http://firefang.net/blog/475/comment-page-1#comment-4588</link>
		<dc:creator>עמרי</dc:creator>
		<pubDate>Sat, 02 Jun 2007 17:30:07 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/475#comment-4588</guid>
		<description>תודה, אני אעיף מבט.</description>
		<content:encoded><![CDATA[<p>תודה, אני אעיף מבט.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: מבין דבר אחד או שניים</title>
		<link>http://firefang.net/blog/475/comment-page-1#comment-4580</link>
		<dc:creator>מבין דבר אחד או שניים</dc:creator>
		<pubDate>Fri, 01 Jun 2007 18:13:23 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/475#comment-4580</guid>
		<description>קריאה מומלצת
http://www.defmacro.org/ramblings/lisp-in-haskell.html</description>
		<content:encoded><![CDATA[<p>קריאה מומלצת<br />
<a href="http://www.defmacro.org/ramblings/lisp-in-haskell.html" rel="nofollow">http://www.defmacro.org/ramblings/lisp-in-haskell.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: יונתן אורלב</title>
		<link>http://firefang.net/blog/475/comment-page-1#comment-4575</link>
		<dc:creator>יונתן אורלב</dc:creator>
		<pubDate>Fri, 01 Jun 2007 11:13:22 +0000</pubDate>
		<guid isPermaLink="false">http://firefang.net/blog/475#comment-4575</guid>
		<description>זה נושא מעניין ביותר. אני מגיב לפני שקראתי את הפוסט לעומקו.

בסקריפטים שיצרתי מידי פעם גם אני הייתי צריך לפנעח דברים (קובץ קונפיגורציה).

הדרך הפשוטה לעשות את זה היא:
להגדיר תחביר בסיסי.
לפענח את התחביר הבסיסי.

לא להגדיר מה קורה במקרה של קובץ (קונפיגורציה נניח) שאינו תואם את התחביר הבסיסי...

כלומר, אם "המשתמש" (מי שיצר את הקונפיגורציה) רשם את התחביר בצורה לא נכונה, כל תוצאה עלולה להתקבל (אני פשוט לא בודק את זה).

ברור לי שזו לא שיטה, וקומפיירלים זה עולם אחר לחלוטין: שם אתה גם צריך לוודא שהתוצאה תואמת את ההגדרה של התחביר, וגם שהתחביר בקובץ תואם את כללי התחביר. וכמובן שהתחביר מורכב הרבה הרבה יותר (סי ++? ג'אווה? פרל???). מה גם שאתה צריך להגדיר תחביר גמיש (אפשור תוויים לבנים למשל).

טוב. זו הייתה בעיקרה הערה.</description>
		<content:encoded><![CDATA[<p>זה נושא מעניין ביותר. אני מגיב לפני שקראתי את הפוסט לעומקו.</p>
<p>בסקריפטים שיצרתי מידי פעם גם אני הייתי צריך לפנעח דברים (קובץ קונפיגורציה).</p>
<p>הדרך הפשוטה לעשות את זה היא:<br />
להגדיר תחביר בסיסי.<br />
לפענח את התחביר הבסיסי.</p>
<p>לא להגדיר מה קורה במקרה של קובץ (קונפיגורציה נניח) שאינו תואם את התחביר הבסיסי&#8230;</p>
<p>כלומר, אם &#8220;המשתמש&#8221; (מי שיצר את הקונפיגורציה) רשם את התחביר בצורה לא נכונה, כל תוצאה עלולה להתקבל (אני פשוט לא בודק את זה).</p>
<p>ברור לי שזו לא שיטה, וקומפיירלים זה עולם אחר לחלוטין: שם אתה גם צריך לוודא שהתוצאה תואמת את ההגדרה של התחביר, וגם שהתחביר בקובץ תואם את כללי התחביר. וכמובן שהתחביר מורכב הרבה הרבה יותר (סי ++? ג&#8217;אווה? פרל???). מה גם שאתה צריך להגדיר תחביר גמיש (אפשור תוויים לבנים למשל).</p>
<p>טוב. זו הייתה בעיקרה הערה.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
