<?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/"
xmlns:series="http://unfoldingneurons.com/"
> <channel><title>Comments on: Eine eigene Programmiersprache erschaffen? Lexer und Parser in PHP!</title> <atom:link href="http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/feed/" rel="self" type="application/rss+xml" /><link>http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/</link> <description>Technik ist Spiel, Gothic ist ernst und Zeit hat man zuviel</description> <lastBuildDate>Fri, 03 Feb 2012 07:24:55 +0000</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>By: SheldonC</title><link>http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/comment-page-1/#comment-3562</link> <dc:creator>SheldonC</dc:creator> <pubDate>Sat, 04 Feb 2012 12:10:00 +0000</pubDate> <guid
isPermaLink="false">http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/#comment-3562</guid> <description>Hi,
ja, vielen Dank schon mal. Das ist ein guter Anfang f&#252;r mich!</description> <content:encoded><![CDATA[<p>Hi,<br
/> ja, vielen Dank schon mal. Das ist ein guter Anfang f&#252;r mich!</p> ]]></content:encoded> </item> <item><title>By: skaldrom</title><link>http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/comment-page-1/#comment-3559</link> <dc:creator>skaldrom</dc:creator> <pubDate>Sat, 04 Feb 2012 16:17:00 +0000</pubDate> <guid
isPermaLink="false">http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/#comment-3559</guid> <description>Eigentlich w&#252;rde das im EBNF ganz &#228;hnlich aussehen, beispielsweise - in einer einfachen version - so:
ALTERATION ::= &#039;if&#039; BOOLEANTERM &#039;then&#039; BLOCK &#039;else&#039; BLOCK &#039;end if&#039;
BLOCK w&#228;re eine liste von STATEMENTs, und ALTERATION ist auch ein Statement, so dass es verschachtelt werden kann. Ist das ein Start f&#252;r Dich?</description> <content:encoded><![CDATA[<p>Eigentlich w&#252;rde das im EBNF ganz &#228;hnlich aussehen, beispielsweise &#8211; in einer einfachen version &#8211; so:</p><p>ALTERATION ::= &#8216;if&#8217; BOOLEANTERM &#8216;then&#8217; BLOCK &#8216;else&#8217; BLOCK &#8216;end if&#8217;</p><p>BLOCK w&#228;re eine liste von STATEMENTs, und ALTERATION ist auch ein Statement, so dass es verschachtelt werden kann. Ist das ein Start f&#252;r Dich?</p> ]]></content:encoded> </item> <item><title>By: SheldonC</title><link>http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/comment-page-1/#comment-3556</link> <dc:creator>SheldonC</dc:creator> <pubDate>Sat, 04 Feb 2012 18:08:00 +0000</pubDate> <guid
isPermaLink="false">http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/#comment-3556</guid> <description>Hallo.
Das ist ein sehr gutes Beispiel zu den leider sehr schlecht dokumentierten Generatoren.
&quot;Eine eigene Programmiersprache&quot; w&#252;rde aber auch Kontrollstrukturen abverlangen. Gibt es eine Dokumentation, wie man dem ParserGenerator z.B. &quot;if/else&quot; beibringen kann?
Ich m&#246;chte eine simple Pseudosprache erstellen und bin f&#252;r jede Hilfe dankbar.</description> <content:encoded><![CDATA[<p>Hallo.<br
/> Das ist ein sehr gutes Beispiel zu den leider sehr schlecht dokumentierten Generatoren.<br
/> &#8220;Eine eigene Programmiersprache&#8221; w&#252;rde aber auch Kontrollstrukturen abverlangen. Gibt es eine Dokumentation, wie man dem ParserGenerator z.B. &#8220;if/else&#8221; beibringen kann?<br
/> Ich m&#246;chte eine simple Pseudosprache erstellen und bin f&#252;r jede Hilfe dankbar.</p> ]]></content:encoded> </item> <item><title>By: Bountin</title><link>http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/comment-page-1/#comment-3503</link> <dc:creator>Bountin</dc:creator> <pubDate>Sat, 04 Feb 2012 18:40:00 +0000</pubDate> <guid
isPermaLink="false">http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/#comment-3503</guid> <description>Jaa ich hab etwas sehr hilfreiches gefunden, was vielleicht auch OriginalCopy hilft: EBNF von PHP: http://www.icosaedro.it/articoli/php-syntax-ebnf.txt</description> <content:encoded><![CDATA[<p>Jaa ich hab etwas sehr hilfreiches gefunden, was vielleicht auch OriginalCopy hilft: EBNF von PHP: <a
href="http://www.icosaedro.it/articoli/php-syntax-ebnf.txt">http://www.icosaedro.it/articoli/php-syntax-ebnf.txt</a></p> ]]></content:encoded> </item> <item><title>By: skaldrom</title><link>http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/comment-page-1/#comment-3502</link> <dc:creator>skaldrom</dc:creator> <pubDate>Sat, 04 Feb 2012 15:38:00 +0000</pubDate> <guid
isPermaLink="false">http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/#comment-3502</guid> <description>Ja, durch dieses Tal des Leidens bin ich auch gegangen: Zuerst mit RegEx und viiiiiiiiiiiiielen &quot;ifs&quot;, bis es nur noch ein Chaos ist.
So &#252;ber den Daumen gepeilt denke ich, dass diese beiden Tools echt ideal sind f&#252;r Dein Use Case.</description> <content:encoded><![CDATA[<p>Ja, durch dieses Tal des Leidens bin ich auch gegangen: Zuerst mit RegEx und viiiiiiiiiiiiielen &#8220;ifs&#8221;, bis es nur noch ein Chaos ist.</p><p>So &#252;ber den Daumen gepeilt denke ich, dass diese beiden Tools echt ideal sind f&#252;r Dein Use Case.</p> ]]></content:encoded> </item> <item><title>By: Bountin</title><link>http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/comment-page-1/#comment-3501</link> <dc:creator>Bountin</dc:creator> <pubDate>Sat, 04 Feb 2012 13:39:00 +0000</pubDate> <guid
isPermaLink="false">http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/#comment-3501</guid> <description>Ich m&#246;chte f&#252;r ein Browsergame eine Skriptsprache entwickeln, mit der die Game Designer arbeiten k&#246;nnen ohne Kenntnisse von PHP zu haben, aber trotzdem relativ ungebunden sind. Zuerst habe ich an RegEx gedacht und angefangen damit zu arbeiten, aber schon nach kurzer Zeit haben sich Ausnahmen und Fehler geh&#228;uft. Dann bin ich auf dieses Blogeintrag gesto&#223;en und hab mir das mal angeschaut und ausprobiert.
W&#228;re es mit PHP_{Lexer,Parser}Generator m&#246;glich so eine Skriptsprache zu bauen oder gibt es vielleicht eine andere L&#246;sung (abgesehen von jedem Designer ein PHP Buch in die Hand zu dr&#252;cken und das Resultat durch eval() zu jagen)?
Vielleicht noch ein paar Worte zu dem Umfang der Skriptsprache: Es sollen die typischen Kontrollstrukturen vorhanden sein, sowie &quot;normales Rechnen&quot; (+-*/%) und vorallem das wichtigste: Vordefinierte Funktionen, die eine Art Wrapper f&#252;r Funktionen der bereits existierenden Klassenstruktur sind.</description> <content:encoded><![CDATA[<p>Ich m&#246;chte f&#252;r ein Browsergame eine Skriptsprache entwickeln, mit der die Game Designer arbeiten k&#246;nnen ohne Kenntnisse von PHP zu haben, aber trotzdem relativ ungebunden sind. Zuerst habe ich an RegEx gedacht und angefangen damit zu arbeiten, aber schon nach kurzer Zeit haben sich Ausnahmen und Fehler geh&#228;uft. Dann bin ich auf dieses Blogeintrag gesto&#223;en und hab mir das mal angeschaut und ausprobiert.</p><p>W&#228;re es mit PHP_{Lexer,Parser}Generator m&#246;glich so eine Skriptsprache zu bauen oder gibt es vielleicht eine andere L&#246;sung (abgesehen von jedem Designer ein PHP Buch in die Hand zu dr&#252;cken und das Resultat durch eval() zu jagen)?</p><p>Vielleicht noch ein paar Worte zu dem Umfang der Skriptsprache: Es sollen die typischen Kontrollstrukturen vorhanden sein, sowie &#8220;normales Rechnen&#8221; (+-*/%) und vorallem das wichtigste: Vordefinierte Funktionen, die eine Art Wrapper f&#252;r Funktionen der bereits existierenden Klassenstruktur sind.</p> ]]></content:encoded> </item> <item><title>By: skaldrom</title><link>http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/comment-page-1/#comment-3493</link> <dc:creator>skaldrom</dc:creator> <pubDate>Sat, 04 Feb 2012 20:01:00 +0000</pubDate> <guid
isPermaLink="false">http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/#comment-3493</guid> <description>Klingt Interessant, ich hab Dir gemailt.</description> <content:encoded><![CDATA[<p>Klingt Interessant, ich hab Dir gemailt.</p> ]]></content:encoded> </item> <item><title>By: OriginalCopy</title><link>http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/comment-page-1/#comment-3486</link> <dc:creator>OriginalCopy</dc:creator> <pubDate>Sat, 04 Feb 2012 23:48:00 +0000</pubDate> <guid
isPermaLink="false">http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/#comment-3486</guid> <description>Das ist mir bewu&#223;t, deshalb habe ich mich auch in der Anfrage nur auf 3 Symbole beschr&#228;nkt: T_VARIABLE, &#039;=&#039; und &#039;;&#039; (naja und es w&#228;re noch T_WHITESPACE, das ignoriert werden kann, ist aber ein kleines Detail). Mich w&#252;rde nur die Vorgehensweise interessieren (versuche gerade einen PHP-Subset von nur 10 Tokentypen zu schreiben), nicht das komplette AST f&#252;r PHP (was eh in Zend/zend_language_parser.y steht).</description> <content:encoded><![CDATA[<p>Das ist mir bewu&#223;t, deshalb habe ich mich auch in der Anfrage nur auf 3 Symbole beschr&#228;nkt: T_VARIABLE, &#8216;=&#8217; und &#8216;;&#8217; (naja und es w&#228;re noch T_WHITESPACE, das ignoriert werden kann, ist aber ein kleines Detail). Mich w&#252;rde nur die Vorgehensweise interessieren (versuche gerade einen PHP-Subset von nur 10 Tokentypen zu schreiben), nicht das komplette AST f&#252;r PHP (was eh in Zend/zend_language_parser.y steht).</p> ]]></content:encoded> </item> <item><title>By: skaldrom</title><link>http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/comment-page-1/#comment-3484</link> <dc:creator>skaldrom</dc:creator> <pubDate>Sat, 04 Feb 2012 17:09:00 +0000</pubDate> <guid
isPermaLink="false">http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/#comment-3484</guid> <description>Das ist nicht so einfach. Um den Parsebaum zu erstellen, brauchst Du die EBNF von PHP.
Die Funktion token_get_all() verwendet eigene Tokenwerte, die mit dem im Parser generierten nicht identisch sind. Man m&#252;sste sie also synchronisieren.
Einen PHP-Parser in PHP zu erstellen ist ein aufw&#228;ndigeres Projekt, bitte hab Verst&#228;ndniss, dass ich das nicht mal so nebenher machen kann...</description> <content:encoded><![CDATA[<p>Das ist nicht so einfach. Um den Parsebaum zu erstellen, brauchst Du die EBNF von PHP.</p><p>Die Funktion token_get_all() verwendet eigene Tokenwerte, die mit dem im Parser generierten nicht identisch sind. Man m&#252;sste sie also synchronisieren.</p><p>Einen PHP-Parser in PHP zu erstellen ist ein aufw&#228;ndigeres Projekt, bitte hab Verst&#228;ndniss, dass ich das nicht mal so nebenher machen kann&#8230;</p> ]]></content:encoded> </item> <item><title>By: OriginalCopy</title><link>http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/comment-page-1/#comment-3482</link> <dc:creator>OriginalCopy</dc:creator> <pubDate>Sat, 04 Feb 2012 15:33:00 +0000</pubDate> <guid
isPermaLink="false">http://blog.oncode.info/2007/10/25/eine-eigene-programmiersprache-erschaffen-lexer-und-parser-in-php/#comment-3482</guid> <description>Wie w&#252;rde man den Lexer schreiben m&#252;ssen, sodass er eigentlich Tokens aus dem Stream token_get_all() zur&#252;ckliefert?
Ist es m&#246;glich, ohne die Verwendung von PHP_LexerGenerator, dies zu implementieren? Bitte einen Beispiel, der von der Eingabe &#039;&lt;?php $foo = $bar;&quot; ausgehend, einen Parsebaum erstellt.</description> <content:encoded><![CDATA[<p>Wie w&#252;rde man den Lexer schreiben m&#252;ssen, sodass er eigentlich Tokens aus dem Stream token_get_all() zur&#252;ckliefert?</p><p>Ist es m&#246;glich, ohne die Verwendung von PHP_LexerGenerator, dies zu implementieren? Bitte einen Beispiel, der von der Eingabe &#8216;&lt;?php $foo = $bar;&quot; ausgehend, einen Parsebaum erstellt.</p> ]]></content:encoded> </item> </channel> </rss>
