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

카테고리

분류 전체보기 (6)
Programming Language (4)
Android (1)
C/C++ (3)
Java (0)
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

공지사항

최근에 올라온 글

'Programming Language/C/C++'에 해당되는 글 3건

  1. 2011.11.07 선언
  2. 2011.11.07 데이터형 기본
  3. 2011.11.07 토큰이란? 1

선언

Programming Language/C/C++ / 2011. 11. 7. 15:55

간단한 선언



선언자에 하나의 이름을 붙여준다. 그 경우를 명칭이라고 한다.

“char soccer”를 예를 들겠다. char라는 타입을 지정해 주고 거기에 이름 soccer을 붙여준다.

타입을 우리 말로 표현하자면 선정지정자라고 칭할수 있고, 이름을 선언자라고 칭한다.

이 선언자에 괄호 즉 ” 선정지정자 (선언지정자)“라고 나타낸 것을 전체 지정자라고 한다.

이런 전체 지정자는 특별히 뜻은없다. 하지만 복잡한 선언할때에는 의미를 가질 수 있다.

- 포인터 선언자

위에 간단한 선언에 나오는 타입 즉 선정지정자와 선언자는 똑같다. 다만 명칭이 약간 다를뿐이다.

선정지정자는 그대로 써주고 “*(포인터)+형을나타내는 명칭” 이다.

형한정어 명칭을 표현하자면 “char *soccer” 이 있다. 타입이 char 포인터이므로 포인터의 “p”와 char형의 “c”를 붙여주는 방식으로 하

면 되겟다.(다른 명칭을 넣어도 되지만 이 방식을 이용하는 방법이 사용자가 알기 쉬울 것이다.)

말로 표현이 이해가 안갈 수도 있으니 그림으로 표현하겠다. 



- 배열 연산자

배열 선언자는 명칭부분에 배열추가, 즉 함수기호 ”[ ]“기호 추가와 그 배열안에 상수 값을 넣어주면 되겠다.

- 함수 선언자

함수 선언자는 배열포인터와 비슷한 방식으로 명칭부분에 함수를 나타내는 ”( )“를 추가해주면 된다 그 함수 안에는 매개변수 리스트가 들어가면 되겠다.

매개변수 리스트란 타입 혹은 타입과 명칭을 넣으면 된다. 


복잡한 선언

- 첫번째 방법 “명칭에서부터 의미 유추하기(가장 안쪽에 있는 데이터형이 유도 과정에서 가장 마지막에 적용되는 것이며, 가장 바깥쪽에 있는 데이터형이 가장 처음에 적용되는 것이다.) 


int 함수를 반환하는 배열

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

데이터형 기본  (0) 2011.11.07
토큰이란?  (1) 2011.11.07
Posted by 이브시나
, |

  • 데이터형은 다음과 같이 분류된다.


  • 분류된 데이터형을 세부적으로 표현하면 다음과 같다.


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

선언  (0) 2011.11.07
토큰이란?  (1) 2011.11.07
Posted by 이브시나
, |

토큰이란?

 토큰은 '문법적으로 의미있는 최소단위'를 말한다.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 이브시나
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함