목차
#목 차
* Lex의 정의 *
* 스캐너의 생성과정 *
* Lex의 설치 방법 *
* Lex의 구성 *
* Lex에서의 정규식 *
* Lex를 이용한 프로그래밍 *
* 패턴 일치를 위한 Lex의 규칙 *
* C code *
* 최종 작업 *
* Advanced Lex *
* Lex의 정의 *
* 스캐너의 생성과정 *
* Lex의 설치 방법 *
* Lex의 구성 *
* Lex에서의 정규식 *
* Lex를 이용한 프로그래밍 *
* 패턴 일치를 위한 Lex의 규칙 *
* C code *
* 최종 작업 *
* Advanced Lex *
본문내용
밍의 마지막인 세 번째 섹션에서는 C 함수 선언(main 함수 포함)을 다룬다. 이 섹션에 yywrap() 함수가 포함되는 것을 유의해야 한다. Lex에는 사용자가 이용 가능한 일련의 함수와 변수가 있다. 그 중의 하나가 yywrap이다. 전형적으로 yywrap()는 아래 예의 경우처럼 규정된다.
<워드 카운팅 프로그램용 C code 섹션(C code section for the word-counting program)>
void main()
{
yylex(); /* start the
analysis*/
printf(" No of words:
%d\n", wordCount);
}
int yywrap()
{
return 1;
}
이전의 섹션에서 간단한 Lex 프로그램 작성을 돕는 Lex 프로그래밍의 기본 원리를 검토했다. Advanced Lex의 섹션에서는 Lex가 제공하는 기능성을 다룬다. 그러면 모든 사용자가 복잡한 프로그램을 작성할 수 있다.
최종 작업
.lex 파일은 Lex의 스캐너로서 Lex 프로그램에 다음과 같이 사용한다.
$ lex
lex.yy.c 파일이 생성되는데 이 파일은 C 컴파일러로의 컴파일이 가능하다. 또한 파서로 실행 파일을 생성하거나 옵션 2로 링크 단계에 라이브러리를 포함할 수 있다.
다음은 몇 가지 Lex 플래그이다.
-c는 C 작동을 가리키며 기본 값이다.
-t는 표준 출력과는 다른 방식으로 .lex.yy.c 프로그램을 작성한다.
-v는 통계를 두 행으로 요약한다.
-n은 -v 요약을 인쇄하지 않는다.
Advanced Lex
Lex는 여러 정보를 제공하고 복잡한 기능을 수행하는 프로그램 작성할 수 있는 다양한 함수와 변수를 포함한다.
yyin
FILE* 유형과 관련이 있으며, lexer가 구문 해석 중인 현재 파일을 가리킨다.
yyout
FILE* 유형과 관련 있으며, lexer의 출력이 작성될 위치를 가리킨다. 기본값으로 yyin과 yyout는 표준 입력과 출력을 가리킨다.
yytext
일치 패턴의 텍스트가 이 변수에 저장된다.(char*)
yyleng
일치 패턴의 길이를 제공한다.
yylineno
현재 행 숫자의 정보를 제공한다.(lexer가 지원할 수도 있고 안 할 수도 있다.)
yylex()
분석 시작하는 함수로 Lex가 자동으로 생성
yywrap()
이 함수는 파일(혹은 입력)의 끝에 호출된다. 이 기능이 1을 반환하면 구문 해석(파싱)은 정지한다. 따라서 이 함수는 다중 파일의 파싱에 사용될 수 있다. 코드는 세 번째 섹션에서 작성되어 다중 파일이 파싱된다. 말하자면 모든 파일이 파싱될 때까지 yyin 파일 포인터가 상이한 파일을 가리킨다는 전략이다. 마지막에 yywrap()가 구문 해석의 종료를 가리키기 위하여 1을 반환한다.
yyless(int n)
이 함수는 판독 토큰의 'n' 문자를 제외한 모든 것을 밀어낸다.
yymore()
이 함수는 Lexer에게 현재의 토큰에 다음 토큰을 부가하도록 지시한다.
<워드 카운팅 프로그램용 C code 섹션(C code section for the word-counting program)>
void main()
{
yylex(); /* start the
analysis*/
printf(" No of words:
%d\n", wordCount);
}
int yywrap()
{
return 1;
}
이전의 섹션에서 간단한 Lex 프로그램 작성을 돕는 Lex 프로그래밍의 기본 원리를 검토했다. Advanced Lex의 섹션에서는 Lex가 제공하는 기능성을 다룬다. 그러면 모든 사용자가 복잡한 프로그램을 작성할 수 있다.
최종 작업
.lex 파일은 Lex의 스캐너로서 Lex 프로그램에 다음과 같이 사용한다.
$ lex
lex.yy.c 파일이 생성되는데 이 파일은 C 컴파일러로의 컴파일이 가능하다. 또한 파서로 실행 파일을 생성하거나 옵션 2로 링크 단계에 라이브러리를 포함할 수 있다.
다음은 몇 가지 Lex 플래그이다.
-c는 C 작동을 가리키며 기본 값이다.
-t는 표준 출력과는 다른 방식으로 .lex.yy.c 프로그램을 작성한다.
-v는 통계를 두 행으로 요약한다.
-n은 -v 요약을 인쇄하지 않는다.
Advanced Lex
Lex는 여러 정보를 제공하고 복잡한 기능을 수행하는 프로그램 작성할 수 있는 다양한 함수와 변수를 포함한다.
yyin
FILE* 유형과 관련이 있으며, lexer가 구문 해석 중인 현재 파일을 가리킨다.
yyout
FILE* 유형과 관련 있으며, lexer의 출력이 작성될 위치를 가리킨다. 기본값으로 yyin과 yyout는 표준 입력과 출력을 가리킨다.
yytext
일치 패턴의 텍스트가 이 변수에 저장된다.(char*)
yyleng
일치 패턴의 길이를 제공한다.
yylineno
현재 행 숫자의 정보를 제공한다.(lexer가 지원할 수도 있고 안 할 수도 있다.)
yylex()
분석 시작하는 함수로 Lex가 자동으로 생성
yywrap()
이 함수는 파일(혹은 입력)의 끝에 호출된다. 이 기능이 1을 반환하면 구문 해석(파싱)은 정지한다. 따라서 이 함수는 다중 파일의 파싱에 사용될 수 있다. 코드는 세 번째 섹션에서 작성되어 다중 파일이 파싱된다. 말하자면 모든 파일이 파싱될 때까지 yyin 파일 포인터가 상이한 파일을 가리킨다는 전략이다. 마지막에 yywrap()가 구문 해석의 종료를 가리키기 위하여 1을 반환한다.
yyless(int n)
이 함수는 판독 토큰의 'n' 문자를 제외한 모든 것을 밀어낸다.
yymore()
이 함수는 Lexer에게 현재의 토큰에 다음 토큰을 부가하도록 지시한다.
추천자료
- [아동복지론] 빈곤아동의 정의, 개념, 특징, 현황 및 문제점과 사회복지 대책 (2012년 추천 ...
- 정신장애의 정의 및 원인과 DSM-IV에 따른 정신장애의 진단 범주의 특징을 서술
- 사외이사제도의 정의 및 특징과 역할 조사분석
- 전자무역의 정의 및 개념과 특징 조사분석
- 드럭스토어의 정의 및 특징과 한국형 드럭스토어의 발전전망 조사분석
- 한국재벌의 정의 및 특징과 실태 조사분석
- (A+자료) 바이럴 마케팅에 대한 정의 및 특징과 성공적인 마케팅 사례 총체적 조사분석
- 해수욕장 관광 현황, 종류, 정의 및 특징과 역사, 국내외 현황, 도입 필요성, 발전방안, 성공...
- 요트의 관광, 정의 및 특징과 역사, 관광, 국내외 현황, 발전현황, 성공요인, 문제점, 개선방...
- 국내 해양전망대 현황, 종류, 정의 및 특징과 역사, 관광, 국내외 현황, 발전방안, 성공요인,...
- 다이빙 리조트 관광 현황, 종류, 정의 및 특징과 역사, 국내외 현황, 도입 필요성, 발전방안,...
- 비관세장벽의 개념, 정의 및 특징과 종류
- [세계화전략] 기업세계화의 촉진요인, 세계화전략의 정의 및 특징, 세계화전략과 현지화전략...
- [국제합작투자] 국제합작투자의 정의 및 특징, 국제합작투자가 최선의 선택안이 되기 위한 조건
소개글