26|프로그래밍 언어의 구문·BNF·파스 트리·형식 언어

글 요약

사무자동화산업기사 – 프로그래밍 언어의 식별자·키워드·예약어·연산자·주석과 BNF·EBNF·구문 도표·파스 트리, 형식 문법 계층과 정규 표현을 정리합니다.

프로그래밍 언어로 작성한 문장은 아무 문자나 임의의 순서로 나열한다고 만들어지지 않습니다. 각 언어는 사용할 수 있는 문자와 단어, 문장을 결합하는 규칙을 정해 두며 번역기는 이 규칙에 따라 소스 코드가 올바른지 분석합니다.

이 장에서는 프로그래밍 언어의 구문을 구성하는 문자 집합·식별자·연산자·키워드·예약어·주석·구분 문자를 정리합니다. 이어 BNF·EBNF·구문 도표·파스 트리의 관계를 예제로 살펴보고, 형식 언어의 문법 계층과 정규 표현의 위치까지 연결합니다.

이 장의 핵심 내용

  • 어휘 분석은 문자에서 식별자·키워드·리터럴·연산자·구분자 등의 토큰을 만듭니다.
  • 구문 분석은 토큰의 배열이 문법 규칙에 맞는지 확인하고 문장의 계층 구조를 구성합니다.
  • 식별자는 변수·함수·클래스 등의 이름이며 언어별 명명 규칙을 따라야 합니다.
  • 키워드는 문법상 특별한 의미를 가진 단어이고 예약어는 일반 식별자로 사용할 수 없도록 확보한 단어입니다.
  • BNF는 비단말 기호를 단말·비단말 기호의 조합으로 정의하는 형식 표기법입니다.
  • EBNF는 반복·생략·묶음을 더 간결하게 나타내도록 BNF를 확장합니다.
  • 구문 도표는 문법 규칙을 흐름도로 표현하고 파스 트리는 특정 문장의 유도 구조를 표현합니다.
  • 형식 문법은 Type 0·1·2·3으로 구분되며 Type 2는 문맥 자유 문법, Type 3은 정규 문법입니다.
  • 정규 표현은 정규 언어의 문자열 패턴을 기술하며 유한 오토마타와 연결됩니다.

프로그래밍 언어의 구문은 무엇인가?

프로그래밍 언어의 구문(Syntax)은 올바른 프로그램 문장을 만드는 형식 규칙입니다. 소스 코드는 먼저 문자 흐름에서 의미 있는 토큰으로 나뉘고, 이후 토큰의 배열이 문법 규칙에 맞는지 분석됩니다.

분석 단계입력주요 작업출력
어휘 분석문자의 연속공백·주석을 처리하고 식별자·키워드·리터럴·연산자·구분자를 인식토큰의 연속
구문 분석토큰의 연속문법 규칙에 따라 토큰의 구조와 결합 순서를 확인파스 트리 또는 구문 구조
의미 분석구문 구조자료형·선언·사용 범위·연산 의미의 타당성을 확인의미가 부여된 구조
어휘 분석기는 문자를 토큰으로 묶고, 구문 분석기는 토큰을 문법 구조로 묶습니다.

어휘 규칙의 질문

  • total은 하나의 식별자인가?
  • 123은 숫자 리터럴인가?
  • +=는 하나의 연산자인가?
  • 공백과 주석은 토큰 경계에 어떤 영향을 주는가?

구문 규칙의 질문

  • 대입문의 왼쪽에 식별자가 올 수 있는가?
  • 연산자 양쪽에 피연산자가 있는가?
  • 괄호와 블록의 시작·끝이 맞는가?
  • 문장이 시작 기호에서 유도되는가?

핵심 흐름: ‘문자 → 토큰 → 문법 구조 → 의미 확인’의 순서로 프로그램을 분석합니다.

언어의 구문 요소에는 무엇이 있는가?

언어의 구문 요소에는 문자 집합·식별자·연산자·핵심어·예약어·주석·구분 문자·잡음어 등이 있습니다. 실제 언어 명세에서는 식별자·키워드·리터럴·연산자·구분자 등을 토큰으로 분류하고, 공백과 주석은 토큰 경계를 정하거나 분석 과정에서 제거하는 입력 요소로 다루기도 합니다.

