2009-07-26 5 views
0

Ich freue mich, meine eigene benutzerdefinierte domänenspezifische Sprache zu erstellen, die HTML ausgibt.Suchen, benutzerdefinierte domänenspezifische Sprache zu erstellen, die HTML ausgibt

Grundsätzlich möchte ich in der Lage sein, Quiz mit meinem eigenen Markup zu erstellen, aber das in HTML kompiliert/generiert haben. Zum Beispiel:

> What is your favorite color? 
* Blue 
* Green 
* Red 

ausgeben sollte

<form action="" method="post"> 
<ul> 
    <li>What is your favorite color?</li> 
    <input type="radio" name="q1" answer="a" /> Blue <br /> 
    <input type="radio" name="q1" answer="b" /> Green <br /> 
    <input type="radio" name="q1" answer="c" /> Red <br /> 
</ul> 

Ich weiß, dass ANTLR macht etwas Ähnliches es aber nicht über eine HTML-Ausgabe. Irgendwelche anderen Vorschläge?

Antwort

0

Ich persönlich denke, dass Sie in diesem Fall nicht antlr brauchen. Sie können einfach ein paar String.split verwenden, um dies zu erreichen. Zum Beispiel gegeben ‚>‘ und ‚*‘ Worte sind reserviert,

String[] questions = text.split(">"); 
for(String question: questions){ 
    String[] item = question.split("*"); 
    System.out.println("<ul>); 
    System.out.println("<li>" + item[0] + "</li>"); 
    for(int i = 1; i<item.length; i++){ 
     System.out.println("<input type=\"radio\" name=\"q1\" answer=\"" + i + "\" />" + item[i] + "<br />); 
    } 
    System.out.println("</ul>); 
} 

Anzüge Ihr Bedarf einfach gut.

1

Sie könnten versuchen, Python Lex-Yacc zu verwenden. Ich habe es in der Vergangenheit für einige akademische Experimente verwendet, und es hat gut funktioniert.

-1

Ich würde nach einem Werkzeug (oder meine eigenen schreiben), die XML generieren könnte:

<question text="What is you favorite color?"> 
    <choice text="Blue"/> 
    <choice text="Green"/> 
    <choice text="Red"/> 
</question> 

Ich würde dann XSLT verwenden, um die XML-Daten in HTML zu transformieren. Auf diese Weise entkoppelt es die Präsentation von der Analyse.

+0

HTML! = Präsentation. In diesem Sinne ist es sinnlos, dies in XML zu übersetzen und dann das XML mithilfe von XSLT in HTML umzuwandeln. Scheint wie ein unnötiger zusätzlicher Schritt ohne wirklichen Nutzen. –

+0

Jeder sinnvolle Ansatz erfordert einen Parser, der den Fragebogen in einen echten oder virtuellen Parse-Baum zerlegt. Das HTML wird dann generiert, indem der Baum besucht wird. Ich schlage lediglich vor, XML für die Zwischendarstellung und XSLT als HTML-Generator zu verwenden. Bei Bedarf kann die XML-Darstellung im Speicher vorhanden sein, um externe Dateien zu vermeiden. Textvorlagen (http://msdn.microsoft.com/en-us/library/bb126445.aspx) ist ein weiteres nettes Werkzeug zum Generieren von HTML. Meiner Meinung nach ist das Einbetten von HTML in Code viel weniger wünschenswert. –

0

ANTLR kann mit StringTemplate gekoppelt werden, um HTML auszugeben. In this lab demonstriert Terence mit ANTLR und StringTemplate zusammen.

0

Ich mag TMF Xtext von Eclipse Projekt verwenden, es ist sehr einfach und in Kombination mit M2T Xpand kann leicht Ihr Ziel erreichen.