블로그 이미지
기록 형식의 블로그입니다. 이브시나

카테고리

분류 전체보기 (6)
Programming Language (4)
PlayGame (0)
DataStruct (2)
OS (0)
Total
Today
Yesterday

달력

« » 2025.4
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

공지사항

최근에 올라온 글

토큰이란?

 토큰은 '문법적으로 의미있는 최소단위'를 말한다.C로 작성된 프로그램 소스를 구성하는 문자들을 번역 프로그램에 넣으면, 번역 프로그램은 프로그램 소스를 이해하는 가장 기본적인 단위인 '토큰(token)'으로 분리하여 인식하고, C언어의 '문법(syntax)'에 맞춰 프로그래머가 의도한 '의미(semantic)'를 의미한다. 쉽게말해 문장을 각각 분리하여 인식하는 과정이라고 보면된다.


 번역프로그램이 C언어로 작성된 프로그램이 이해하는 기본단위는??

문자 (X)     토큰(token) (O)

토큰?

- 연속된 문자에서 구별할 수 있는 단위

토큰 분리는? - 공백문자에 의해 이루어진다.



어휘분석 - 문자를 토큰으로 인식하는 과정


구문해석 – 토큰을 “문법에 맞춰” 해석하는 과정

※ 토큰화 과정에서는 문법이나 프로그램 구조가 올바른지 여부는 신경 쓰지 않는다.

토큰의 분류 – 전처리기 토큰, 일반 토큰으로 정의

전처리기 토큰

- 명칭, 구분자, 문자 상수, 문자열 상수, 전처리기 숫자, 헤더명, 어디에도 속하지 않는 부류

일반 토큰


예약어, 명칭, 구분자, 상수, 문자열 상수


예약어

– 언어의 고유한 기능을 위해 별도로 예약된 명칭이다.

- 전처리 과정 이후에는 프로그래머 임의의 명칭으로 사용될 수 없다.

- 모두 소문자이다.


auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, swich, typedef, union, unsigned, void, volatile, while


명칭 – 프로그램 내에서 구분하여 참조할 필요가 있는 언어적 요소에 붙이는 이름.

- 52개의 영문 대소문자, 밑줄문자 _, __로 시작해야함.

- 숫자로 시작할수 없고, 첫 문자가 문자이면, 그 이후는 숫자가 삽입되어도 됨.

- 대소문자를 구별한다.

대상체와 함수 (구조체, 공용체, 열거를 위한) 태그와 멤버 사용자 정의형 매크로 매크로 함수의 매개변수


연산자 – 상수나 대상체의 형태로 주어진 피연산자에 수행되는 연산

구분자 – 독립된 요소로서 문법의 의미를 규정.


Ex) func(); //func() 함수를 호출하는 수식 int func(); //실제 함수는 호출되지 않으면서 func라는 명칭이 함수임을 나타내는 구분자.

[ ] ( ) { } . -> ++ -- & * + - ~ ! / % << >> < > <= >= == != ^ | && || ? : ; … = *= /= %= += -= <<= >>= &= ^= |= , # ##

Ex) x+++++y; ??? x ++ + ++ y ; [명칭][구분자] [구분자] [구분자] [명칭] [구분자] ※실제로는 작동이 안되는 오류가 나는 소스이다.



다음과 같은 소스를 살펴보면..


결과값..



왜 값은 정상적으로 1씩 저장이되는데 sum은 4인가..?

- x다음에 오는 ++은 라인이 끝나고 연산이 되기 때문에 해당 줄에서는 x값은 1으로 연산된다.


다음과 같은 소스코드를 예로 확인해보자.



위의 문장에서 x+++5 와 z+++y를 자세히 확인해보면


 x      ++       +      5      ;


[명칭][구분자][구분자][명칭][구분자] 
 

z     ++       +      y      ;

[명칭][구분자][구분자][명칭][구분자]


와 같이 토큰화가 이루워진다. 토믄 인식의 법칙 '최대한 잘라먹기 큐칙(maximal munch rule)'에 의해 연산자 우선순위 및 법칙에 의해 가장 큰 ++를 처리한 후 이항 연산을 처리하게된다.

그러므로 출력 값은

와 같이 나오는 것을 확인할 수 있다.


상수 - 값을 기억장치에 담을 수 있는 대상체에 들어갈 수 있는 재료를 프로그램소스에 직접 적어주는 방법을 제공. - 모든 상수는 데이터형을 갖음.


종류

부동 상수 : 실수(실수에 근접한 유리수)를 표현하는 방법
정수 상수 : 실제 프로그램에서 가장 많이 사용되는 정수를 표현하는 상수.
문자 상수 : 실행 문자세트의 문자를 프로그램 소스 내에 이식성 있는 방법으로 표현하는 방법을 제공. 
          문자열 상수는 int형이지만, 값은 char 형을 거쳐 변환된 값을 갖는다.
          문자열 상수는 배열로 인식되며, 메모리에 저장될 때 마지막에 문자열의 끝을 알리는 널문자가 포함되어 1 바이트가 더 추가됨.
열거 상수

'Programming Language > C/C++' 카테고리의 다른 글

선언  (0) 2011.11.07
데이터형 기본  (0) 2011.11.07
Posted by 이브시나
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함