728x90 BoB/Compiler4 [v4, 5.] flex and bison 4단계 : 잘못된 수식을 입력하면, 수식에서 연산자의 좌변, 우변 중 불충분한 부분을 오류로 출력하기 5단계 : 주석기능으로 수식 // 을 인식하고, 이후의 문자열은 예외처리하는 수식 계산기 [makefile] all: compiler_v4-5 compiler_v4-5: compiler.l compiler.y bison -d compiler.y flex compiler.l cc -o $@ compiler.tab.c lex.yy.c -lfl clean: rm -f *.c rm -f compiler_v4-5 rm -f *.h [compiler.l] %{ #include "compiler.tab.h" #include #include %} %% "+" { return ADD; } "-" { return SUB;.. 2022. 3. 17. [v3.] flex and bison 3단계 : 소괄호 '( )' 로 묶은 수식을 우선하여 사칙연산을 수행하기 [makefile] all: compiler_v3 compiler_v3: compiler.l compiler.y bison -d compiler.y flex compiler.l cc -o $@ compiler.tab.c lex.yy.c -lfl clean: rm -f *.c rm -f compiler_v3 rm -f *.h [compiler.l] %{ #include "compiler.tab.h" #include #include %} %% "+" { return ADD; } "-" { return SUB; } "*" { return MUL; } "/" { return DIV; } "|" { return ABS; } ([0-9]+\... 2022. 3. 17. [v2.] flex and bison 2단계 : 소수점이 있는 수를 입력받아 사칙연산을 수행하기 [makefile] all: compiler_v2 compiler_v2: compiler.l compiler.y bison -d compiler.y flex compiler.l cc -o $@ compiler.tab.c lex.yy.c -lfl clean: rm -f *.c rm -f compiler_v2 rm -f *.h [compiler.l] %{ #include "compiler.tab.h" #include #include %} %% "+" { return ADD; } "-" { return SUB; } "*" { return MUL; } "/" { return DIV; } "|" { return ABS; } ([0-9]+\.[0-9]+)|.. 2022. 3. 17. [v1.] flex and bison 1단계 : 정수, 절대값을 입력받아 사칙연산을 수행하기 [makefile] all: compiler_v1 compiler_v1: compiler.l compiler.y bison -d compiler.y flex compiler.l cc -o $@ compiler.tab.c lex.yy.c -lfl clean: rm -f *.c rm -f compiler_v1 rm -f *.h [compiler.l] %{ #include "compiler.tab.h" %} %% "+" { return ADD; } "-" { return SUB; } "*" { return MUL; } "/" { return DIV; } "|" { return ABS; } [0-9]+ { yylval = atoi(yytext); retur.. 2022. 3. 17. 이전 1 다음 728x90