구문 요소의미예시주의점
문자 집합프로그램 작성에 사용할 수 있는 문자와 부호의 집합영문자, 숫자, 한글, 특수 문자허용 문자와 인코딩은 언어별로 다름
식별자
Identifier
변수·함수·클래스 등에 붙이는 이름total, studentCount키워드·예약어와 같은 이름을 사용할 수 없는 경우가 많음
리터럴
Literal
소스 코드에 직접 적은 고정된 값10, 3.14, "ABC"자료형별 표기 규칙을 따름
연산자
Operator
산술·비교·논리·대입 등의 연산 기호+ - * / == && =우선순위와 결합 방향을 확인
키워드
Keyword
언어 문법에서 특별한 의미를 가진 단어if, while, class문맥에 따라 키워드가 되는 언어도 있음
예약어
Reserved Word
일반 식별자로 사용할 수 없도록 확보한 단어return, switch키워드와 예약어의 범위가 항상 같지는 않음
주석
Comment
코드의 의도와 설명을 기록하는 부분// 설명일반적으로 실행 의미에서 제외됨
구분 문자
Separator
문장이나 구성 요소의 경계를 표시하는 기호( ) { } [ ] , ;언어별 분류가 다를 수 있음
잡음어
Noise Word
추가 정보보다 가독성과 자연스러움을 높이는 단어문장형 업무 언어의 보조 단어모든 언어가 별도 범주로 사용하지는 않음
토큰의 명칭과 세부 분류는 언어마다 다를 수 있습니다.

키워드와 예약어: 키워드는 문법적 의미에 초점을 둔 개념이고, 예약어는 식별자로 사용할 수 없다는 제한에 초점을 둔 개념입니다. 많은 언어에서는 두 집합이 크게 겹치지만 항상 동일하다고 단정할 수는 없습니다.

하나의 문장은 어떤 토큰으로 나뉘는가?

total = price * count + 100; // 배송비 추가
입력 부분토큰 종류역할
total식별자계산 결과를 저장할 변수
=대입 연산자오른쪽 결과를 왼쪽 변수에 저장
price식별자가격을 나타내는 변수
*산술 연산자가격과 수량을 곱함
count식별자수량을 나타내는 변수
+산술 연산자배송비를 더함
100정수 리터럴코드에 직접 작성한 값
;구분 문자문장의 끝을 표시
// 배송비 추가주석계산 의도를 설명

좋은 주석: 코드 자체를 그대로 반복하기보다 해당 처리의 이유·제약·주의점을 설명하는 편이 유지보수에 유용합니다.

BNF는 문법을 어떻게 정의하는가?

BNF(Backus–Naur Form)는 프로그래밍 언어의 문맥 자유 문법을 형식적으로 표현하는 대표적인 표기법입니다. 왼쪽의 비단말 기호가 오른쪽의 단말·비단말 기호 조합으로 어떻게 만들어지는지를 생성 규칙으로 정의합니다.

표기의미
::=왼쪽 비단말 기호를 오른쪽 표현으로 정의<문장> ::= <대입문>
|여러 생성 규칙 중 하나를 선택<항> ::= <식별자> | <숫자>
< >추가 규칙으로 다시 정의되는 비단말 기호<표현식>
따옴표로 묶은 기호실제 입력에 나타나는 단말 기호"=", "+"
BNF 표기 관례는 문서와 도구에 따라 조금씩 달라질 수 있습니다.
<대입문> ::= <식별자> "=" <표현식> 
<표현식> ::= <항> | <표현식> "+" <항>  
<항> ::= <식별자> | <숫자> 
<식별자> ::= "x" | "a"
<숫자> ::= "0" | "1" | "2" | "3"
  • <대입문>·<표현식>·<항>은 비단말 기호입니다.
  • x·a·3·=·+는 단말 기호입니다.
  • |는 오른쪽의 대안 중 하나를 선택한다는 의미입니다.
  • 시작 기호에서 생성 규칙을 반복 적용하여 실제 문장을 유도합니다.

이 BNF는 등호 왼쪽에 식별자를 두고, 오른쪽에 하나 이상의 항으로 이루어진 표현식을 배치하는 대입문의 구조를 정의합니다. <표현식>은 하나의 <항>이 되거나 다시 <표현식> + <항>으로 확장될 수 있으므로 x = a, x = 3, x = a + 3과 같은 문장을 만들 수 있습니다. 이 예제에서는 식별자를 xa, 숫자를 0부터 3까지만 정의했으므로 그 밖의 문자와 숫자는 별도의 생성 규칙을 추가하지 않는 한 사용할 수 없습니다.

