학교에서 들은 프로그래밍 언어론 강의 내용을 복습하면서 작성한 글입니다.
April 12, 2024 12:56 PM
- Scanner: Text의 어휘 패턴을 인식하는 프로그램
token: 입력을 나눈 의미있는 단위 - Lex 구조
%{
//정의절
#include <stdio.h>
int count = 0;
%}
//여기에 패턴 단순화를 위한 변수 선언 가능
//예: DIGIT [0-9]
//사용시 {[0-9]}+ 대신 {DIGIT}+ 가능
%%
//규칙절: 입력된 문자에서 매칭되는 패턴과 패턴이 나타났을 때 해당하는 동작
([0-9])+ {count++;}
\n ;
%%
//사용자 서브루틴절
int main(){
yylex();
return 0;
}
int yywrap(){
return 1;
}
- 규칙절 속 패턴(정규표현식)
- 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어
- 먼저 작성된 규칙이 먼저 선택 → 더 명시적으로 작성된 규칙이 상위에 있어야함
- 정의절에서 선언한 변수 사용 가능
- 규칙절 속 연산부
- C 코드 사용 가능
- 명시적 처리가 없으면 default로 echo 반환
사용자 서브루틴절
- Lex 함수
yylex(): 스캐너 함수
yywrap(): yylex()가 EOF를 만나면 호출
yymore(): 인식된 토큰의 문자열을 yytext 뒤에 첨가
input(): 다음 문자 반환
output(c): 문자 c를 출력으로
unput(c): 문자 c를 입력으로
'CS > 프로그래밍 언어론' 카테고리의 다른 글
[프로그래밍 언어론] Lexical and Syntax Analysis (0) | 2024.04.27 |
---|---|
[프로그래밍 언어론] Semantics (0) | 2024.04.27 |
[프로그래밍 언어론] Attribute Grammars (AGs) (0) | 2024.04.27 |
[프로그래밍 언어론] BNF/EBNF (1) | 2024.04.26 |
[프로그래밍 언어론] 개요 (0) | 2024.04.26 |