AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Automaten in Source Code

Ein Thema von Christian18 · begonnen am 20. Nov 2009 · letzter Beitrag vom 1. Dez 2009
 
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: Automaten in Source Code

  Alt 22. Nov 2009, 04:09
Zitat von SebE:
Spricht du brauchst einen Scanner/Lexer -> dann kommst du ja auch nicht um deine Case-Anweisung.
Äh..Doch: Ein Scanner benötigt kein CASE. Ein Scanner implementiert einen NDEA. Du meinst aber eher soetwas:
Delphi-Quellcode:
Var
  SymbolClass : Array [Char] Of TSymbol;
Entsprechend befüllen, fertig. Dann einfach 'Symbol[CurrentChar]' nehmen und freuen, wie einfach das Leben sein kann.

Zitat von SebE:
(zwar groß, aber schnell).
Wer primär auf Nanosekunden schaut, hat noch nicht kapiert, worum es beim Programmieren geht.

Zitat von SebE:
die Quellcodes tun das, was ich von ihnen verlangt habe (Delphi 7 PE)
Ja, aber Du findest einen Fehler nicht so leicht. Hast Du meine denn gefunden? Du verwendest zudem zig mal den gleichen Code (case..of '0'..'9'). Das ist doch überflüssig und verstößt eben gegen Grundprinzipien der sauberen Programmierung.
Aber ich gebe zu, bei so keinen Geschichten ist ein Mini-DEA wirklich nett anzusehen (wenn man das nochmal sauberer hinbekommt) und ausreichend.

Zitat von SebE:
Wer erzeugt die Zustände denn dann?
Jede State-Klasse wäre dann dafür zuständig für jede Symbolklasse einen Folgezustand zu definieren.

Zitat von SebE:
Im Beispiel wurde nur der Startzustand erzeugt!
Nö.
 State := State.NextState; Was macht denn diese Zeile?
Zitat von SebE:
-> Meine Frage lautete: erzeugt der Startzustand SEINEN NextState automatisch?
Nein, nur wenn man ihn darum bittet ('NextState')

Zitat von SebE:
(entspricht nicht meinem Gedanken von Überschaulichkeit)
Aber Du hast doch noch gar keine Ahnung von Interfaces, Klassen usw. Wie willst Du dir denn dann ein Urteil erlauben?

Zitat:
Ich versteh nicht wieso man beim Case den gesamten Code durchdenken
Hast Du den Fehler denn gefunden? Man tippt so viel und irgendwo vertippt man sich. Tippt man weniger, weil man sich z.B. nicht wiederholt, vertippt man sich auch nicht so oft. Ist doch logisch, oder?
Mein Code ist wesentlich weniger fehleranfällig, schneller einsatzbereit (weil weniger Zeilen), wiederverwendbar, allgemeingültig, robust und leichter verständlich (Als DEA). Deiner nicht. In deinem Code ist es viel leichter möglich, einen Fehler einzubauen (siehe mein Beispiel). Er ist nicht für einen ähnlichen DEA verwendbar, sondern muss komplett neu geschrieben werden. Viel Spass, wenn der DEA auch Buchstaben oder Zahlen à la '1,234E+99' verarbeiten soll.

Eine DEA-Tabelle ist natürlich kryptisch. Das stimmt.

Bleib halt bei deinen CASE-Konstrukten und -vor allen Dingen- kodiere Parser, Scanner, Lexer und DEA per Hand.

Zitat von jfheins:
Wenn man das mit so einer Tabelle machen würde, ...
Dafür ist es dann für alle Eingaben 100% korrekt und man muss sich keine Gedanken mehr machen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz