tmp.txt

来自「一个C语言的编译器」· 文本 代码 · 共 456 行

TXT
456
字号
	1: reserved word: int
	1: ID, name= f
	1: (
	1: reserved word: int
	1: ID, name= n
	1: )
	2: {
	3: reserved word: int
	3: ID, name= j
	3: ;
	4: reserved word: int
	4: ID, name= p
	4: =
	4: NUM, val= 1
	4: ;
	5: reserved word: int
	5: ID, name= q
	5: =
	5: NUM, val= 1
	5: ;
	6: reserved word: if
	6: (
	6: ID, name= n
	6: ==
	6: NUM, val= 0
	6: &&
	6: ID, name= n
	6: ==
	6: NUM, val= 1
	6: )
	7: {
	8: ID, name= j
	8: =
	8: NUM, val= 1
	8: ;
	9: }
	10: reserved word: while
	10: (
	10: ID, name= n
	10: !=
	10: NUM, val= 1
	10: )
	11: {
	12: ID, name= j
	12: =
	12: ID, name= p
	12: +
	12: ID, name= q
	12: ;
	13: ID, name= p
	13: =
	13: ID, name= q
	13: ;
	14: ID, name= q
	14: =
	14: ID, name= j
	14: ;
	15: ID, name= n
	15: --
	15: ;
	16: }
	17: reserved word: output
	17: (
	17: ID, name= j
	17: )
	17: ;
	18: reserved word: return
	18: ID, name= j
	18: ;
	19: }
	20: reserved word: void
	20: ID, name= main
	20: (
	20: )
	21: {
	22: reserved word: int
	22: ID, name= a
	22: ;
	23: reserved word: int
	23: ID, name= b
	23: ;
	24: reserved word: int
	24: ID, name= c
	24: =
	24: NUM, val= 8
	24: ;
	25: reserved word: char
	25: ID, name= m
	25: ;
	26: reserved word: char
	26: ID, name= k
	26: =
	26: SCHAR, val= 'k'
	26: ;
	27: reserved word: int
	27: ID, name= r
	27: ;
	28: reserved word: int
	28: ID, name= i
	28: ;
	29: reserved word: input
	29: (
	29: ID, name= a
	29: )
	29: ;
	30: reserved word: input
	30: (
	30: ID, name= b
	30: )
	30: ;
	31: ID, name= r
	31: =
	31: ID, name= a
	31: +
	31: ID, name= b
	31: ;
	32: reserved word: output
	32: (
	32: ID, name= r
	32: )
	32: ;
	33: ID, name= r
	33: =
	33: ID, name= a
	33: -
	33: ID, name= b
	33: ;
	34: reserved word: output
	34: (
	34: ID, name= r
	34: )
	34: ;
	35: ID, name= r
	35: =
	35: ID, name= a
	35: *
	35: ID, name= b
	35: ;
	36: reserved word: output
	36: (
	36: ID, name= r
	36: )
	36: ;
	37: ID, name= r
	37: =
	37: ID, name= a
	37: /
	37: ID, name= b
	37: ;
	38: reserved word: output
	38: (
	38: ID, name= r
	38: )
	38: ;
	39: ID, name= r
	39: =
	39: ID, name= a
	39: %
	39: ID, name= b
	39: ;
	40: reserved word: output
	40: (
	40: ID, name= r
	40: )
	40: ;
	41: ID, name= r
	41: ++
	41: ;
	42: reserved word: output
	42: (
	42: ID, name= r
	42: )
	42: ;
	43: ID, name= r
	43: --
	43: ;
	44: reserved word: output
	44: (
	44: ID, name= r
	44: )
	44: ;
	45: reserved word: if
	45: (
	45: ID, name= a
	45: >
	45: ID, name= b
	45: &&
	45: ID, name= a
	45: <
	45: ID, name= c
	45: )
	46: {
	47: ID, name= r
	47: =
	47: ID, name= a
	47: ;
	48: }
	49: reserved word: output
	49: (
	49: ID, name= r
	49: )
	49: ;
	50: ID, name= r
	50: =
	50: NUM, val= 0
	50: ;
	51: reserved word: for
	51: (
	51: ID, name= i
	51: =
	51: NUM, val= 0
	51: ;
	51: ID, name= i
	51: <
	51: NUM, val= 101
	51: ;
	51: ID, name= i
	51: ++
	51: )
	52: {
	53: ID, name= r
	53: =
	53: ID, name= r
	53: +
	53: ID, name= i
	53: ;
	54: }
	55: reserved word: output
	55: (
	55: ID, name= r
	55: )
	55: ;
	56: ID, name= r
	56: =
	56: ID, name= r
	56: <<
	56: NUM, val= 1
	56: ;
	57: reserved word: output
	57: (
	57: ID, name= r
	57: )
	57: ;
	58: ID, name= r
	58: =
	58: NUM, val= 5
	58: ;
	59: ID, name= r
	59: =
	59: ID, name= f
	59: (
	59: ID, name= r
	59: )
	59: ;
	60: reserved word: output
	60: (
	60: ID, name= r
	60: )
	60: ;
	61: }
	62: End_Flag: '\0'

Syntax tree:
  Fun_Def name: f		Return_Type: Integer
    Param_Dec Param_Type: Integer
    Comp_Dec 
      ID_Dec Var_Type: Integer
        Var: j
      ID_Dec Var_Type: Integer
        Assign
          Var: p
          Num_Const: 1
      ID_Dec Var_Type: Integer
        Assign
          Var: q
          Num_Const: 1
      If
        Op: &&
          Op: ==
            Var: n
            Num_Const: 0
          Op: ==
            Var: n
            Num_Const: 1
        Comp_Dec 
          Assign
            Var: j
            Num_Const: 1
      While
        Op: !=
          Var: n
          Num_Const: 1
        Comp_Dec 
          Assign
            Var: j
            Op: +
              Var: p
              Var: q
          Assign
            Var: p
            Var: q
          Assign
            Var: q
            Var: j
          Op: --
            Var: n
            Return
        Var: j
  Fun_Def name: main		Return_Type: Void
    Comp_Dec 
      ID_Dec Var_Type: Integer
        Var: a
      ID_Dec Var_Type: Integer
        Var: b
      ID_Dec Var_Type: Integer
        Assign
          Var: c
          Num_Const: 8
      ID_Dec Var_Type: Char
        Var: m
      ID_Dec Var_Type: Char
        Assign
          Var: k
          Char_Const: k
      ID_Dec Var_Type: Integer
        Var: r
      ID_Dec Var_Type: Integer
        Var: i
                  Assign
        Var: r
        Op: +
          Var: a
          Var: b
            Assign
        Var: r
        Op: -
          Var: a
          Var: b
            Assign
        Var: r
        Op: *
          Var: a
          Var: b
            Assign
        Var: r
        Op: /
          Var: a
          Var: b
            Assign
        Var: r
        Op: %
          Var: a
          Var: b
            Op: ++
        Var: r
            Op: --
        Var: r
            If
        Op: &&
          Op: >
            Var: a
            Var: b
          Op: <
            Var: a
            Var: c
        Comp_Dec 
          Assign
            Var: r
            Var: a
            Assign
        Var: r
        Num_Const: 0
              Assign
          Var: i
          Num_Const: 0
        Op: <
          Var: i
          Num_Const: 101
        Comp_Dec 
          Assign
            Var: r
            Op: +
              Var: r
              Var: i
        Op: ++
          Var: i
            Assign
        Var: r
        Op: <<
          Var: r
          Num_Const: 1
            Assign
        Var: r
        Num_Const: 5
      Assign
        Var: r
        Call to: f
          Var: r
      
Building Symbol Table...

Function table:

Function Name  Type    
-------------  ----    
main           Void
Parameter
---------
f              Integer
Parameter
---------
n Integer
Symbol table:

Nestlevel: 0
Variable Name  Type
-------------  --------------

Nestlevel: 1
Variable Name  Type
-------------  --------------
j              Integer
p              Integer
q              Integer

Nestlevel: 2
Variable Name  Type
-------------  --------------

Nestlevel: 2
Variable Name  Type
-------------  --------------

Nestlevel: 1
Variable Name  Type
-------------  --------------
i              Integer
k              Char
m              Char
a              Integer
b              Integer
c              Integer
r              Integer

Nestlevel: 2
Variable Name  Type
-------------  --------------

Nestlevel: 2
Variable Name  Type
-------------  --------------

Checking Types...

Type Checking Finished

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?