PL-flex-bison
1. 컴파일 방법
flex lexical_analyzer.l
bison -d parser.y
gcc -o parser lex.yy.c parser.tab.c
2. 토큰 종류
%token <str> T_ID
%token <int_num> T_INTEGER
%token <float_num> T_FLOAT
%token <str> T_KEYWORD
%token <str> T_OPERATOR
%token <str> T_DELIMITER
%token T_WHITESPACE
한 토큰 안에서 lexeme이 어떤건지는 yyval 안에 들어있다. 예를들어,
Exp : Exp ‘+’ T_INTEGER {$$=$1+$3;}
| Exp ‘-’ T_INTEGER {$$=$1-$3;}
| T_INTEGER {$$=$1;}
같은 경우에 $1, $3의 값은 각 토큰을 가져왔을 때 yyval에 들어있는 값이다.
3. 참고 자료
https://www.joinc.co.kr/w/Site/Development/Env/Yacc http://web.donga.ac.kr/jwjo/Lectures/Compiler_Notes/5.1.YACC%EC%98%88%EC%A0%9C(%EA%B3%84%EC%82%B0%EA%B8%B0).pdf
4. 참고
혹시 gcc 컴파일 할 때 Internal error: Aborted (program collect2)에러가 뜨면 https://sourceforge.net/projects/mingw/ 여기서 gcc 다시 설치하면 에러 없어져요