구문 다이어그램

Syntax diagram

구문 다이어그램(또는 철도 다이어그램)은 문맥이 없는 문법을 표현하는 방법이다.그래프는 백커스-나우르 양식, EBNF, 증강 백커스-나우르 양식 및 기타 텍스트 기반 그래머를 금속구로서 그래픽으로 대체한 것이다.구문 다이어그램을 이용한 초기 책에는 니클라우스 위스[1](47페이지에서 시작하는 일람표)가 쓴 '파스칼 사용자 설명서'와 버러우스 CANDE 설명서 등이 있다.[2]컴파일 분야에서는 대개 BNF나 그 변종과 같은 텍스트 표현이 선호된다.BNF는 텍스트 기반이며 컴파일러 작성자와 파서 생성자가 사용한다.철도 다이어그램은 시각적이며, 때로는 그래픽 설계에 통합되어 일반인이 더 쉽게 이해할 수 있다.JSON 데이터 교환 형식을 정의하는 표준 출처는 이러한 다이어그램의 인기 있는 현대적 사용의 또 다른 예를 제공한다.

구문 다이어그램의 원리

문법의 표현은 구문 도표의 집합이다.각 도표는 비단어를 정의한다.언어를 다음과 같은 방법으로 정의하는 주 도표가 있다: 언어에 속하기 위해서는 단어가 주 도표에 경로를 설명해야 한다.

각 다이어그램에는 진입점과 끝점이 있다.도표는 다른 비터미널과 단자를 거치면서 이 두 지점 사이의 가능한 경로를 설명한다.역사적으로 터미널은 원형 박스와 직사각형 박스에 의한 비터미널로 표현되었지만 공식적인 표준은 없다.

우리는 다양한 문법 형식의 산술적 표현을 예로 든다.

BNF:

<>expression>.::=<>term>,<>term>,"+"<>expression>,<>term>.::=<>factor>,<>factor>,"*"<>term>,>factor>.::=<>constant>, <, variable>,"("<>expression>,")"<>variable>.::)")""y""z"<>constant>.::=<>digit>,<>digit>,<>constant>, <, digit>.::"0""1"=. "2""3""4""5""6""7""8""9".

EBNF:

표현= 용어, [ "+" , 표현]; 용어= 요소, [ "*" , 용어]; 요소= 상수의  가변적  "(" , 표현, ")"; 가변적= "x"   "Y"   "z";  상수의= 숫자를 매기다, { 숫자를 매기다}; 숫자를 매기다= "0"   "1"   "2"   "3"   "4"   "5"   "6"   "7"   "8"   "9"; 

ABNF:

표현 = 용어 ["+" 표현] 용어       = 요소 ["*" 용어] 요소     = 상수의 / 가변적 / "(" 표현 ")" 가변적   = "x" / "Y" / "z" 상수의   = 1*숫자를 매기다 디지트      = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" 

ABNF는 DIGIT = %x30-39와 같은 범위도 지원하지만 다른 예와의 일관성을 위해 여기서는 사용되지 않는다는 점에 유의하십시오.

빨간색(프로그래밍 언어) 구문 분석:

식: [용어 선택사항 ["+" 식] 용어: ["*" 용어] 요인: [변수(") 표현 ""] 변수: ["x" "y" "z"] 상수: [몇 자리 수] 숫자: ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9"] 

이 형식은 또한 범위(예: 숫자: charset [#"0" - #"9")를 지원하지만 다른 예와의 일관성을 위해 여기서는 사용되지 않는다는 점에 유의하십시오.

예시 그래머에 대한 가능한 구문 다이어그램은 다음과 같다.텍스트 기반 그래머에 대한 구문은 다르지만, 금속 언어이기 때문에 모든 그래머에 대한 구문 다이어그램이 동일할 수 있다는 점에 유의하십시오.

"Railroad" syntax diagram

참고 항목

참조

참고: 첫 번째 링크는 도메인 외부의 서버에 의해 차단되기도 하지만 archive.org에서 사용할 수 있다.이 파일도 standardpascal.org에서 미러링되었다.

외부 링크