TIP 구문 탭은 A) 오타 검증, B) 문법 검증으로 나뉘며, 조건과 메시지를 항목별로 제공합니다.
3-A 오타 검증
| 검출 대상 | 조건 | 메시지 | 예외/비고 |
| 포트 형식 오류 |
I/M/O/Q/B + 6자리 16진수 불일치 |
잘못된 포트 형식: {값} |
:xxx, =xxx 접미 무시 |
| 포트 개수 불일치 |
equip 쉼표 수 ≠ 동일 이름 rule 헤더 쉼표 수 |
포트 개수 불일치: rule=X, equip=Y |
- |
| 예약어 오타 |
줄 시작 토큰이 예약어와 유사(Levenshtein ≤ 2)이나 불일치 |
예약어 오타: {token} → {suggestion} |
해당 라인은 일부 문법/누락 스위치 검사 제외 |
3-B 문법 검증
| 검출 대상 | 조건 | 메시지 | 예외/비고 |
| 중괄호 짝 오류 |
키워드 줄 이후 { 없음, 새 키워드 전 } 미닫힘, 파일 끝까지 미닫힘 |
{keyword} 닫힌/열린 중괄호가 없음 |
- |
| 텍스트 라인 시작 문자 오류 |
rule/alarm 블록 외 라인의 공백 제외 첫 문자가 [A-Za-z{}] 아님 |
텍스트 라인 시작 문자 오류 |
- |
| 괄호(()) 불일치 |
alarm/rule/port/equip 옆 여닫이 수 불일치 |
{keyword} 괄호 불일치: 열린괄호 X개, 닫힌괄호 Y개 |
- |
| 세미콜론 누락 |
특수 키워드(alarm/rule/area/{/})나 vmode 키워드가 아닌 라인이 ;로 끝나지 않음 |
세미콜론(;) 없음 |
- |
| alarm 할당식 포맷 오류 |
VAR=[TOKEN]; 또는 VAR; 형태가 아님 |
대괄호 오류 '[스위치];' 형태 필요 |
- |
| rule 블록 내 대괄호 불완전 |
[ / ] 개수 불일치 또는 매칭 쌍 없음 |
대괄호 오류 미완성 |
- |
| 연산자 인접/조합 오류 |
인접: ++, --, +=, ==, *-, =*, +- / 조합: ! 뒤에 +/−/=/* |
연산자 붙음/조합 오류: '…' |
- |
| rule 등식 좌우 검증 |
좌측: 사용된 알람명, 첫 area 내 port, rule 헤더 3번째 이후 파라미터명 / 우측: rule 3번째 이후 파라미터 + 들여쓰기 0 레벨 port |
rule 등식 좌/우측 오류: '{word}'는 사용할 수 없습니다 |
- |
| area/equip 1·2번째 파라미터 유효성 |
1·2번째 파라미터가 0 이상 실수가 아님 |
area/equip 첫번째/두번째 파라미터 오류 |
- |
| alarm 헤더 파라미터 유효성 |
개수 ≠ 1·2, 첫 번째 ≠ '1'/'2', 두 번째 ∉ {화재, 경보, 주의, 가스} |
alarm 파라미터 개수/첫번째/두번째 파라미터 오류 |
- |
| area 전용 중괄호 구조 오류 |
들여쓰기 레벨별 area와 {/} 균형 불일치 |
area 열린/닫힌 중괄호가 없음 -err N |
- |
| 아날로그 rule의 '주의' 라인 포맷 |
rule 헤더 첫 파라미터에 '아날로그' 포함 시, 블록 내 '주의' 우변이 %{rule_3번째_파라미터키}로 시작하지 않음 |
아날로그 '주의' 라인 포맷 오류 |
- |
| '축적' 단어와 rule 2번째 파라미터 일관성 |
2번째 파라미터 > 0 → 블록 내용에 '축적' 포함 필요 / '축적' 존재 → 2번째 파라미터 > 0 필요 |
"축적 시간이 0보다 큽니다. '축적'을 추가" / "'축적' 단어가 있습니다. 축적 시간을 0보다 크게 설정" |
- |