2014-04-22 2 views
1

MediaWiki 마크 업 (Wikipedia 기사를 만들고 편집하는 데 사용 된 마크 업 언어)이 컨텍스트 프리인지 또는 상황에 맞는 것인지에 대해서는 의견이 분분합니다.Mediawiki 마크 업은 상황에 맞는 것입니까?

내가 그것을 분명히 상황에 맞는 것을 주장 http://www.mediawiki.org/wiki/User_talk:Kanor#Response_to_article_in_Meatball

참조하십시오. 한 가지 예는 wikimarkup lists의 터미널 문자입니다. 캐리지 리턴 표시된 목록 항목

* One thing 
* Another thing 
* Yet another thing 

단부 : 나열처럼 형성된다.

그러나 목록이 중첩 된 경우 (예 : 표 또는 중첩) 목록 항목의 은 캐리지 리턴 또는 표/중첩 끝 기호 일 수 있습니다.

{{Infobox person 
* One thing 
* Another thing 
* Yet another thing}} 

그러나, 파서가 상황, 예를 들어, 추적 할 필요가있다 : 예를 들어, 다음은 유효한 마크 업 될 것으로 보인다 최종 목록 항목의 을 결정할 때 최종 줄 (캐리지 리턴) 문자 대신에 }} 기호가 나타날 때 현재 중첩 내에 중첩되어 있다는 사실.

이렇게 ... 가능하면 이 아닌가요?은 상황에 맞는 것입니까?

+1

필자는 문맥에 민감하지 않습니다. 어쩌면 상태 머신이 더 나은 방법 일 것입니다. –

답변

4

"상황에 맞는"은 precise formal definition이며 사용자의 직감과 일치하지 않습니다. 첫 번째 문자에 따라 T (도트/느낌표) 이후에 무엇을 제공한다는 사실에도 불구하고, (T 정기적 경우에도 일반) 문법

S -> P | E 
P -> '(' T '.' ')' 
E -> '[' T '!' ']' 
T -> <any context-free grammar fragment> 

컨텍스트 무료 : 더 "상황이 아닌 터미널이 없습니다 "왼쪽에 있습니다. 심지어 임의의 중첩 문제가되지 않습니다 :

S -> A | B 
A -> '(' S ')' 
B -> '[' S ']' 

파서는 지금까지 본적이있다 교정기 타의 추종을 불허하는 개방 기억이 있지만, 그것은 문맥 자유/민감한 문법의 의미에서 컨텍스트를 필요로하지 않는다. 이 특정 문법은 심지어 (다시 공식적인 용어로, 당신이 링크하는 Wiki 사용자 페이지에서도 사용됨)이 아닙니다. 문맥 자유는 이 아닙니다.은 "파서가 작업 메모리를 필요로하지 않습니다"또는 "파서가 모든 단일 토큰을 완전하게 격리하도록 제한 될 수 있음"을 의미합니다.