Языки программирования и трансляторы.Синтаксический анализатор с использованием одного из табличных методов, страница 3

Тестирование данного способа показывает, что построенный таким образом синтаксический анализатор  успешно реализует LL(1)-метод анализа.
Следующий этап – построение для данной грамматики диаграммы состояний:



По диаграмме состояний строим таблицу разбора:


Состояние

Терминалы

jump

accept

stack

return

error

1

while

25

0

0

0

0

2

id

29

0

0

0

1

3

while

35

0

0

0

0

4

id

39

0

0

0

0

5

eos

45

0

0

0

1

6

while

46

0

0

0

0

7

id

49

0

0

0

1

8

while

54

0

0

0

0

9

id

57

0

0

0

0

10

eos

62

0

0

0

1

11

id

63

0

0

0

0

12

const

67

0

0

0

1

13

id

71

0

0

0

0

14

const

73

0

0

0

1

15

+

75

0

0

0

0

16

-

77

0

0

0

0

17

;

79

0

0

0

1

18

82

0

0

0

0

19

84

0

0

0

0

20

+

86

0

0

0

0

21

-

88

0

0

0

0

22

)

90

0

0

0

1

23

id

80

0

0

0

0

24

const

81

0

0

0

1

25

while

26

1

0

0

1

26

(

27

1

0

0

1

27

id,const

11

0

1

0

1

28

while,id,eos

3

0

0

0

1

29

id

30

1

0

0

1

30

=

31

1

0

0

1

31

id,const

13

0

1

0

1

32

;

33

1

0

0

1

33

while,id,eos

8

0

1

0

1

34

while,id,eos

3

0

0

0

1

35

while

36

1

0

0

1

36

(

37

1

0

0

1

37

id,const

11

0

1

0

1

38

while,id,eos

3

0

0

0

1

39

id

40

1

0

0

1

40

=

41

1

0

0

1

41

id,const

13

0

1

0

1

42

;

43

1

0

0

1

43

while,id,eos

8

0

1

0

1

44

while,id,eos

3

0

0

0

1

45

eos

0

0

0

1

1

46

while

47

1

0

0

1

47

(

48

1

0

0

1

48

id,const

11

0

0

0

1

49

id

50

1

0

0

1

50

=

51

1

0

0

1

51

id,const

13

0

1

0

1

52

;

53

1

0

0

1

53

while,id,eos

8

0

0

0

1

54

while

55

1

0

0

1

55

(

56

1

0

0

1

56

id,const

11

0

0

0

1

57

id

58

1

0

0

1

58

=

59

1

0

0

1

59

id,const

13

0

1

0

1

60

;

61

1

0

0

1

61

while,id,eos

8

0

0

0

1

62

eos

0

0

0

1

1

63

id

64

1

0

0

1

64

<,>,+,-,)

18

0

1

0

1

65

)

66

1

0

0

1

66

while,id

6

0

0

0

1

67

const

68

1

0

0

1

68

<,>,+,-,)

18

0

1

0

1

69

)

70

1

0

0

1

70

while,id

6

0

0

0

1

71

id

72

1

0

0

1

72

+,-,;

15

0

0

0

1

73

const

74

1

0

0

1

74

+,-,;

15

0

0

0

1

75

+

76

1

0

0

1

76

id,const

23

0

0

0

1

77

-

78

1

0

0

1

78

id,const

23

0

0

0

1

79

;

0

0

0

1

1

80

id

0

1

0

1

1

81

const

0

1

0

1

1

82

83

1

0

0

1

83

id,const

23

0

0

0

1

84

85

1

0

0

1

85

id,const

23

0

0

0

1

86

+

87

1

0

0

1

87

id,const

23

0

0

0

1

88

-

89

1

0

0

1

89

id,const

23

0

0

0

1

90

)

0

0

0

1

1