-
Notifications
You must be signed in to change notification settings - Fork 0
Home
heartleth edited this page Oct 8, 2023
·
7 revisions
Welcome to the Lan wiki!
Lan
은 읽기 쉬운 메타문법입니다.
lan 문장들.txt --spec lan파일.lan --dict dictionary파일.dic [--multiline] [--strictws]
PART main
# 주석, 구문 중간부터 주석은 안됨.
# 품사의 인자들은 반드시 양옆에 띄어쓰기를 해야 함.
# 규칙들의 이름은 중복 가능.
RULE 규칙이름 $품사 $품사( 인자1 인자2 ... ) $품사
# 말단품사는 --dict로 지정된 .dic파일에서 정의함.
RULE 규칙이름 *말단품사 말단기호-이름
# <-<, -, >-> 은 각각 한 줄의 시작, 공백들(공백, 탭, 개행, 캐리지리턴), 한 줄의 끝을 의미함.
RULE 규칙이름 <-< - >->
# @N:M은 N번째 말단품사의 M번째 속성을 가리킴.
RULE 규칙이름 *말단품사 $품사( @0:0 )
# 말단품사 뒤에 [:N=...] 혹은 [:N!=...] 을 써서 N번째 속성이 ...인 (이 아닌) 어휘만 지정할 수 있음 기본값은 0임.
RULE 규칙이름 *말단품사[:0=hello]
# 앞에 ?를 붙이면 해당 구절은 생략 가능함.
RULE 규칙이름 $품사1 ?$품사2
# 위 한 줄은 아래 두 줄과 같다.
RULE 규칙이름 $품사1 $품사2
RULE 규칙이름 $품사1
# 앞에 =>를 붙이면 해당 구절은 0번 이상 반복될 수 있음.
# 앞에 |>를 붙이면 해당 구절은 1번 이상 반복될 수 있음. |>$P는 $P =>$P 와 같음.
# |>와 =>가 붙은 구절은 맨 뒤에 있어야 함.
RULE 규칙이름 |>$품사
RULE 규칙이름 $품사1 =>$품사2
# 여러번 반복되는 부분은 SET으로 줄일 수 있음. ?를 붙여 선택적으로 만들거나 반복하거나 조건을 지정할 수는 없음.
SET 생략기호이름 *a *b *c *d
RULE 규칙이름 $품사 %생략기호이름 $품사
END
PART 품사
# :N 은 N번째 인자를 가리킴. 모든 인자의 기본값은 0임.
# 인자로 인자를 전달할 수 있음.
RULE 품사이름 $품사1( :0 )
# 0번째 인자가 0이라면 안쪽 규칙들이 활성화됨. ELSE문은 없음.
IF :0 0
RULE ...
...
END
# 0번째 인자가 hello가 아니라면 안쪽 규칙들이 활성화됨.
UNLESS :1 hello
RULE ...
...
END
# 구절 앞에 [:N=...] 혹은 [:N!=...]을 붙여 IF또는 UNLESS문을 간략화할 수 있음. ?, |>, =>와 함꼐 사용될 수 없음.
RULE 품사이름 $품사1 [:0=1]$품사2
# 위 한 줄은 아래 여섯 줄과 같다.
IF :0 1
RULE 품사이름 $품사1 $품사2
END
UNLESS :0 1
RULE 품사이름 $품사1
END
END
PART 품사
# 주석, 구문 중간부터 주석은 안됨.
단어1
단어2
단어3
단어4 속성1
단어5 속성1 속성2 ...