컴공지식/프로그래밍언어론
BNF로 산술 표현식 정의하기
개강한 공대생
2024. 9. 8. 14:49
특정 언어를 만든다고 생각해보자
이 때 우리는 산술 표현식을 정의해야 할 필요가 있다.
일단 정수랑 float의 연산식이나 숫자를 표현하는 문법을 정의하려면 어떻게 해야할까?
다음과 같다.
<expr> ::= <number>
| + <expr> <expr>
| - <expr> <expr>
| * <expr> <expr>
| / <expr> <expr>
<number> ::= -? <digit>+ <dot_below>?
<dot_below> ::= .<digit>+
<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
이렇게 정의하면 더하기, 빼기, 곱하기, 나누기와 같은 단순한 산술 표현식을 사용하는 게 가능해지고
단순하게 number를 표시하는 게 가능해진다.
뒤에 ?(물음표)는 있어도 되고 없어도 되는 것을 뜻한다. -?는 음수일 수도 있으니 물음표를 붙인거고 <dot_below>?는 소수가 아닐 수도 있으니 물음표를 붙인 것이다.
<digit>뒤에 바로 붙은 +는 적어도 1개 이상의 숫자가 필요하다는 것을 의미한다.