수학, 컴퓨터 과학, 언어학에서 형식 언어(形式言語, formal language)란, 특정한 법칙들에 따라 적절하게 구성된 문자열들의 집합을 말한다. 이는 수학기초론, 언어학, 정보이론의 핵심적 개념이며, 계산가능성 이론과 밀접하게 관련되어 있다.

정의 편집

각 형식 언어에는 그 언어에서 사용하는 문자(alphabet)의 집합이 있으며, 그 집합은 무한할 수도 있다. 그 형식 언어에서 문자열(word)은 문자들로 이루어진 유한한 길이의 열(列)로 정의된다. 문자 집합을  라고 정의했을 때, 그 문자들로 이루어진 모든 문자열의 집합은  가 된다.(별표는 클레이니 스타 연산자)

이 때,   위에 존재하는 형식 언어   부분집합으로 정의된다.

형식 언어의 기술 방식 편집

형식 언어는 특정한 문자열의 집합이기 때문에, 다음과 같은 방식을 이용해 형식 언어를 만들 수도 있다.

형식 언어의 연산 편집

기존의 형식 언어를 결합하여 새로운 언어를 만들어 낼 수 있다. 두 형식 언어 L1L2가 있다고 하면, 다음과 같은 연산을 할 수 있다.

  • L1L2연쇄L1의 문자열 vL2의 문자열 w를 연쇄시켜 만든 단어들의 집합이다. 표기:   또는  .
  • L1L2교집합L1L2 에 동시에 속해 있는 문자열들의 집합이다. 표기 :  .
  • L1L2합집합L1에 속하거나 L2 에 속하는 문자열들의 집합이다. 표기 :   또는  .
  • L1여집합L1 에 속하지 않는 문자열들의 집합이다.
  • 우상(右商: 오른쪽 몫)은 L2의 문자열 w에 대하여 vwL1 에 속하도록 하는 문자열 v의 집합이다. 표기 :  .