C 프로그램으로 학생 정보를 입력하고 출력하는 문제를 생각해 보자. 학생 정보는 이름, 학년, 점수 세 개로 이루어져 있다. #include #include #include void main() { FILE *fp = NULL; char names[50][10]; int years[50]; int scores[50][3]; int count = 0; int i, j; fopen_s(&fp, "student.txt", "r"); if (fp == NULL) { printf("파일 열기 실패 - %s\n", "student.txt"); system("pause"); system("exit"); } while (!feof(fp)) { fscanf_s(fp, "%s", names[count], 10); fsca..
이번에는 좀 다른 형태의 예제를 살펴보자. 입력파일에서 "Harry"라는 부분을 모두 찾아 그 나온 회수를 괄호로 보여주는 어휘분석기를 만들려고 한다. 이것은 일종의 입력에 대한 변환이라고 볼 수 있다. 기본적으로 입력파일과 출력파일은 실행명령에서의 파이프라인 리디렉션으로 처리하려고 한다. 그러므로 표준입력과 표준출력으로 입출력하면 된다. (파워쉘에서는 < 리디렉션이 허용되지 않음) %option noyywrap %{ #include int count=0; %} %% Harry{ ++count; printf("%s(%d)", yytext, count); } %% 이 코드는 놀라울 정도로 간단하다. 회수 변수의 증가와 harry 문자열 출력이 전부다. 여기서 규칙부에 .에 대한 규칙은 기술하지 않았음을 주..
앞의 글에서 렉스의 설치와 실행 방법을 살펴보았다. 이번에는 좀더 본격적인 lex 사용 사례를 살펴보겠다. %option noyywrap %{ int lineno = 0; %} digit[0-9] number{digit}+ float {number}(\.{number})? newline \n %% {number}{int n = atoi(yytext); printf("[%2d] %5d\n", lineno+1, n);} {float}{float n = atof(yytext); printf("[%2d] %f\n", lineno+1, n);} {newline}{lineno++;} . ; %% int main() { yylex(); return 0; } 이 예제에서는 룰 부분(%%와 %% 사이)의 앞에 들어가는 ..
- Total
- Today
- Yesterday
- typedef
- 자바regex
- 패턴
- 이터레이터
- 스트링
- 지연계산
- 동적바인딩
- APPEND
- rust
- indexof
- Lazy evaluation
- format
- zip
- ToString
- 이터러블
- CompareTo
- TypeError
- python example
- contentEquals
- Iterator
- sort key
- contains
- C++ 클래스
- max
- python exercise
- follow
- 스트링 +
- 콜렉션
- Camel Style
- comparable
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |