Здравствуйте, zoo1982, Вы писали:
Z>А как вам такая задачка? Хотите голову поломать?
Z>Consider the following grammar rules. Z><Expr> ::= <IntersectExpr> | '0' Z><IntersectExpr> ::= <UnionExpr> | <Intersect> Z><Intersect> ::= '(' <UnionExpr> '*' <Expr> ')' Z><UnionExpr> :== <RegionExpr> | <Union> Z><Union> :== '(' <RegionExpr> '+' <Expr> ')' Z><RegionExpr> :== <Coordinate> 'x' <Coordinate> Z><Coordinate> :== '1'..'9'
Z>Which of the following input strings correspond to the production '<Expr>'?
Z>1) (4x8+8x4+8x8) Z>2) ((2x3+4x5)*0) Z>3) (2x3+8x98)*(2x3+0) Z>4) ((0*0)+2) Z>5) ((1..9)) Z>6) ((4x8*4x9)+0x3
Вот это как раз совершенно нормальная задача, если знать, что такое EBNF.
Если я внимательно смотрел, то соответствуют выражения под номерами 1, 2, 3 и 6.
номер 4 не подходит: '2' (<Coordinate>) входит только в конструкцию <RegionExpr>, а тут символ '+', а не 'х'.
номер 5 не подходит: символа '.' вообще нет в данном синтаксисе.