0

我正在寻找创建自己的自定义域特定语言来输出 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 输出。还有其他建议吗?

4

5 回答 5

1

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

于 2009-07-26T04:15:24.100 回答
0

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

于 2009-07-26T04:20:23.700 回答
0

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

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

非常适合您的需要。

于 2009-07-29T07:05:47.030 回答
0

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

于 2010-01-13T02:48:52.207 回答
-1

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

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

然后我会使用 XSLT 将 XML 转换为 HTML。通过这种方式,它将呈现与解析解耦。

于 2009-07-26T04:17:59.027 回答