문법 규칙 실험실
한 줄에 한 개의 ::= 생성 규칙을 적고 따옴표 문자열·규칙 참조·| 대안·명시적 ε를 사용합니다. 테스트 문자열을 파싱해 최대 두 개의 서로 다른 유도 트리와 좌측 유도 단계를 보여 주며 짧은 문자열을 생성합니다. 직접·간접 좌재귀, 지원하지 않는 PEG/EBNF 연산자, 한도를 넘는 입력은 잘못된 판정을 하지 않고 명시 오류로 알립니다.
주요 기능
- 따옴표 리터럴을 사용해 최대 16개 규칙·48개 대안을 편집
- 전체 문자열을 파싱하고 두 유도 트리의 규칙·리터럴 범위 확인
- 파싱 실패 시 가장 멀리 진행한 위치와 기대한 리터럴 표시
- 파싱 전 직접·간접·빈 접두부 좌재귀 검사
- 짧은 고유 문자열 최대 20개 생성 후 클릭하여 재검사
사용 방법
- 한 줄에 Name ::= 표현식 규칙을 적거나 우재귀 예제를 불러옵니다.
- 테스트 문자열과 제한된 규칙 확장 깊이를 선택합니다.
- 파서를 실행해 수락·실패 위치 또는 두 모호성 증거를 확인합니다.
- 트리를 열고 시작 규칙에서 리터럴까지의 좌측 유도 과정을 따라갑니다.
- 생성 예제를 클릭해 파싱하거나 전체 로컬 JSON 보고서를 저장합니다.
활용 예시
- 우재귀 생성 규칙이 문자열을 만드는 과정 학습
- 모호한 입력에 대한 두 파스 트리 비교
- 하향식 파서를 만들기 전 간접 좌재귀 순환 찾기
자주 묻는 질문
BNF·EBNF·PEG 전체 문법을 지원하나요?
아니요. 따옴표 문자열, 규칙 이름, |, 명시적 ε만 지원하는 BNF형 부분집합입니다. 반복 연산자·술어·정규식 토큰·PEG 우선 선택은 허용하지 않습니다. |는 PEG 우선순위가 없는 문법 대안입니다.
좌재귀를 입력하면 어떻게 되나요?
직접·간접·빈 접두부 좌재귀 순환을 찾아 경로를 알려 줍니다. 이 범위가 정해진 하향식 파서는 해당 문법을 몰래 바꾸거나 지원하지 않습니다. Bison 같은 파서 생성기는 다른 알고리즘을 씁니다.
트리가 한 개면 문법의 모호성이 없다는 뜻인가요?
아니요. 선택한 깊이 안에서 해당 입력의 유도를 최대 두 개 보여 줍니다. 두 트리는 그 입력의 모호성을 증명하지만, 하나만 발견했다고 모든 입력이나 더 깊은 유도에 모호성이 없다고 증명하지는 않습니다.
생성 예제가 언어 전체인가요?
아니요. 너비 우선 탐색으로 일부 고유 예제를 보여 줍니다. 최대 20개, 출력 24자와 단계 상한이 있고 한도로 멈추면 잘림을 표시합니다.
빈 문자열도 문법에 넣을 수 있나요?
네. List ::= "a" List | ε처럼 ε를 대안 전체로 적으세요. 빈 따옴표나 비어 있는 대안은 의도를 명확히 하도록 거부합니다.
개인정보 안내
문법과 테스트 문자열은 브라우저 메모리에만 남습니다. 사용자 코드를 실행하거나 업로드하지 않으며 선택한 JSON 다운로드에는 원본 문법과 입력이 포함됩니다.
댓글과 질문