2014-04-15 2 views
1

ACE overview on creating syntax highlighters의 '상태 정의'섹션에서 토큰 정의에 merge: true 매개 변수가 포함됩니다. 그러나 나는 이것이 무엇을하는지에 대한 설명을 찾을 수 없다. 그 목적은 무엇입니까? 예로부터토큰의 병합 매개 변수는 무엇을합니까?

발췌 :

this.$rules = { 
    "start" : [ { 
     token : "text", 
     merge : true, 
     regex : "<\\!\\[CDATA\\[", 
     next : "cdata" 
    }, 
    "cdata" : [ { 
     token : "text", 
     regex : "\\]\\]>", 
     next : "start" 
    }, { 
     token : "text", 
     merge : true, 
     regex : "\\s+" 
    }, { 
     token : "text", 
     merge : true, 
     regex : ".+" 
    } ] 
}; 
이 시행 착오를 파악

답변

2

: 토큰에 truemerge 속성을 설정 토큰의 원인이됩니다 토큰 목록에 둘 다 토큰을 다음과 같이 병합 할 UI DOM에서 렌더링 된 span으로 표시되지만 다음 토큰도 동일한 토큰 유형으로 평가되는 경우에만 표시됩니다. I의 화합물 SQL은 IS NULLIS NOT NULL 토큰 병합이가 사용하고, 다음과 같은 규칙에

을 3 개 토큰 [is + (대) + null, 또는 5 개 토큰 [is + (공백) + not + (공백) + null]이 단일 토큰으로 병합됩니다. is 다음에 not 또는 null과 같은 다른 것이 있으면 해당 무언가는 유효하지 않은 것으로 표시됩니다. 이전 토큰이 여전히 merge 모드 인 경우에도 다음 토큰에 대한 결과 토큰 클래스 (invalid)가 다르므로 병합되지 않습니다.

this.$rules = { 
    "start": [{ 
     token : "keyword.operator", 
     regex: "[iI][sS]\\b", 
     merge: true, 
     next: "is_keyword" 
    }], 
    "is_keyword": [ 
     { 
      token: "keyword.operator", 
      regex: "\\s+", 
      merge: true 
     }, { 
      token: "keyword.operator", 
      regex: "[nN][oO][tT]\\b", 
      merge: true 
     }, { 
      token: "keyword.operator", 
      regex: "[nN][uU][lL][lL]\\b", 
      next: "start" 
     }, { 
      token: "invalid", 
      regex: ".+", 
      next: "start" 
     } 
    ] 
}; 
관련 문제