我正在寻找创建自己的自定义域特定语言来输出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输出。还有其他建议吗?
答案 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。通过这种方式,它将表示与解析分离。