Eigene Scriptsprache

TheCreeper202

Bekanntes Mitglied
hi
wisst ihr wie man einen interpreter für eine eigene scriptsprache erstellen kann der soll das dann in html umwandeln
z.B.
Code:
<#firewood
paragraph("Hallo!");
#>
wird zu
Code:
<html><head></head><body><p>Hallo!</p></body></html>
weiß irgendjemand wie das geht
TheCreeper202

vlt so:
Java:
public class FirewoodFile {
    public String paragraph(String text) {
        return "<p>"+text+"</p>"
    }
}
 

Tobse

Top Contributor
Einen interpreter schreiben ist keine hopplahopp angelegenheit. Ausserdem gibts schon sooo viele Sprachen wie PHP dafür, dass es echt nichtmehr nötig ist, noch eine zu erstellen. Ausserdem erkenne ich in deinem Entwurf schon 2 grobe designfehler, lass es besser ;)
 

Lumaraf

Bekanntes Mitglied
Ich würde dabei erstmal versuchen einen Parser dafür zu schreiben bzw aus einer Grammtik einen generieren zu lassen. Mit SableCC oder JavaCC geht das mit etwas Übung ziemlich schnell von der Hand.

Anhand von dem Syntaxbaum den man daraus bekommt kann man dann auch ganz einfach einen Interpreter/Bytecode-Compiler dazu schreiben.

Alternativ könntest du versuchen mit einem RegExp alles durchzugehen und zu verarbeiten.
 

HoaX

Top Contributor
Regex is da die falsche Wahl, denn man kommt zu schnell an einen Punkt wo man stecken bleibt.

Besorg dir das "Drachenbuch", das kannst du in jeder Uni-Bib ausleihen, ist das Standardwert schlecht hin, und in der neuen Ausgabe sind die Beispiele auch in Java.
 

TheCreeper202

Bekanntes Mitglied
ich hab so ne kleine methode getHTMLCode(String firewoodCode) da kommt der firewood (name der sprache) code rein und der html code raus (immer nur eine zeile) da hab ich schon 3 befehle ist sowas mit parser gemeint?

@Tobse
was meinst du mit design fehler

die sprache soll dann auf meinem firewood web server localhost:22222 laufen ach ja und
@Lumaraf
fällt dir nix ein???
 

Tobse

Top Contributor
Zunächst, wenn du folgenden ScriptCode hast:
Code:
<#firewood
paragraph("Hallo!");
#>
und sowas bei rauskommt
Code:
<html><head></head><body><p>Hallo!</p></body></html>

Dann stellen sich mir da 3 fragen: Wie soll den HTML-Code JE jemand lesen können? Und viel wichtiger, wie soll der Programmiere einen Doctype festlegen, den Header verändern usw..? Und wenn ich in das p-Tag noch andere Sachen reinhaben will, z.B sowas:
Code:
<p>
 <a>
  <span>Info</span>
  Text
 </a>
 <div> ... </div>
</p>
Dann wird das mit firewood zieeemlich kritisch.

Schau dir das mal in PHP an:
Code:
<html>
 <head>
  <!--- ->
 </head>
 <body>
  <p>
   <?php echo "Hello World"; ?>
  </p>
 </body>
</html>
Hast du 1. ne saubere ausgabe und 2. ist es auch im quellcode übersichlicher.
 

TheCreeper202

Bekanntes Mitglied
du hast rech also z.B.
Code:
<#firewood write("Hallo Welt!"); #>

also
Code:
<html>
  <head>
  </head>
  <body>
    <p><#firewood write("Hallo Welt!");#></p>
  </body>
</html>

aber das wichtigste sind ja variablen wie soll das gehn???

*gähn* ich guck morgen noch mal vorbei also immer schön antworten :)
 

HoaX

Top Contributor
Wenn du es wirklich so weit treiben willst, dann lies das von mir empfohlene Buch, da steht alles drin was wichtig ist. Ein Forum ist der falsche Ort das alles zu erklären, bei konkreten Unklarheiten kannst ja dann wieder nachfragen.
 

Lumaraf

Bekanntes Mitglied
Insofern es ausreicht nur Variablenersetzungen durchzuführen könnte man das relativ einfach mit ein paar Zeilen Code und Regulären Ausdrücken lösen. Deine Beispiele sehen für mich aber danach aus das du deutlich mehr als das machen willst. In dem Fall wirst du dich erstmal in einen Parsergenerator und eine Bytecodebibliothek einarbeiten müßen.
 

Tobse

Top Contributor
Wenn du nichtmal ne idee hast, wie du das mit den Variablen regelst, lass es echt besser gleich. Das ist nämlich das kleinste problem wenns an methodenaufrufe, parameterüberagbe etc geht.
 
M

Marcinek

Gast
Wieso machst du etwas, was dich total überfordert und haust dann jede frage in ein Forum. Wir können dir hier zu deinem selbst gestellten über dimensionierten Problem nicht alles vor kauen! Nein dafü gibt es kein ebook aber 70 € für das Buch lohnen sich echt. Aber das Buch behandelt kein Java. Es zeigt Beispiele in Java aber glaube nicht, dass es dich glücklich machen wird.

Kannst du nicht mit einem Taschenrechner anfangen oder so?
 

hemeroc

Bekanntes Mitglied
Das Entwickeln eigener Sprachen ist alles andere als einfach und du solltest einiges an Verständnis für Programmiersprachen und Compiler/Interpreter im allgemeinen mitbringen.
Ich habe im Rahme einer Lehrveranstaltung eine relativ simple Programmiersprache entwickelt und das Fach war nicht besonders einfach. Wie es an der Uni recht typisch ist muss man sich viel selbst beibringen falls es dich interessiert hier ist die Angabe von dem Semester, der Schwierigkeitsgrad steigt relativ angenehm. Übersetzerbau VU Übungsskriptum
Mit ist natürlich klar, dass du keinen Zugang zu den angegebenen Servern hast und auch das Skriptum nicht hast aber mit der Angabe und Google kommt man sehr weit.
In jedem Fall aber rate ich dir vorher etwas zu dem Thema zu lesen, das vorgeschlagene Buch ist schon mal nicht schlecht.
Liebe Grüße
Hemeroc
 

TheCreeper202

Bekanntes Mitglied
Java:
public String parse(String code) {
    String mcode = code.replaceAll("//", "</p>");
    StringBuilder sb = new StringBuilder();
    sb.append(mcode);
    sb.append("</p>");
    return sb.toString();
}
kann man das parser nennen?

das macht //Hallo zu <p>Hallo</p>

wisst ihr wie man das verwendet?

ich hab noch was das hat zwar nix damit zutun aber wie programmiert man in java einen installer für ein java programm was in den autostart gebunden werden soll
 

Tobse

Top Contributor
Jaaa, jetzt wirds aber echt frech hier. Hallo? MACH MAL WAS WIR SAGEN! Lern PHP, damit biste 100% besser dran.

Btw: ich weiss nicht, wie man das verwendet.
 
T

Tomate_Salat

Gast
Das hier noch keiner drauf hingewießen hat:

@TheCreeper207:
Es gibt soetwas wie einen "Edit-Button". Du brauchst keine doppel- &trippelposts erstellen.

Wenn es dir um Tag-Parsen geht, dann schau dir xml+xslt+xpath an. Das könnte u.U. schon reichen. Ansonsten: wozu eine neue Sprache erfinden? Mit PHP oder anderen bestehenden Sprachen bist du wesentlich besser dran.
 

Ähnliche Java Themen


Oben