BNF의 목적: 문법을 자연어 설명이 아니라 명확한 생성 규칙으로 정의하는 것입니다.

EBNF는 BNF를 어떻게 확장하는가?

EBNF(Extended Backus–Naur Form)는 반복·생략·묶음과 같은 구조를 더 간결하게 표현하도록 BNF를 확장한 표기법입니다. 괄호와 반복 기호의 정확한 의미는 표준이나 문서마다 다를 수 있으므로 해당 문서가 제시한 규칙을 먼저 확인해야 합니다.

교재 기준 표기의미
{ }안의 요소를 0회 이상 반복<문자> { <문자> | <숫자> }
[ ]안의 요소를 생략하거나 한 번 사용[ "+" | "-" ] <숫자>
( )여러 요소를 하나의 단위로 묶음( <항> | <숫자> ) → 묶인 대안 중 하나를 선택
|대안 중 하나를 선택<문자> | <숫자>
다른 EBNF 규격은 *, +, ? 등의 기호를 사용할 수 있습니다.
<대입문> ::= <식별자> "=" <항> { "+" <항> } [ ";" ]
<항> ::= <식별자> | <숫자>
<식별자> ::= <문자> { <문자> | <숫자> }

BNF의 반복 표현

별도의 비단말 기호와 재귀 규칙을 만들어 반복을 표현합니다.

EBNF의 반복 표현

{ } 등의 확장 기호를 사용해 반복 구조를 한 줄로 표시할 수 있습니다.

이 EBNF는 BNF의 재귀 규칙을 반복과 선택 기호로 간결하게 표현한 예입니다. 대입문에는 식별자·등호·항이 반드시 한 번씩 나타나며, { "+" <항> }+ 항을 0회 이상 반복할 수 있음을 뜻합니다. [ ";" ]은 문장 끝의 세미콜론을 생략하거나 한 번 사용할 수 있음을 나타냅니다. 또한 식별자는 문자로 시작하고 그 뒤에 문자 또는 숫자를 반복할 수 있으므로 x, total, count1과 같은 이름을 만들 수 있습니다. 단, <문자><숫자>가 실제로 어떤 문자를 포함하는지는 별도의 생성 규칙에서 정의해야 합니다.

구문 도표는 문법을 어떻게 그림으로 표현하는가?

구문 도표(Syntax Diagram)는 BNF나 EBNF의 생성 규칙을 상자·원·화살표로 표현한 그래픽 표기법입니다. 시작 지점에서 화살표를 따라 끝까지 이동할 수 있는 경로가 문법상 허용되는 토큰 순서를 나타냅니다.

도형·기호표현 대상의미
사각형비단말 기호다른 문법 규칙을 참조하는 구성 요소
원 또는 둥근 도형단말 기호실제 입력에 나타나는 키워드·연산자·리터럴
화살표흐름 방향문법 요소를 읽고 결합하는 순서
분기 경로선택여러 대안 중 한 경로를 선택
되돌아가는 경로반복특정 요소를 여러 번 사용

읽는 방법: 식별자와 등호 뒤에 항이 한 번 나타나고, 필요하면 ‘+ 항’을 반복할 수 있는 대입문을 나타냅니다.

이 구문 도표는 식별자와 등호 뒤에 항을 하나 배치한 다음, 필요에 따라 + 항을 반복하는 대입문의 흐름을 나타냅니다. 첫 번째 항에서 바로 끝으로 이동하면 x = a와 같은 문장이 되고, 반복 경로를 한 번 이용하면 x = a + 3, 여러 번 이용하면 x = a + 3 + 2와 같은 문장이 됩니다. 시작 지점에서 화살표를 따라 끝까지 도달할 수 있는 토큰의 순서가 문법에서 허용되는 문장입니다. 이 도표에서는 + 항의 반복 구조에 집중하기 위해 EBNF 예제의 선택적 세미콜론 [ ";" ]은 생략했습니다.

파스 트리는 문장의 구조를 어떻게 보여주는가?

파스 트리(Parse Tree)는 입력 문장이 문법의 시작 기호에서 어떤 생성 규칙을 거쳐 만들어졌는지를 트리로 표현한 것입니다. 루트에는 시작 기호, 내부 노드에는 비단말 기호, 잎 노드에는 실제 입력을 구성하는 단말 기호가 놓입니다.

  • 루트 노드는 문법의 시작 기호인 <대입문>입니다.
  • 비단말 노드는 생성 규칙을 적용할 때마다 자식 노드로 확장됩니다.
  • 잎 노드를 왼쪽에서 오른쪽으로 읽으면 x = a + 3이 됩니다.
  • 하나의 문장에 서로 다른 파스 트리가 만들어지면 문법이 모호할 수 있습니다.

