2009-07-26 2 views
0

HTML을 출력하는 고유 한 사용자 지정 도메인 전용 언어를 만들려고합니다.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

저는 개인적으로이 경우 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>); 
} 

에 적합합니다.

1

Python Lex-Yacc을 사용해보세요. 나는 과거의 일부 학업 실험을 위해 그것을 사용했고, 그것은 잘 작동했다.

-1

나는 XML을 생성 할 수있는 도구를 찾아 (또는 내 자신의 쓰기) 것 :

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

그때 HTML에 XML을 변환하는 XSLT를 사용합니다. 그런 식으로 프리젠 테이션을 파싱과 분리합니다.

+0

HTML! = 프레젠테이션. 그런 의미에서 XML로 변환 한 다음 XSLT를 사용하여 XML을 HTML로 변환 할 필요가 없습니다. 실질적인 이익이없는 불필요한 추가 단계처럼 보입니다. –

+0

현명한 접근 방법은 설문지를 실제 또는 가상 파스 트리로 구문 분석하는 파서가 필요합니다. 그런 다음 트리를 방문하여 HTML을 생성합니다. 중간 표현에 XML을 사용하고 HTML 생성자로 XSLT를 사용하는 것이 좋습니다. 필요한 경우 외부 파일을 피하기 위해 XML 표현이 메모리에있을 수 있습니다. 텍스트 템플릿 (http://msdn.microsoft.com/en-us/library/bb126445.aspx)은 HTML을 생성하는 또 하나의 훌륭한 도구입니다. 제 의견으로는 HTML을 코드에 삽입하는 것이 훨씬 바람직하지 않습니다. –

0

ANTLR은 StringTemplate과 결합하여 HTML을 출력 할 수 있습니다. this lab에서 Terence는 ANTLR과 StringTemplate을 함께 사용하는 방법을 보여줍니다.

0

이클립스 프로젝트에서 TMF Xtext를 사용하는 것은 매우 간단하며 M2T Xpand와 함께 사용하면 쉽게 목표를 달성 할 수 있습니다.

관련 문제