希望创建输出HTML的自定义域特定语言

时间:2009-07-26 04:13:23

标签: html code-generation antlr

我正在寻找创建自己的自定义域特定语言来输出HTML。

基本上,我希望能够使用自己的标记创建测验,但将其编译/生成为HTML。例如:

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

应输出

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

我知道ANTLR做了类似的事情,但没有HTML输出。还有其他建议吗?

5 个答案:

答案 0 :(得分:1)

您可以尝试使用Python Lex-Yacc。我过去曾经用过一些学术实验,而且效果很好。

答案 1 :(得分:0)

ANTLR可以与StringTemplate结合输出HTML。在this lab中,Terence演示了如何一起使用ANTLR和StringTemplate。

答案 2 :(得分:0)

我个人认为在这种情况下你不需要antlr。你可以简单地使用一些String.split来实现这一点。例如,给定'&gt;'和'*'是保留字,

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>);
}

很适合你的需要。

答案 3 :(得分:0)

我喜欢使用Eclipse项目中的TMF Xtext,它非常简单,与M2T Xpand结合使用可以轻松实现目标。

答案 4 :(得分:-1)

我会寻找一个可以生成XML的工具(或编写我自己的工具):

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

然后我会使用XSLT将XML转换为HTML。通过这种方式,它将表示与解析分离。