Дочитал до "...БНФ с элементами регулярных выражений называют Расширенной БНФ (РБНФ)..."
и бросил.
Во-первых:
>> "...Наиболее известная форма представления грамматики — это "форма Бэкуса-Наура" >> (БНФ)..."
БНФ — форма представления "контекстно-cвободных" граматик. Например, контекстно-зависимая грамматика не может быть описана с помощью БНФ.
>>"...Для сокращения записи используются регулярные выражения..."
Я так понимаю, этим вы хотели сказать, что регулярные выражения — имеют одинаковую выразительную силу с БНФ? Тольк короче ?
Опять лажа: формализм регулярных выражений и конечных автоматов имеет одинаковую выразительную силу наряду с праволинейными(регулярными) грамматиками. Уже любую контекстно-свободную грамматику нельзая описать с помощью регулярных выражений.
inline bool isLetter(char c) {
return c >= 33 && c <= 126
//&& !strchr("()<>@,;:\.[]"); - ошибочная строка
&& !strchr("()<>@,;:\\.[]", c);
}
А в целом хорошая статья.
Re[2]: switch-конструкция - это и есть табличный разбор
От:
Аноним
Дата:
26.07.05 07:43
Оценка:
Тут со switch непонятно. Вроде б конструкция switch всегда и считалась табличным разбором... в этом контексте противопоставления switch и таблицы звучит странно...
С уважением.
Владимир Е. Зюбин
Здравствуйте, Аноним, Вы писали:
А>И, по правде говоря, выигрыш дает очень заметный. А насчет const, ох давно это было, тоже был (но он мог быть связан с погрешностью в вычислениях (был мал)).
Re: Как проверить, является ли строка числом, e-mail'ом?
Вообще, разбирающий автомат может не быть конечным (так, для Паскаля и Си используются "магазинные" (стековые) автоматы, а для Фортрана и этого недостаточно).
Поскольку не указан список литературы, используемой при подготовке материала, хотел поинтересоваться, где можно почитать поподробнее про стековые автоматы?
На мой беглый взгляд, в функции:
inline bool isLetter(char c) {
return c >= 33 && c <= 126
&& !strchr("()<>@,;:\.[]", c);
}
, ошибка(выделено то, что нужно добавить, хотя компилятор и так бы ругнулся, но тем не менее);
Заранее благодарен за ответ.
"В любое мгновение принятия решения, лучшее, что вы можете сделать, это принять правильное решение; следующим лучшим вариантом будет принять неправильное решение, худший вариант – не принимать решения совсем" (c) Теодор Рузвельт.
Re[2]: Как проверить, является ли строка числом, e-mail'ом?
Здравствуйте, np9mi7, Вы писали:
N>Поскольку не указан список литературы, используемой при подготовке материала, хотел поинтересоваться, где можно почитать поподробнее про стековые автоматы?
Прежде всего, в книгах Ахо и Ульмана по компиляторам.
N>На мой беглый взгляд, в функции: N>
N>inline bool isLetter(char c) {
N> return c >= 33 && c <= 126
N> && !strchr("()<>@,;:\.[]", c);
N>}
N>
, ошибка(выделено то, что нужно добавить, хотя компилятор и так бы ругнулся, но тем не менее);