Skip to content

Latest commit

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

编译器课程设计

项目文档

程序运行

mkdir build
cd build
cmake ..
make -j4

Lex运行

./bin/lex_rel input/require.l
gcc lex.yy.c -o out
./out input/main.c

lex主要是将require.l文件解析, 然后再生成lex.yy.c文件

Yacc运行

# 使用词法分析工具生成待解析文件
./out input/yacc_test.c > lex.out
./bin/yacc_rel ./input/require.y lex.out

Yacc输入

<(,->
<$NUM,23>
<+,->
<$NUM,16>
<),->
<*,->
<$NUM,3>
<-,->
<$NUM,12>
<+,->
<$NUM,4>

Yacc运行结果

 0 s1
( 0 1 0 s6
( a 0 1 6 0 23 A->a
( A 0 1 5 0 23 s14
( A + 0 1 5 14 0 23 0 s6
( A + a 0 1 5 14 6 0 23 0 16 A->a
( A + A 0 1 5 14 23 0 23 0 16 A->A+A
( A 0 1 5 0 39 s12
( A ) 0 1 5 12 0 39 0 A->(A)
A 0 2 39 s7
A * 0 2 7 39 0 s3
A * a 0 2 7 3 39 0 3 A->a
A * A 0 2 7 17 39 0 3 A->A*A
A 0 2 117 s9
A - 0 2 9 117 0 s3
A - a 0 2 9 3 117 0 12 A->a
A - A 0 2 9 19 117 0 12 s8
A - A + 0 2 9 19 8 117 0 12 0 s3
A - A + a 0 2 9 19 8 3 117 0 12 0 4 A->a
A - A + A 0 2 9 19 8 18 117 0 12 0 4 A->A+A
A - A 0 2 9 19 117 0 16 A->A-A
A 0 2 101 Accept

About

东南大学大三编译原理课程设计

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages