1. 실습 목표
PROGRAM SAMPLE ;
CONST
M = 5 ;
N = 9 ;
VAR
SUM, MUL : INTEGER ;
BEGIN
SUM := M + N ;
MUL := M * N ;
END.
Code language: PHP (php)
Pascal 코드의 줄 번호를 붙이는 Scanner 만들기.

2. scanner.l
%{
int lineno = 1;
%}
%%
\n {lineno++; ECHO;}
^.*$ printf("%d\t%s", lineno, yytext);
Code language: PHP (php)
scanner.l 작성.
yytest: flex, lex에서 토큰(문자 배열 char array)을 저장하는 버퍼- ECHO : printf(“%s”, yytext)와 동일한 결과. 출력하는 일이 빈번해서 매크로로 정의하여 제공.
flex scanner.l
//scanner.l:7: EOF encountered inside an action -> 마지막에 비어있는 줄을 추가.
flex scanner.l
//lex.yy.c 생성
gcc lex.yy.c -lfl
//a.out 생성
./a.out < test.p
Code language: JavaScript (javascript)
-lfl: linker flex library 일듯? 실행파일을 생성할 때 링커에게 flex library를 참조하라고 지시하는 옵션.

window로 작업하다가 너무 힘들어서 ubuntu(WSL)로 작업함.
사랑해요 리눅스
출처 : https://inputting.tistory.com/28