AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Lexikalischer Scanner

Ein Thema von Alaitoc · begonnen am 28. Okt 2008 · letzter Beitrag vom 5. Nov 2008
Antwort Antwort
Seite 1 von 2  1 2      
Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#1

Lexikalischer Scanner

  Alt 28. Okt 2008, 11:39
Hallo zusammen,

ich will nen Parser selbst programmieren, jedoch habe ich bisher kein Codebeispiel für einen
Lexer gefunden. Ich kann mir zwar vorstellen wie er in etwa funktioniert, jedoch wäre ein
Codebeispiel überaus praktisch um einen Anfang zu haben.
Vll. hat da ja wer was?

MfG Alaitoc
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#2

Re: Lexikalischer Scanner

  Alt 28. Okt 2008, 12:04
Hallo,

ich habe mich mal daran versucht:

http://www.delphipraxis.net/internal...ighlight=lexer

Vielleicht hilft es dir ja.

Ansonsten ist hier einiges, auch leichtverständliches, dazu zu finden:

http://www.u-helmich.de/

Daran habe ich mich einigermaßen angelehnt, was den Lexer betrifft. Mit den weiteren Schritten, wie Parser usw. habe ich mich nicht mehr näher beschäftigt, weil ich nicht mehr so viel Freizeit hatte.
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Lexikalischer Scanner

  Alt 28. Okt 2008, 12:29
http://flex.sourceforge.net/ leider in c
oder JLex das gleiche in Java (vermutlich leichter zu verstehen)
Besucht doch mal meine Homepage
  Mit Zitat antworten Zitat
Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Lexikalischer Scanner

  Alt 28. Okt 2008, 13:16
Schonmal Danke für die schnelle Antwort,
werde mal schauen ob ichs damit hinkrieg.

MfG Alaitoc
  Mit Zitat antworten Zitat
Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Lexikalischer Scanner

  Alt 29. Okt 2008, 09:56
So hab den Scanner grundlegend hinbekommen, jedoch wie genau soll ich das scannen?

2x+3+3-4+2ab

bedeutet ja eigentlich:

2*x+3+3-4+2*a*b

Wie sage ich dem Scanner am Besten wie ich die * hinzufügen soll?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Lexikalischer Scanner

  Alt 29. Okt 2008, 13:54
Ich denke nicht, dass das den Scanner etwas angeht . Den würde ich
Code:
... PLUS NUM(2) VAR("a") VAR("b")
zurückliefern lassen, um die versteckte Multiplikation soll sich der Parser kümmern. (Hab mal angenommen, dass Variablennamen nur aus einem Zeichen bestehen dürfen).
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#7

Re: Lexikalischer Scanner

  Alt 30. Okt 2008, 07:41
Zitat von Alaitoc:
So hab den Scanner grundlegend hinbekommen, jedoch wie genau soll ich das scannen?

2x+3+3-4+2ab

bedeutet ja eigentlich:

2*x+3+3-4+2*a*b

Wie sage ich dem Scanner am Besten wie ich die * hinzufügen soll?
Kommt drauf an, was das werden soll. Bei einer Programmier- oder Scriptsprache würde ich die vollständige Schreibweise (mit *) zwingend erwarten. Alles andere ist ein fehlerhafter Ausdruck. Für eine mathematischen Parser, hmm, vielleicht nicht.
  Mit Zitat antworten Zitat
HERMES

Registriert seit: 29. Nov 2004
142 Beiträge
 
#8

Re: Lexikalischer Scanner

  Alt 31. Okt 2008, 10:47
Hier gibt es eine Delphiübersetzung von Lex/Yack

http://delphiwiki.de/wiki/index.php?title=SRLexYacc

Bei Ausdrücken wie 2ab hast du das Problem, dass er nicht eindeutig ist, es sein denn du lässt nur einstellige Variblennamen zu. In dem Beispiel könntest du die Variablen a, b, ab haben und falls Variablen auch mit Zahlen beginnen dürften auch noch 2ab.

Wenn du das an Parser deligieren willst, musst du aber wissen, dass es sich um mehrere Tokens handelt und das geht in dem fall nur mit einstelligen Tokens und somit auch nur mit einstelligen Bezeichnern. Damit ist auch eine Verwendung von "++" beispielsweise ausgeschlossen.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#9

Re: Lexikalischer Scanner

  Alt 31. Okt 2008, 11:51
Zitat von HERMES:
Wenn du das an Parser deligieren willst, musst du aber wissen, dass es sich um mehrere Tokens handelt und das geht in dem fall nur mit einstelligen Tokens und somit auch nur mit einstelligen Bezeichnern. Damit ist auch eine Verwendung von "++" beispielsweise ausgeschlossen.
Hm? Wenn ich Variablen auf ein Zeichen beschränke, hat das doch keinen Einfluss auf den restlichen Lexer.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#10

Re: Lexikalischer Scanner

  Alt 31. Okt 2008, 12:45
Zitat von Khabarakh:
Hm? Wenn ich Variablen auf ein Zeichen beschränke, hat das doch keinen Einfluss auf den restlichen Lexer.
Stimmt. Wenn du als Vorgabe jedoch nur einstellige Variablen, die dann aus einem Buchstaben bestehen müssen (Zahlen fallen aus, weil die du ja auch mehrstellig benötigen wirst und die meisten Sonderzeichen fallen aus, weil du die evtl. als Operator brauchst), dann kannst du maximal 26 verschiedene Variablen haben. Mehr Buchstaben hat das Alphabet nicht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz