浏览代码

初步移植成功

SongZihuan 5 年之前
父节点
当前提交
0a29071f1f
共有 8 个文件被更改,包括 668 次插入21 次删除
  1. 500 0
      debug.log
  2. 二进制
      gwarf
  3. 5 8
      gwarf.c
  4. 1 6
      paser/lexical.c
  5. 5 5
      paser/paser.c
  6. 1 1
      paser/syntax.c
  7. 0 1
      paser/tokenstream.c
  8. 156 0
      status.log

+ 500 - 0
debug.log

@@ -0,0 +1,500 @@
+[info][lexical]  set_start
+
+[info][lexical]  p = '('
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -3
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 0
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[debug][lexical]  continue to paser
+
+[info][lexical]  p = '2'
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -2
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 1
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[info][lexical]  back_p
+
+[info][lexical]  get value = '(' len = 1 from 8
+
+[debug]token type = 8
+
+[info][lexical]  set_start
+
+[info][lexical]  p = '2'
+
+[debug][lexical]  check list : paser_list[0]->status = 1
+[debug][lexical]  check list : paser_list[1]->status = 1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 0
+[debug][lexical]  check list : not_count = 8
+[debug][lexical]  check list : count all = 10
+
+[debug][lexical]  continue to paser
+
+[info][lexical]  p = ' '
+
+[debug][lexical]  check list : paser_list[0]->status = -2
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 1
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[info][lexical]  back_p
+
+[info][lexical]  get value = '2' len = 1 from 0
+
+[debug]token type = 0
+
+[info][lexical]  set_start
+
+[info][lexical]  p = ' '
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -3
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 0
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[debug][lexical]  continue to paser
+
+[info][lexical]  p = '+'
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -2
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 1
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[info][lexical]  back_p
+
+[info][lexical]  get value = ' ' len = 1 from 3
+
+[info][lexical]  set_start
+
+[info][lexical]  p = '+'
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -3
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 0
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[debug][lexical]  continue to paser
+
+[info][lexical]  p = ' '
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -2
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 1
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[info][lexical]  back_p
+
+[info][lexical]  get value = '+' len = 1 from 4
+
+[debug]token type = 4
+
+[info][lexical]  set_start
+
+[info][lexical]  p = ' '
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -3
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 0
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[debug][lexical]  continue to paser
+
+[info][lexical]  p = '2'
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -2
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 1
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[info][lexical]  back_p
+
+[info][lexical]  get value = ' ' len = 1 from 3
+
+[info][lexical]  set_start
+
+[info][lexical]  p = '2'
+
+[debug][lexical]  check list : paser_list[0]->status = 1
+[debug][lexical]  check list : paser_list[1]->status = 1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 0
+[debug][lexical]  check list : not_count = 8
+[debug][lexical]  check list : count all = 10
+
+[debug][lexical]  continue to paser
+
+[info][lexical]  p = ')'
+
+[debug][lexical]  check list : paser_list[0]->status = -2
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 1
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[info][lexical]  back_p
+
+[info][lexical]  get value = '2' len = 1 from 0
+
+[debug]token type = 0
+
+[info][lexical]  set_start
+
+[info][lexical]  p = ')'
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -3
+[debug][lexical]  check list : end_count = 0
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[debug][lexical]  continue to paser
+
+[info][lexical]  p = ' '
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -2
+[debug][lexical]  check list : end_count = 1
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[info][lexical]  back_p
+
+[info][lexical]  get value = ')' len = 1 from 9
+
+[debug]token type = 9
+
+[info][grammar]  (polynomial)out
+[info][lexical]  set_start
+
+[info][lexical]  p = ' '
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -3
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 0
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[debug][lexical]  continue to paser
+
+[info][lexical]  p = '*'
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -2
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 1
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[info][lexical]  back_p
+
+[info][lexical]  get value = ' ' len = 1 from 3
+
+[info][lexical]  set_start
+
+[info][lexical]  p = '*'
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -3
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 0
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[debug][lexical]  continue to paser
+
+[info][lexical]  p = ' '
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -2
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 1
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[info][lexical]  back_p
+
+[info][lexical]  get value = '*' len = 1 from 6
+
+[debug]token type = 6
+
+[info][lexical]  set_start
+
+[info][lexical]  p = ' '
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -3
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 0
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[debug][lexical]  continue to paser
+
+[info][lexical]  p = '3'
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -2
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 1
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[info][lexical]  back_p
+
+[info][lexical]  get value = ' ' len = 1 from 3
+
+[info][lexical]  set_start
+
+[info][lexical]  p = '3'
+
+[debug][lexical]  check list : paser_list[0]->status = 1
+[debug][lexical]  check list : paser_list[1]->status = 1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 0
+[debug][lexical]  check list : not_count = 8
+[debug][lexical]  check list : count all = 10
+
+[debug][lexical]  continue to paser
+
+[info][lexical]  p = <Enter>
+
+[debug][lexical]  check list : paser_list[0]->status = -2
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -1
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 1
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[info][lexical]  back_p
+
+[info][lexical]  get value = '3' len = 1 from 0
+
+[debug]token type = 0
+
+[info][lexical]  set_start
+
+[info][lexical]  p = <Enter>
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -3
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 0
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[debug][lexical]  continue to paser
+
+[info][lexical]  p = <EOF>
+
+[debug][lexical]  check list : paser_list[0]->status = -1
+[debug][lexical]  check list : paser_list[1]->status = -1
+[debug][lexical]  check list : paser_list[2]->status = -2
+[debug][lexical]  check list : paser_list[3]->status = -1
+[debug][lexical]  check list : paser_list[4]->status = -1
+[debug][lexical]  check list : paser_list[5]->status = -1
+[debug][lexical]  check list : paser_list[6]->status = -1
+[debug][lexical]  check list : paser_list[7]->status = -1
+[debug][lexical]  check list : paser_list[8]->status = -1
+[debug][lexical]  check list : paser_list[9]->status = -1
+[debug][lexical]  check list : end_count = 1
+[debug][lexical]  check list : not_count = 9
+[debug][lexical]  check list : count all = 10
+
+[info][lexical]  back_p
+
+[info][lexical]  get value = '
+' len = 1 from 2
+
+[debug]token type = 2
+
+[info][grammar]  (polynomial)out
+[info][paser]  stop run

二进制
gwarf


+ 5 - 8
gwarf.c

@@ -3,7 +3,7 @@
 #include <string.h>
 #include <string.h>
 
 
 #include "mem/mem.c"
 #include "mem/mem.c"
-#include "paser/y.tab.c"
+#include "paser/paser.c"
 #include "inter/branch.c"
 #include "inter/branch.c"
 #include "inter/cfunc.c"
 #include "inter/cfunc.c"
 #include "inter/parameter.c"
 #include "inter/parameter.c"
@@ -21,9 +21,9 @@ int main(){
     login(the_var);
     login(the_var);
 
 
     parser("/home/songzihuan/test.gwf");
     parser("/home/songzihuan/test.gwf");
-    printf("----start run----\n");
-    traverse_global(global_inter->global_code, the_var);
-    printf("code end...\n");
+    // printf("----start run----\n");
+    // traverse_global(global_inter->global_code, the_var);
+    // printf("code end...\n");
     return 0;
     return 0;
 }
 }
 
 
@@ -49,7 +49,4 @@ void login(var_list *the_var){
     AssignmentException_login_official(the_var, tmp_Exception->the_var);
     AssignmentException_login_official(the_var, tmp_Exception->the_var);
 }
 }
 
 
-// 编译指令:cd "/home/songzihuan/文档/CProject/gwarf/" && gcc gwarf.c -lm -o gwarf && "/home/songzihuan/文档/CProject/gwarf/"gwarf
-// yacc和lex:cd ./paser && yacc -d gwarf_yacc.y && lex gwarf_lex.l
-// 合并编译:cd "/home/songzihuan/文档/CProject/gwarf/" && cd ./paser && yacc --verbose -d gwarf_yacc.y && lex gwarf_lex.l && cd .. && gcc gwarf.c -lm -o gwarf && "/home/songzihuan/文档/CProject/gwarf/"gwarf
-// --verbose 用于yacc生成.output文件
+// 合并编译:cd "/home/songzihuan/文档/CProject/gwarf/" && gcc gwarf.c -lm -o gwarf && "/home/songzihuan/文档/CProject/gwarf/"gwarf

