# Eigene Scriptsprache



## TheCreeper202 (3. Apr 2012)

hi
wisst ihr wie man einen interpreter für eine eigene scriptsprache erstellen kann der soll das dann in html umwandeln
z.B. 
	
	
	
	





```
<#firewood
paragraph("Hallo!");
#>
```
wird zu

```
<html><head></head><body><p>Hallo!</p></body></html>
```
weiß irgendjemand wie das geht
TheCreeper202

vlt so:

```
public class FirewoodFile {
    public String paragraph(String text) {
        return "<p>"+text+"</p>"
    }
}
```


----------



## Tobse (3. Apr 2012)

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 (3. Apr 2012)

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 (3. Apr 2012)

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.


----------



## Landei (3. Apr 2012)

Bevor du dich an sowas versuchst, schau dir mal Template-Engines wie Velocity oder FreeMarker an.


----------



## TheCreeper202 (3. Apr 2012)

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 (3. Apr 2012)

Zunächst, wenn du folgenden ScriptCode hast:

```
<#firewood
paragraph("Hallo!");
#>
```
und sowas bei rauskommt

```
<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:

```
<p>
 <a>
  <span>Info</span>
  Text
 </a>
 <div> ... </div>
</p>
```
Dann wird das mit firewood zieeemlich kritisch.

Schau dir das mal in PHP an:

```
<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 (3. Apr 2012)

du hast rech also z.B.

```
<#firewood write("Hallo Welt!"); #>
```

also

```
<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 (3. Apr 2012)

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 (4. Apr 2012)

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 (4. Apr 2012)

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.


----------



## TheCreeper202 (4. Apr 2012)

ich bin aber noch lange nicht an der uni und kann erst in 2 jahren info wählen also gibt's davon ein openbook oder so


----------



## Marcinek (4. Apr 2012)

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 (4. Apr 2012)

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 (4. Apr 2012)

gibt's denn ne möglichkeit so nen eigenen html tag zu parsen 
	
	
	
	





```
<xxx yyy="zzz"></xxx>
```


----------



## Marcinek (4. Apr 2012)

Ja die gibt es, die Lösung hast du selber gepostet.


----------



## Tobse (4. Apr 2012)

Sicher gibts die, die Browser könnens ja auch. Simples XML, ist bei Java mit dabei.


----------



## TheCreeper202 (4. Apr 2012)

```
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 (4. Apr 2012)

klick mich!


----------



## TheDarkRose (4. Apr 2012)

Warum lernst du nicht einfach PHP, installierst dir xampp und fertig?


----------



## TheCreeper202 (4. Apr 2012)

ich hab php kenntnisse eine suchmaschine geschrieben aber wegen iis geblockt wohl ichs deinstalliert hab

@Tobse
cooler link 



TheCreeper202 hat gesagt.:


> wisst ihr wie man das verwendet?



hallo? antwort?


----------



## Tobse (4. Apr 2012)

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.


----------



## TheCreeper202 (4. Apr 2012)

ok sorry ey


----------



## Marcinek (4. Apr 2012)

Hallo, bitte lerne wie man ein Forum benutzt.

Das wird hier langfristig nix werden.


----------



## Tomate_Salat (4. Apr 2012)

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.


----------



## TheCreeper202 (4. Apr 2012)

ich habs gecheckt
γιαο


----------