이 파스 트리는 문장 x = a + 3이 앞에서 정의한 BNF의 생성 규칙에 따라 만들어지는 과정을 보여줍니다. 루트 노드인 <대입문><식별자>, 등호, <표현식>으로 확장되고, 왼쪽 식별자는 x가 됩니다. 오른쪽 표현식은 <표현식> + <항>으로 확장되며, 각각 식별자 a와 숫자 3으로 변환됩니다. 트리의 잎 노드를 왼쪽에서 오른쪽으로 읽으면 원래 입력 문장인 x = a + 3이 완성됩니다.

트리 안에 <표현식>이 두 번 나타나는 것은 중복 오류가 아니라 재귀적인 생성 규칙을 적용했기 때문입니다. 바깥쪽 표현식은 전체 a + 3을 나타내고, 안쪽 표현식은 덧셈의 왼쪽 부분인 a를 나타냅니다. 이처럼 시작 기호에서 생성 규칙을 적용해 입력 전체를 단말 기호까지 유도할 수 있으면 해당 문장은 문법에 맞게 작성된 것으로 판단할 수 있습니다.

파스 트리

문법 규칙을 적용한 단말·비단말 구조를 자세히 표시합니다.

추상 구문 트리

구분자 같은 세부 노드를 줄이고 의미 분석에 필요한 핵심 연산 구조를 표현합니다.

혼동 주의: 구문 도표는 문법 규칙 자체를 나타내고, 파스 트리는 특정 입력 문장의 유도 결과를 나타냅니다.

형식 언어는 무엇인가?

형식 언어(Formal Language)는 유한한 기호 집합인 알파벳과 형식 문법을 사용하여 정확하게 정의한 문자열의 집합입니다. 어떤 문자열이 언어에 포함되는지를 문맥적 해석이 아니라 형식 규칙으로 판정합니다.

구성 개념의미
알파벳문자열을 만드는 유한한 기호의 집합Σ = {0, 1}
문자열알파벳의 기호를 유한한 순서로 나열한 것0101
빈 문자열길이가 0인 문자열ε
언어정해진 조건이나 문법을 만족하는 문자열의 집합짝수 개의 1을 포함하는 이진 문자열 집합
문법언어의 문자열을 생성하는 형식 규칙시작 기호와 생성 규칙
형식 문법은 시작 기호에서 생성할 수 있는 모든 단말 문자열의 집합을 정의합니다.

이 예제에서는 알파벳Σ = {0, 1}로 정의하므로 문자열01만 사용하여 만들 수 있습니다. 0101은 알파벳의 기호를 유한한 순서로 나열한 문자열이고, ε는 문자가 하나도 없는 길이 0의 빈 문자열입니다.

언어는 이러한 문자열 전체가 아니라 특정 조건이나 문법을 만족하는 문자열만 모은 집합입니다. 표에서 제시한 언어는 1의 개수가 짝수인 이진 문자열의 집합입니다. 따라서 ε01이 0개이므로 포함되고, 1101011이 각각 2개이므로 포함됩니다. 반면 1, 01, 111처럼 1의 개수가 홀수인 문자열은 이 언어에 포함되지 않습니다.

문법은 이러한 언어에 속하는 문자열을 생성하는 형식 규칙입니다. 시작 기호에서 생성 규칙을 반복 적용하여 만들 수 있는 모든 단말 문자열을 모으면 그 문법이 정의하는 형식 언어가 됩니다.

유한과 무한: 정규 표현이나 문법 자체는 유한하게 작성되지만, 그 규칙이 나타내는 언어에는 무한히 많은 문자열이 포함될 수 있습니다.

형식 문법의 계층 구조는 어떻게 구분되는가?

형식 문법은 생성 규칙에 허용되는 제약의 정도에 따라 Type 0부터 Type 3까지 구분합니다. 번호가 커질수록 생성 규칙은 더 제한적이고 이를 인식하는 계산 모델은 더 단순해집니다.

