2013-02-13 5 views
4

Я делаю программы на языке программирования C от Kernighan и Ritchie.Упражнения K и R 1-24

Я в настоящее время физических упражнений 1-24, который говорит:

Написать программу для проверки программу C для зачаточных синтаксических ошибок как несбалансированных скобок, скобки и фигурные скобки. Не забудьте про цитаты, как одиночные, так и двойные, escape sequences и комментарии.

Я все сделал хорошо ... Но я не понимаю, как escape sequences повлияет на эти скобки, скобки и фигурные скобки?

Почему они предупредили об эвакуационных последовательностях?

+0

Не рассчитывайте '\' "как часть синтаксиса –

+3

' голец выдержка [] =? "\" Ага! \", Сказал он."; '' – pmg

ответ

4

В "\"" есть три символа двойной кавычки, но все же это допустимый строковый литерал. Середина " экранирована, что означает внешние два баланса друг друга. Аналогично, '\'' является допустимым символьным символом.

Скобки, скобки и фигурные скобки не затрагиваются, если, конечно, они не отображаются в строковой литературе, что вы не разбираете правильно из-за скрытой цитаты.

+1

круглые скобки, скобки и фигурные скобки не affected.' -Это то, что я хотел! Спасибо !!! – Sam

+2

@SAM: «Круглые скобки, скобки и фигурные скобки не затрагиваются». За исключением случаев, когда они находятся внутри пары кавычек, в этом случае их следует игнорировать для синтаксиса – RobH

3

Я предполагаю, что они имели в виду, что вам нужно различать " (который начинается или заканчивается строка) и \" (который является " характер, возможно, внутри строки)

Это важно, если вы избегать сообщений, например strlen("\")"); как имеющие несбалансированные круглые скобки.

+0

Спасибо! Извините, но я могу принять только один @ время ... – Sam

2

Очевидной возможностью может быть скрытая цитата внутри строки. Если вы не учтете побег, вы можете подумать, что строка закончилась там. Например: "\")\"". ) является частью строкового литерала, поэтому он не учитывается как скоординированная скобка.

+0

Спасибо! Извините, но я могу принять только один @ время ... – Sam