2008-11-04 2 views
2

사용자가 규칙 엔진을 사용하여 작성한 AST와 동일한 기능을 제공합니다. 하지만 규칙 목록을 표시 할 때 각 규칙을 멋지게 인쇄 할 수 있어야합니다.누구나 "영어"로 된 예쁜 인쇄 규칙의 좋은 예를 가르쳐 줄 수 있습니까?

(and (contains "foo" "foobar") (equals 4 (plus 2 2))) 

사람이 읽을 수있는 방식으로 규칙을 표시하는 좋은 일을 한 프로그램에서 날 포인트 : 문자열로 표시 내부적 때이 S-표현처럼 그렇게 뭔가를 상상?

** 현지화가 필요하지만 추가 크레딧으로 남겨 둘 것입니다.

답변

1

ACE (Attempto Controlled English)를 개발중인 Attempto project을 확인하십시오. ACE를 사용하면 영어 하위 집합으로 규칙을 작성할 수 있습니다. 예 :

If "foo" contains "foobar" and "foobar" does not contain "foo" then 4 = 2 + 2. 

ACE 파서는 이러한 규칙을 담화 표현 구조 (DRS)라는 논리 형식으로 변환합니다. 위의 예는 다음과 같습니다.

[] 
    [A] 
    predicate(A, contain, string(foo), string(foobar))-1 
     NOT 
     [B] 
     predicate(B, contain, string(foobar), string(foo))-1 
    => 
    [] 
    formula(int(4), =, expr(+, int(2), int(2)))-1 

DRS를 ACE로 변환하는 DRS verbalizer라는 도구가 있습니다. 를 들어 DRS 위에 당신이 얻을 것이다 :

If "foo" contains "foobar" and it is false that "foobar" contains "foo" then 4 = (2 + 2). 

를 귀하의 경우에는, 당신은 (아주 솔직해야한다)가 DRS에 규칙 표현을 변환해야하고 당신이 직접 DRS의 verbalizer를 사용할 수 있습니다. 언급 된 도구는 available under the LGPL license입니다.

관련 문제