Описание формальной грамматики
Грамматика целевого символа:
(1) <S> -> using <USING_LIST> <NEXT>
(2) <S> -> public <CLASS> <NEXT>
(3) <NEXT> ->; <S>
(4) <NEXT> -> e
Грамматика описания using:
(5) <USING_LIST> -> ID <NEXT_USING>
(6) <NEXT_USING> ->. <USING_LIST>
(7) <NEXT_USING> -> e
Грамматика описания класса:
(8) <CLASS> -> class ID { <CLASS_BODY> }
(9) <CLASS_BODY> -> public <DEF> <NEXT_BODY>
(10) <NEXT_BODY> ->; <CLASS_BODY>
(11) <NEXT_BODY> -> e
Грамматика описания определения полей и методов класса:
(12) <DEF> -> uint <DEF_LIST>
(13) <DEF> -> bool <DEF_LIST>
(14) <DEF> -> const long int <DEF_LIST>
(15) <DEF_LIST> -> ID <NEXT_DEF>
(16) <NEXT_DEF> -> (<VAR_LIST>) { <OPER_LIST> }
(17) <NEXT_DEF> ->, <VAR_LIST>
(18) <NEXT_DEF> -> = <EXPR> <VAR_LIST>
(19) <NEXT_DEF> -> e
(20) <VAR_LIST> -> ID <NEXT_VAR>
(21) <NEXT_VAR> ->, <VAR_LIST>
(22) <NEXT_VAR> -> = <EXPR> <VAR_LIST>
(23) <NEXT_VAR> -> e
Грамматика описания списка операторов:
(24) <OPER_LIST> -> <OPERATOR> <NEXT_OPER>
(25) <NEXT_OPER> ->; <OPER_LIST>
(26) <NEXT_OPER> -> e
Грамматика описания операторов:
(27) <OPERATOR> -> for (ID = <EXPR>; <COND>; ID <LET>) { <OPER_LIST> }
(28) <OPERATOR> -> break
(29) <OPERATOR> -> continue
(30) <OPERATOR> -> write (<VAR_LIST>)
(31) <OPERATOR> -> read (<VAR_LIST>)
(32) <OPERATOR> -> ID <LET>
(33) <LET> -> = <EXPR>
(34) <LET> -> * = <EXPR>
(35) <LET> -> / = <EXPR>
Грамматика описания арифметического выражения:
(36) <EXPR> -> (<EXPR>) <OPERATION>
(37) <EXPR> -> ID <OPERATION>
(38) <EXPR> -> NUM <OPERATION>
(39) <OPERATION> -> + <EXPR>
(40) <OPERATION> -> - <EXPR>
(41) <OPERATION> -> e
Грамматика описания условия:
(42) <COND> -> (<COND>) <RELATION>
(43) <COND> -> <EXPR> <RELATION>
(44) <RELATION> -> > <COND>
(45) <RELATION> -> < <COND>
(46) <RELATION> -> = = <COND>
(47) <RELATION> -> e