CS/Programming Language 2

[프로그래밍 언어론/Programming Language] 정규 표현식(Regex)이란?

정규 표현식을 정리한 글은 굉장히 많지만, 공부한 것을 쉽게 정리해보려고 한다. 정규 표현식(Regular Expression)정규 표현식은 검색에서 문자열을 일치시키는 데 사용되는 특수 문자 패턴을 말한다.UNIX 환경의 편집기나 각종 유틸리티(grep, sed, awk 등)에서 텍스트를 효율적으로 다루기 위해 필수적인 개념이다. 정규 표현식은 메타문자(Metacharacters)라고 불리는 기호들을 조합하여 복잡한 문자열 규칙을 정의하는 것이다.규칙을 정의한 것인데 사용하는 환경에 따라서 표기법 버전이 다를 수 있어서 사용 전 확인이 불가피하다. 우리는 정규 표현식을 쉽게 찾아볼 수 있다.가장 대표적인 활용 사례는 이메일 검증 정규식이다.^[a-zA-Z0-9_.±]+@[a-zA-Z0-9-]+\.[a-..

[프로그래밍 언어론/Programming Language] flex & bison 으로 파서 만들기

프로그래밍 언어를 처리하는 과정에서 가장 중요한 단계 중 하나는 입력을 분석하는 것이다.이때 입력을 의미 있는 단위로 나누고, 문법에 맞게 해석하는 과정이 필요하다.이벌 글에서는 flex와 bison을 활용한 파서 생성 과정을 단계별로 정리해보고자 한다. 1. flex란 무엇인가?flex는 어휘 분석기(Lexical Analyzer)를 생성하는 도구이다.즉, 입력 문자열을 읽어서 다음과 같은 과정을 수행한다.문자열을 lexeme(어휘 단위)로 분해각 lexeme을 토큰(token)으로 변환예를 들어:input: a = b + 3 → 토큰 단위로 분해ID(a), ASSIGN, ID(b), PLUS, NUMBER(3) 이 과정이 바로 lexical analysis이다. 2. flex 파일 구조 (.l)fle..