+ 1 - 6
paser/lexical.c

@@ -1,12 +1,7 @@
-#include "mem.h"
+// #include "mem.h"
 #include "lex.h"
 #include "lex.h"
 #include "token.h"
 #include "token.h"
 
 
-#define malloc(size) safe_malloc(size)
-#define free(p) p=safe_free(p)
-#define realloc(p,size) safe_realloc(p,size)
-#define memcpy(p1,p2,size) safe_memcpy(p1,p2,size)
-
 void match_int(char, word_paser *);
 void match_int(char, word_paser *);
 void match_double(char, word_paser *);
 void match_double(char, word_paser *);
 void match_text(char, word_paser *, char *);
 void match_text(char, word_paser *, char *);

+ 5 - 5
paser/paser.c

@@ -2,8 +2,8 @@
 #include <string.h>
 #include <string.h>
 #include <stdlib.h>
 #include <stdlib.h>
 
 
+#include"../inter/interpreter.h"
 #include "paser.h"
 #include "paser.h"
-#include "mem.c"
 #include "lexical.c"
 #include "lexical.c"
 #include "tokenstream.c"
 #include "tokenstream.c"
 #include "syntax.c"
 #include "syntax.c"
@@ -13,17 +13,17 @@ int paser_status = 1;
 void do_exit(void);
 void do_exit(void);
 void setup();
 void setup();
 
 
-int main(){
+int parser(char *file_address){
     atexit(*do_exit);
     atexit(*do_exit);
-    setup();
+    setup(file_address);
     safe_get_token(&paser_status, global_token_node);
     safe_get_token(&paser_status, global_token_node);
     polynomial(&paser_status, global_token_node);
     polynomial(&paser_status, global_token_node);
     return 0;
     return 0;
 }
 }
 
 