유형문법·언어규칙의 특징대표 인식 모델주요 연결
Type 0무제한 문법
재귀 열거 언어
생성 규칙의 형식에 가장 적은 제한튜링 기계일반적인 계산 가능성
Type 1문맥 의존 문법
문맥 의존 언어
주변 문맥에 따라 비단말 기호를 치환선형 한정 오토마타문맥 조건을 포함한 언어
Type 2문맥 자유 문법
문맥 자유 언어
규칙의 왼쪽이 하나의 비단말 기호푸시다운 오토마타프로그래밍 언어의 주요 구문
Type 3정규 문법
정규 언어
선형 형태로 제한된 생성 규칙유한 오토마타토큰 패턴과 어휘 분석
포함 관계는 일반적으로 Type 3 ⊂ Type 2 ⊂ Type 1 ⊂ Type 0입니다.

어휘 분석과 Type 3

식별자·숫자·연산자 등의 토큰 패턴은 정규 표현과 유한 오토마타로 처리하는 경우가 많습니다.

구문 분석과 Type 2

중첩 괄호와 재귀적인 문장 구조는 문맥 자유 문법으로 표현하고 파서가 분석합니다.

시험 연결: Type 0–튜링 기계, Type 1–선형 한정 오토마타, Type 2–푸시다운 오토마타, Type 3–유한 오토마타를 함께 기억합니다.

정규 표현은 형식 언어에서 어떤 역할을 하는가?

정규 표현(Regular Expression)은 정규 언어에 속하는 문자열 패턴을 간결하게 기술하는 형식 표기입니다. 컴파일러의 어휘 분석에서는 식별자·숫자·공백·연산자 등의 토큰 패턴을 정의하는 데 활용할 수 있습니다.

정규 표현 예나타내는 패턴일치 예
[A-Za-z]영문자 한 글자A, z
[0-9]+숫자 한 글자 이상7, 2026
[A-Za-z][A-Za-z0-9]*영문자로 시작하고 이후 영문자나 숫자가 반복되는 식별자count1
ab*a 뒤에 b가 0회 이상 반복a, ab, abb
a|ba 또는 ba, b
정규 표현의 실제 메타문자와 문법은 도구·언어별로 차이가 있을 수 있습니다.
  • 정규 표현은 정규 언어를 표현하고 유한 오토마타로 인식할 수 있습니다.
  • 정규 표현 자체는 유한한 길이지만 반복을 통해 무한한 문자열 집합을 나타낼 수 있습니다.
  • 모든 문맥 자유 언어를 정규 표현만으로 표현할 수 있는 것은 아닙니다.
  • 임의 깊이의 괄호 중첩처럼 재귀적인 구조는 일반적인 정규 언어의 범위를 벗어납니다.

정규 표현과 문법: 정규 표현은 토큰의 모양을 정의하고, BNF·EBNF의 문맥 자유 문법은 토큰이 문장 안에서 결합되는 계층 구조를 정의합니다.

시험에서 자주 혼동되는 개념

식별자와 키워드

식별자는 사용자가 붙이는 이름이고, 키워드는 언어 문법에서 미리 정한 특별한 의미를 가집니다.

키워드와 예약어

키워드는 문법적 기능을 나타내고, 예약어는 일반 식별자로 사용할 수 없도록 확보한 단어입니다.

단말과 비단말

단말 기호는 실제 입력에 나타나고, 비단말 기호는 생성 규칙을 통해 다른 기호로 확장됩니다.

BNF와 EBNF

BNF는 기본 생성 규칙을 표현하고, EBNF는 반복·생략·묶음을 간결하게 표시합니다.

파스 트리와 구문 도표

파스 트리는 특정 문장의 유도 구조이고, 구문 도표는 문법 규칙 자체를 흐름도로 표현합니다.

정규 문법과 문맥 자유 문법

정규 문법은 유한 오토마타, 문맥 자유 문법은 푸시다운 오토마타와 연결됩니다.

정규 표현과 BNF

정규 표현은 토큰 패턴에 적합하고, BNF는 문장의 재귀적 계층 구조를 정의하는 데 적합합니다.

주석과 실행 문장

주석은 소스 코드의 설명이지만 일반적인 프로그램 실행 의미에는 포함되지 않습니다.

암기 흐름: 문자에서 토큰을 만드는 것은 어휘 분석, 토큰에서 문장 구조를 만드는 것은 구문 분석, 문법을 텍스트로 쓰면 BNF·EBNF, 그림으로 쓰면 구문 도표, 특정 문장의 유도 결과는 파스 트리입니다.

