2013-09-02 2 views
1

나는 Irony을 사용하여 상당히 간단한 파서를 만들려고하고 있지만 아이러니가이 특별한 경우에 적합하지 않을 수도 있다는 결론에 도달했습니다.아이러니에서 공백 종결 자 & MakePlusRule

server_name example.com *.example.com www.example.*; 

server_name www.example.com ~^www\d+\.example\.com$; 

server_name ~^(?<subdomain>.+?)\.(?<domain>.+)$; 

을 내가 난

var serverNamevalue = new FreeTextLiteral("serverNameValue", FreeTextOptions.None, " ", ";"); 

터미네이터로 공백이나 세미콜론 중 하나와 FreeTextLiterals을 사용하고 있습니다 :

내가 구문 분석하는 데 노력하고있어의 예입니다 다음 MakePlusRule을 사용하여 하나 이상의 server_name 값을 선택하십시오.

httpCoreServerName.Rule = "server_name" + httpCoreServerNameItems + semicolon; 
httpCoreServerNameItems.Rule = MakePlusRule(httpCoreServerNameItems, serverNamevalue); 

그러나 필자는 생각합니다. 이 경우 FreeTextLiteral의 종료 문자로 공백 문자를 사용합니다. 이걸 실행할 때 파서 오류가 발생합니다. 공백 문자를 다른 특정 문자로 바꾸어 터미네이터 역할을하는 경우 (그리고 MakePlusRule을 호출 할 때이 문자를 구분 기호로 추가하십시오.) 제대로 작동합니다.

아이러니하게 처리 할 수있는 사람이 있습니까?

답변

1

Roman Ivantsov (Irony 개발자)가 FreeTextLiterals와 함께 세미콜론을 사용할 때 파서에 문제가 있음을 확인한 Irony project on Codeplex에이 질문을 게시했습니다.

로마인이이 문제를 고치거나 수정했습니다. 최신 소스를 다운로드하여 문제가 해결되었는지 확인할 수 있습니다.