-void setup(){
+void setup(char *file){
     global_paser = login_paser();  // 注册解释器[往global_paser写入数据]
     global_paser = login_paser();  // 注册解释器[往global_paser写入数据]
-    file_p = fopen("/home/songzihuan/lex.test", "r");  // 打开文件
+    file_p = fopen(file, "r");  // 打开文件
     debug = fopen("./debug.log", "w");  // 设置debug的位置
     debug = fopen("./debug.log", "w");  // 设置debug的位置
     status_log = fopen("./status.log", "w");  // 设置debug的位置
     status_log = fopen("./status.log", "w");  // 设置debug的位置
     global_token_node = make_token_node();
     global_token_node = make_token_node();

+ 1 - 1
paser/syntax.c

@@ -1,6 +1,6 @@
 #include"token.h"
 #include"token.h"
 #include"lex.h"
 #include"lex.h"
-#include "mem.h"
+#include"../inter/interpreter.h"
 
 
 void factor(int *status, token_node *list);
 void factor(int *status, token_node *list);
 void number(int *status, token_node *list);
 void number(int *status, token_node *list);

+ 0 - 1
paser/tokenstream.c

@@ -1,5 +1,4 @@
 #include"token.h"
 #include"token.h"
-#include "mem.h"
 
 
 token_node *make_token_node(){
 token_node *make_token_node(){
     token_node *tmp = (token_node *)malloc(sizeof(tmp));
     token_node *tmp = (token_node *)malloc(sizeof(tmp));

+ 156 - 0
status.log

@@ -0,0 +1,156 @@
+[debug][grammar]  get token type : 8; data type : 0
+[debug][grammar]  add a token[seek : 0, index : 0, size : 1]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: polynomial
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (polynomial)back one token to (factor)
+[debug][grammar]  add a token[seek : 0, index : 0, size : 2]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: factor
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (factor)back one token to (number)
+[debug][grammar]  add a token[seek : 0, index : 0, size : 2]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: number
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (number)get LB
+[debug][grammar]  get token type : 0; data type : 0
+[debug][grammar]  add a token[seek : 0, index : 0, size : 2]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: polynomial
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (polynomial)back one token to (factor)
+[debug][grammar]  add a token[seek : 0, index : 0, size : 2]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: factor
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (factor)back one token to (number)
+[debug][grammar]  add a token[seek : 0, index : 0, size : 2]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: number
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (number)get int number: 2
+[info][grammar]  (number)add one token
+[debug][grammar]  add a token[seek : 0, index : 0, size : 2]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[debug][grammar]  add a token[seek : 0, index : 0, size : 2]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: factor
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (factor)reduce right
+[debug][grammar]  get token type : 4; data type : 0
+[debug][grammar]  add a token[seek : 0, index : 0, size : 2]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (factor)out
+[debug][grammar]  add a token[seek : 0, index : 0, size : 2]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  add a token[seek : 1, index : 1, size : 2]
+[debug][grammar]  after add a token[seek : 2, index : 2]
+[debug][grammar]  back a token[seek : 2, index : 2]
+[debug][grammar]  pop a token[seek : 0, index : 1]
+[debug][grammar]  add a token[seek : 0, index : 1, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 2]
+[info][grammar]  mode status: polynomial
+[debug][grammar]  pop a token[seek : 0, index : 1]
+[info][grammar]  (factor)reduce right
+[debug][grammar]  get token seek += 1 : 0, index : 1
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[debug][grammar]  get token type : 0; data type : 0
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: factor
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (factor)back one token to (number)
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: number
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (number)get int number: 2
+[info][grammar]  (number)add one token
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: factor
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (factor)reduce right
+[debug][grammar]  get token type : 9; data type : 0
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (factor)out
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  add a token[seek : 1, index : 1, size : 3]
+[debug][grammar]  after add a token[seek : 2, index : 2]
+[debug][grammar]  back a token[seek : 2, index : 2]
+[debug][grammar]  pop a token[seek : 0, index : 1]
+[debug][grammar]  add a token[seek : 0, index : 1, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 2]
+[info][grammar]  mode status: polynomial
+[debug][grammar]  pop a token[seek : 0, index : 1]
+[info][grammar]  (factor)reduce right
+[debug][grammar]  get token seek += 1 : 0, index : 1
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  add a token[seek : 1, index : 1, size : 3]
+[debug][grammar]  after add a token[seek : 2, index : 2]
+[debug][grammar]  back a token[seek : 2, index : 2]
+[debug][grammar]  pop a token[seek : 0, index : 1]
+[debug][grammar]  get token seek += 1 : 0, index : 1
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (number)add one token
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: factor
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (factor)reduce right
+[debug][grammar]  get token type : 6; data type : 0
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[debug][grammar]  get token type : 0; data type : 0
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: number
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (number)get int number: 3
+[info][grammar]  (number)add one token
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[info][grammar]  mode status: factor
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (factor)reduce right
+[debug][grammar]  get token type : 2; data type : 0
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[info][grammar]  (factor)out
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  add a token[seek : 1, index : 1, size : 3]
+[debug][grammar]  after add a token[seek : 2, index : 2]
+[debug][grammar]  back a token[seek : 2, index : 2]
+[debug][grammar]  pop a token[seek : 0, index : 1]
+[debug][grammar]  add a token[seek : 0, index : 1, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 2]
+[info][grammar]  mode status: polynomial
+[debug][grammar]  pop a token[seek : 0, index : 1]
+[info][grammar]  (factor)reduce right
+[debug][grammar]  get token seek += 1 : 0, index : 1
+[debug][grammar]  pop a token[seek : 0, index : 0]
+[debug][grammar]  add a token[seek : 0, index : 0, size : 3]
+[debug][grammar]  after add a token[seek : 1, index : 1]
+[debug][grammar]  add a token[seek : 1, index : 1, size : 3]
+[debug][grammar]  after add a token[seek : 2, index : 2]
+[debug][grammar]  back a token[seek : 2, index : 2]