Zur Boardunity Forenstartseite
  #1  
Alt 28.02.2004, 13:22
Benutzerbild von exe
exe exe ist offline
titellos
 
Registriert seit: 07.2003
Ort: München
Beiträge: 888

PHP4 / Tokenizer Funktionen


Moin,

ich schlage mich gerade mit den Tokenizer Funktionen von PHP rum. Das Funktioniert prinzipiell auch recht gut. Nur taucht bei mir nun folgendes Problem auf: nachdem ich via token_get_all() eine Liste aller Token in einem PHP Sourcefile erstellt habe möchte ich diese durchgehen, ein paar der Token bearbeiten und eine Ausgabe des Sourcecodes mit farbig hervorgehobenen Token erstellen, also praktisch ein gewöhnliches Syntaxhighlighting. Das Problem ist jetzt das alle Token, die keine Schlüsselwörter oder Operatoren sind, als T_STRING deklariert werden. Das heisst mein Syntaxhighlighter stellt Funktionsnamen, Konstanten, Objekteigenschaften und variable Strings gemeinsam in der Stringfarbe dar, was nicht Sinn der Sache sein kann.
Meine Frage ist nun was ich falsch gemacht haben könnte denn ich kann mir nicht vorstellen das dies das normale Verhalten der token_get_all() Funktion ist, zumal beispielsweise für Konstanten eine eigene Definition (T_CONST) besteht.
Ich benutze PHP 4.3.3 als mod_php unter Apache 1.3.29 und Debian Linux 3.0/unstable.
  #2  
Alt 28.02.2004, 14:00
Benutzerbild von Michael Przybyla
Mitglied
 
Registriert seit: 02.2003
Beiträge: 184
Dieses Verhalten ist absolut gerechtfertigt.

Es heisst ja "Parser Tokens" frei übersetzt also "Syntax Merkmale/Zeichen".

Und "function tralala() {}" ist ja kein Merkmal, denn allein das Wort "function" ist ja ein Merkmal bzw. ein Hinweis damit der Parser weiss, was er als nächstes zu tun hat.

Wenn du beispielsweise den Funktionsnamen haben willst, dann könntest du ja mit next(), prev() usw. arbeiten und somit den Funktionsnamen anhand des Indexes ermitteln, denn dieser verbirgt sich meist 2 "Steinwürfe" weit von diesem entfernt.

Nebenbei: Editoren mit Syntax highlighting arbeiten genauso.
Und mit "const" ist nicht das hier gemeint
-> "define('WHAT', 'nana', true)"
sondern dies hier
-> function tralala() { const $i; }

  #3  
Alt 28.02.2004, 14:05
Benutzerbild von exe
exe exe ist offline
titellos
 
Registriert seit: 07.2003
Ort: München
Beiträge: 888
Schade, ich dachte Dinge wie Funktionsnamen und Konstanten würden gesondert gekennzeichnet werden.
Naja, dann muss ich eben, wie du schon sagtest, ein paar Routinen schreiben die prüfen ob ein String ein Textstring, Funktionsname oder was auch immer ist.

Antwort


Stichworte
-

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ist PHP5 langsamer als PHP4 rellek Programmierung und Datenbanken 11 26.07.2004 16:19
Brauch ein einfaches Board mit vielen Funktionen!! boardy Entscheidungshilfe 12 21.07.2004 13:14






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24