본문 바로가기

2009/08

(25)
SQL parser ( by Lex & Yacc ) 보호되어 있는 글입니다.
VI 편집기 명령어 정리 1. vi 편집기 소개 £ vi(view의 약자) 편집기는 유닉스와 리눅스에서 사용하는 표준편집기로, 앞으로도 널리 사용될 것으로 전망되는 아주 유명한 에디터이다. £ vi는 입력모드, 명령모드, ex(콜론(:))모드의 3가지 모드로 작동된다. £ 어떤 파일(예 aa)을 작성할때 vi 파일명을 입력하면 vi 화면이 뜨고, 텍스트를 입력한 후 저장하고자 할때 처음 실행시키면 명령모드에서 실행되며 입력모드로 전환하여 텍스트 작업을 하게 됩니다. £ ex모드에서는 파일 입출력, vi환경변수 설정 등과 같은 작업을 할 수 있습니다. 명령모드에서 입력모드로 전환한 뒤 다시 명령모드로 들어가기 위해서는 ESC키를 누르면 됩니다. 1.1 입력모드 a : 커서의 오른쪽에서 입력을 받음 A : 라인의 마지막에서 입력을 ..
리눅스 명령어 정리 09년 1학기에 들었던 JAVA 수업에서 GUI 이전의 내용은 UNIX에서 작업을 했는데 그 때 받은 내용 1. 리눅스 기본 명령어 £ 입력된 명령어는 명령어 해석기에 의해 해석되어 수행됨 î 명령어 해석기: shell이라 하며, 주로 csh, ksh bash 등이 사용됨 £ 온라인 명령어 매뉴얼: “man 명령어"로 상세한 온라인 매뉴얼 검색 가능 £ 다음과 같이 그룹화 됨: 사용자 및 그룹관리는 root 이용자만 취급가능 î 사용자 및 그룹 관리 î 파일과 디렉토리 관리 î 프로세스 관리 î 주변장치 관리 î 텍스트 처리 î 기타 그룹 명령어 설 명 사용자 및 그룹 관리 adduser - 사용자 계정을 등록한다. 예: adduser 옵션 계정이름 useradd - 사용자 계정을 등록한다. 예: use..
SQL parser ( 간단한 몇 가지 구문을 토큰으로 나누고 stack 에 넣어 출력 ) 테스트용으로 한번 만들어 본것 파서에서는 각 문법을 인식했을 때마다 씨언어로 동작을 작성할 수 있다. 평소에 코딩이 할 일이 있을 때 lex yacc이 필요하면 이런식으로 활용 할 수 있다. /************************************** * 렉스 select.l **************************************/ %{ #include "y.tab.h" int lineno = 1; %} %% CREATE { return CREATE; } TABLE { return TABLE; } VIEW { return VIEW; } SELECT { return SELECT; } FROM { return FROM; } WHERE { return WHERE; } AND { ret..
간단한 렉스 프로그램 ( Flex & C++ ) 아직 C++ 이 익숙하지 않아서 문법이 기억이 안나는건 C로 처리했다. ( new 안쓰고 malloc을 썼다든지.. ) 공백과 ' ' 기준으로 토큰을 나눤서 vector에 저장하고 그 vertor를 리턴하는 함수를 이용 하는 코드 main은 테스트용으로 Tokenize함수를 외부에서 불러와 쓸 수있따. %{ #include #include #include #include #undef YY_INPUT #define YY_INPUT(b, r, ms) ( r = my_yyinput(b, ms) ) #ifndef min #define min(a, b) ((a > b) ? b : a) #endif using namespace std; vector& Tokenize(char* pString); int my_yyin..
YACC 문법 구조 Yacc 문법은 세 부분으로 구성되며 각각 정의절, 규칙절, 그리고 사용자 서브루틴절 이라고 한다. {% .. C 코드 ( 변수 선언 등 ) %} 정의절 %% 규칙절 %% 사용자 서브루틴 각 부분은 퍼센트 기호 두개를 담고있는 행으로 구분된다. 처음 두 부분은 그 안에 내용이 없더라도 반드시 존재해야 한다. 세번째 부분과 그 앞에 있는 %% 행은 생략할 수 있다. (Lex같은 동일한 구조를 갖는다.) 기호 Yacc 문법은 언어에서 문법을 구성하는 "단어"에 해당하는 기호들로 이루어 진다. 기호란 글자, 숫자, 마침표, 그리고 밑줄 등으로 이루어진 문자열이며, 첫 문자가 숫자이면 기호가 아니다. error라는 기호는 에러 복구를 위해서 예약되어 있다. 이렇게 미치 예약된 기호를 제외한 나머지 기호들에는 미..
LEX 의 정규 표현식 LEX 의 정규 표현식 정규식은 메타 언어를 사용한 패턴의 기술(description)을 말한다. 하나의 수식은 기호들로 구성되어 있다. 기호들은 보통 문자와 숫자이다. 그러나 Lex에서 특별한 의미를 지니는 기호들이 있다. 다음 두 표는 Lex에서 사용되는 여러 기호를 규정하고 있으며 약간의 전형적인 예제를 제시한다. Lex에서의 레귤러 표현 규정 문자 의미 A-Z, 0-9, a-z 패턴의 일부를 구성하는 문자와 숫자. . \n을 제외한 어느 문자와도 일치. - 범위를 표시할 때 사용. 예: A-Z은 문자 A부터 Z까지를 의미. [ ] 문자 클래스. 괄호 안의 어느 문자와도 일치. 첫 문자가 ^이면 부정 패턴을 나타냄. 예: [abC]는 a,b 혹은 C와 일치. * 선행 패턴의 발생이 0 이상. + 선..
FILE 처리 함수 요약 : int fgetc(FILE * fp); 파일에서 문자를 1 바이트씩 읽어 와서 int 형으로 리턴 시킨다. 오류가 발생하거나 파일에 끝에 도달했을 때 EOF 를 리턴 : int fputc(int ch, FILE *fp); 메모리 상에서 character를( 1 byte ) 를 파일에 입력한다. ch : 파일에 기록할 문자 상수 , fp : 대상이 되는 파일 포인터. fp가 가리키는 파일에 ch를 저장. 정상적으로 작동하면 기록한 문자를 int 형으로 리턴하고 그렇지 않으면 EOF를 리턴. : char *fgets(char *str, int n, FILE* fp); 파일에서 문자열을 n 길이만큼 읽어와 str이 pointing 하는 character에 삽입한다. 파일이 끝이거나 ‘\n..