Empty string
형식적 언어 이론(formal language theory)에서, 빈 문자열(empty string), 또는 빈 단어(empty word)는 길이 영의 고유한 문자열(string)입니다.
Formal theory
형식적으로, 문자열은 글자, 자릿수, 또는 공백과 같은 유한, 순서화된 문자(characters)의 수열입니다. 빈 문자열은 수열이 길이 영을 가지는 특수한 경우이므로, 문자열에서 기호가 없습니다. 두 문자열은 만약 그것들이 다른 길이를 가지거나 다른 기호의 수열을 가질 때 오직 다르기 때문에 빈 문자열은 유일한 하나가 있습니다. 형식적 처리에서,[1] 빈 문자열은 ε 또는 때때로 Λ 또는 λ로 표시됩니다.
빈 문자열은 빈 언어 ∅와 혼동되어서는 안되며, 빈 언어는 문자열을 포함하지 않는, 심지어 빈 문자열도 포함하지 않는 형식적 언어(formal language) (즉, 문자열 집합)입니다.
빈 문자열은 여러 속성을 가집니다:
- |ε| = 0. 그것의 문자열 길이(string length)는 영입니다.
- ε ⋅ s = s ⋅ ε = s. 빈 문자열은 연쇄(concatenation) 연산의 항등 원소(identity element)입니다. 모든 문자열의 집합은 ⋅ 및 ε에 관해 자유 모노이드(free monoid)를 형성합니다.
- εR = ε. 빈 문자열의 반전은 빈 문자열을 생성합니다.
- 빈 문자열은 사전식 순서(lexicographical order) 아래에서 임의의 다른 문자열보다 우선하는데, 왜냐하면 그것은 모든 문자열의 가장 짧은 것이기 때문입니다.[2]
문맥-자유 문법(context-free grammar)에서, 빈 문자열을 생성하기 위한 기호(symbol)를 허용하는 생성 규칙(production rule)은 ε-생성으로 알려져 있고, 그 기호를 "널-가능(nullable)"이라고 말합니다.
Use in programming languages
대부분의 프로그래밍 언어에서, 문자열은 데이터 유형(data type)입니다. 문자열은 전형적으로 구별되는 메모리 위치(memory locations)에 저장됩니다. 이것은 같은 문자열 (예를 들어, 빈 문자열)이 메모리에서 둘 이상의 위치에 저장될 수 있음을 의미합니다.
이런 방법으로 오직 하나의 가능한 빈 문자열이 있는 형식적 이론 정의와 달리, 메모리에 여러 빈 문자열이 있을 수 있습니다. 어쨌든, 문자열 비교 함수는 모든 이들 빈 문자열이 서로 같음을 나타냅니다.
심지어 길이 영의 문자열은 사용되는 형식에 따라 그것을 저장하기 위한 메모리를 요구할 수 있습니다. 대부분의 프로그래밍 언어에서, 빈 문자열은 널 참조(null reference) (또는 널 포인터)와 구별되는데 왜냐하면 널 참조는 임의의 문자열을 가리키지 않고, 심지어 빈 문자열도 가리키지 않기 때문입니다. 빈 문자열은 대부분의 문자열 연산이 작동해야 하는 정당한 문자열입니다. 일부 언어는 빈 문자열, 널 참조, 정수 0, 부동 점 숫자 0, 부울 값 거짓(false), 아스키 문자 NUL, 또는 기타 이러한 값 중 일부 또는 전체를 유사한 방식으로 처리합니다.
빈 문자열은 보통 다른 문자열과 유사하게 표시됩니다. 문자열 종료 문자 (널-종료된 문자열(null-terminated string) 또는 일반 텍스트 줄)을 갖는 구현에서, 빈 문자열은 이 종료하는 문자의 즉시 사용에 의해 표시됩니다.
λ representation | Programming languages |
---|---|
""
|
C, C#, C++, Go, Haskell, Java, JavaScript, Julia, Lua, M, Objective-C (as a C string), OCaml, Perl, PHP, Python, Ruby, Scala, Standard ML, Swift, Tcl, Visual Basic .NET |
''
|
APL, Delphi, JavaScript, Matlab, Pascal, Perl, PHP, Python, Ruby, Smalltalk, SQL |
{'\0'}
|
C, C++, Objective-C (as a C string) |
std::string()
|
C++ |
""s
|
C++ (since the 2014 standard) |
@""
|
Objective-C (as a constant NSString object)
|
[NSString string]
|
Objective-C (as a new NSString object)
|
q(), qq()
|
Perl |
str()
|
Python |
%{} %()
|
Ruby |
string.Empty
|
C#, Visual Basic .NET |
String.make 0 '-'
|
OCaml |
{}
|
Tcl |
[[]]
|
Lua |
Examples of empty strings
빈 문자열은 선행하는 영(leading zero)을 포함하지 않는 (임의의 밑수에서) 위치 표기법(positional notation)에서 구문적으로 유효한 영(zero)의 표현입니다. 빈 문자열은 형식적 언어 이론 외부의 표준 시각적 표현을 가지지 않기 때문에, 숫자 영은 전통적으로 대신 하나의 십진 자릿수(decimal digit) 0에 의해 표현됩니다.
널-종료된 문자열(null-terminated string)로 해석되는 영-채워진 메모리 영역은 빈 문자열입니다.
텍스트의 빈 줄은 빈 문자열을 보여줍니다. 이것은 텍스트 파일(text file)에서 종종 발생하는 것처럼 둘의 연속적인 EOL에서 발생할 수 있고, 이것은 때때로 단락(paragraph)을 분리하기 위해, 예를 들어 미디어위키에서 텍스트 처리(text processing)에 사용됩니다.
See also
References
- ^ Corcoran, John; Frank, William; Maloney, Michael (1974). "String theory". Journal of Symbolic Logic. 39 (4): 625–637. doi:10.2307/2272846. JSTOR 2272846.
- ^ CSE1002 Lecture Notes – Lexicographic