Ich werde ein Programm machen, das einen algebraischen Ausdruck analysieren kann.
Zum Beispiel:
<?php echo cal ('5*5+2*2'); ?>
Mein Programm wird wissen, dass es 5 mit 5 multipliziert und 2 mit 2 zuerst, dann plus sie. Ich möchte es selbst analysieren, nicht per php.Wie man einen algebraischen Ausdruck analysiert
Antwort
Sie können den 'infix'-Ausdruck verwenden und einen Stapel verwenden, um ihn in einen' Präfix 'oder' Postfix'-Ausdruck umzuwandeln, um die Reihenfolge der Operation zu bestimmen (Klammerung, Potenzierung, Multiplikation oder Division, Addition oder Subtraktion).
Zum Beispiel würde der Ausdruck ([5] [*] [5] [+] [2] [*] [2]) in die Postfix-Expression transformiert [5] [5] [*] [2] [2] [*] [+]. Dieser 'Postfix'-Ausdruck kann nun als' fünf und fünf multipliziert, zwei und zwei multipliziert und dann addiert 'interpretiert werden, wodurch die Reihenfolge der Operationen erhalten bleibt.
Eine andere Möglichkeit, an die 'Präfix/Postfix'-Idee zu denken, ist die von mehreren Stapeln. Wenn du auf die Nummer 5 stößt, drücke sie auf den primären Stapel. Wenn Sie auf das Multiplikationssymbol stoßen, speichern Sie es im Sekundärstapel. Wenn du zu den nächsten 5 kommst, drücke sie auf den primären Stapel, dann platziere alle Gegenstände von deinem sekundären Stapel und schiebe sie auf deinen primären Stapel.
Sobald Sie die Operatoren und Operanden in der richtigen Reihenfolge haben, müssen Sie die Elemente vom Stapel entfernen und sie dann auswerten.
Ich erinnere mich, herauszufinden, dieses Problem in meinem Computer Science 102 Kurs in der Schule. Machst du das aus Spaß oder versuchst du es herauszufinden?
Ich würde vorschlagen, dass Sie auf recursive descent parsers schauen, aber anscheinend haben sich die Dinge bewegt, seit ich das letzte Mal in den mittleren 1980er Jahren getan habe. Es scheint, dass ein Parsing Expression Grammar der Weg ist, jetzt zu gehen, wenn Sie die Theorie dahinter verstehen wollen.
Wenn Sie sich nicht weniger über die Theorie kümmern könnte, das ist in Ordnung: die Theorie der Umsetzung bedeutet, dass Sie gehen einen rekursiven Abstieg Parser sowieso am Ende zu schreiben, so können Sie genau das tun :-)
- 1. Wie man einen Videostream analysiert
- 2. Wie man Text analysiert
- 3. Wie analysiert man einen Verzeichnisbaum in Python?
- 4. Wie analysiert man Programmlaufzeit
- 5. wie man eine Baumdatenstruktur analysiert?
- 6. Wie erstellt man einen ToJSON/FromJSON-Eintrag für einen algebraischen Datentyp mit mehreren Konstruktoren ohne Argumente?
- 7. Wie analysiert man Aggregationspipeline-Ergebnisse?
- 8. Wie man SOAP XML analysiert?
- 9. Wie man einen regulären Ausdruck bekommen
- 10. Wie passt man einen "Übereinstimmung" -Ausdruck an?
- 11. Wie man einen regulären Ausdruck schreiben
- 12. Wie man einen symbolischen Ausdruck in Matlab
- 13. Wie analysiert man einen JSON-String in Delphi?
- 14. Linsenpaket mit algebraischen Typen
- 15. Eigenschaften in algebraischen Datentypen
- 16. Wie man Vorlagensprachen in Ragel analysiert?
- 17. Wie analysiert man Daten in GWT?
- 18. Java: Wie man ein Datum streng analysiert?
- 19. Wie kann ich einen Ausdruck in einen anderen Ausdruck einschließen?
- 20. Wie analysiert man den Quellcode von Blender
- 21. Wie analysiert man JSON-Gezeiteninformationen von worldtides.info?
- 22. Wie analysiert man den Befehlsbaum in C++?
- 23. Wie analysiert man Daten mit REGEXP_SUBSTR?
- 24. Wie man JET/ACE SQL analysiert
- 25. Wie man XML mit ShellScript syntaktisch analysiert?
- 26. Wie analysiert man HTTP-Header mit libcurl?
- 27. Wie analysiert man HTTP-Header mit Bash?
- 28. wie man den Kommentar analysiert und anzeigt
- 29. Wie analysiert man eine spärliche Adjazenzmatrix?
- 30. Wie man ein Stundenformat in c analysiert?
Ähnliche Fragen: http://stackoverflow.com/questions/2093138/what-ist-algorithmus-for-parsing-expressions-in-infix-notation – PleaseStand
Finden Sie die Antworten für http://StackOverflow.com/ Fragen/3772821/Whats-ein-einfache-Wege-der-Dinge-macht-in-php auch gut. – Matthew