이번 장 핵심 요약

  1. 프로그래밍 언어의 구문은 올바른 프로그램 문장을 만드는 형식 규칙입니다.
  2. 어휘 분석은 문자 흐름을 식별자·키워드·리터럴·연산자·구분자 등의 토큰으로 나눕니다.
  3. 구문 분석은 토큰 배열이 문법 규칙에 맞는지 확인합니다.
  4. 식별자는 프로그램 구성 요소에 붙이는 이름이며 언어의 명명 규칙을 따라야 합니다.
  5. 키워드는 문법상 특별한 의미를 가지고 예약어는 일반 식별자로 사용할 수 없습니다.
  6. 주석은 사람의 이해와 유지보수를 돕지만 일반적으로 실행 의미에서 제외됩니다.
  7. BNF는 비단말 기호를 단말·비단말 기호의 조합으로 정의합니다.
  8. EBNF는 반복·생략·묶음을 확장 기호로 간결하게 표현합니다.
  9. 구문 도표는 문법의 선택과 반복을 흐름으로 표현합니다.
  10. 파스 트리는 시작 기호에서 입력 문장이 생성되는 문법적 구조입니다.
  11. 형식 언어는 알파벳 위에서 문법이나 형식 조건으로 정의한 문자열의 집합입니다.
  12. Type 0은 튜링 기계, Type 1은 선형 한정 오토마타와 연결됩니다.
  13. Type 2 문맥 자유 문법은 푸시다운 오토마타와 연결됩니다.
  14. Type 3 정규 문법은 유한 오토마타와 연결됩니다.
  15. 정규 표현은 정규 언어의 패턴을 표현하며 주로 어휘 분석에 활용됩니다.
  16. 정규 표현은 유한하게 작성되지만 무한한 문자열 집합을 나타낼 수 있습니다.

복습 문제

프로그램의 설명을 기록하여 판독성을 높이지만 일반적으로 실행 의미에는 영향을 주지 않는 구문 요소는?

주석입니다.

변수·함수·클래스 등에 붙이는 이름은?

식별자입니다.

언어 문법에서 특별한 의미를 가진 단어는?

키워드 또는 핵심어입니다.

일반 식별자로 사용할 수 없도록 언어가 확보한 단어는?

예약어입니다.

BNF에서 정의를 나타내는 대표 기호는?

::=입니다.

BNF에서 여러 대안 중 하나를 선택하는 기호는?

|입니다.

EBNF에서 교재 기준으로 반복되는 부분을 나타내는 기호는?

{ }입니다.

EBNF에서 생략 가능한 요소를 나타내는 기호는?

[ ]입니다.

문법 규칙을 상자·원·화살표의 흐름으로 표현하는 방법은?

구문 도표 또는 구문 다이어그램입니다.

입력 문장이 문법 규칙에 따라 유도된 구조를 트리로 표현한 것은?

파스 트리입니다.

파스 트리의 잎 노드에는 주로 무엇이 놓이는가?

입력을 구성하는 단말 기호가 놓입니다.

Type 0 문법을 인식하는 대표 계산 모델은?

튜링 기계입니다.

Type 1 문법을 인식하는 대표 계산 모델은?

선형 한정 오토마타입니다.

Type 2 문맥 자유 문법을 인식하는 대표 계산 모델은?

푸시다운 오토마타입니다.

Type 3 정규 문법을 인식하는 대표 계산 모델은?

유한 오토마타입니다.

정규 언어의 문자열 패턴을 기술하는 형식 표기는?

정규 표현입니다.

토큰 패턴은 주로 어떤 문법 계층과 관련되는가?

Type 3 정규 문법과 정규 언어입니다.

중첩된 프로그램 문장 구조를 표현하는 데 주로 사용하는 문법은?

Type 2 문맥 자유 문법입니다.

참고자료

이 글은 사무자동화산업기사 제2과목 프로그래밍 일반의 프로그래밍 언어 구문, BNF·EBNF·구문 도표·파스 트리, 형식 언어와 정규 표현을 이해하고 복습할 수 있도록 재구성한 정리입니다. BNF·EBNF와 정규 표현의 구체적인 메타기호는 표준·언어·도구마다 차이가 있으므로 실제 시험에서는 문제에 제시된 표기법과 최신 Q-Net 출제기준을 함께 확인해야 합니다.


같은 주제의 다른 글

이 글과 같은 카테고리에 있는 이전 글과 다음 글을 확인해보세요.

다음 글