포스터/한 페이지짜리 PDF 또는 C 언어의 8 단계 번역 목록과 비슷한 사람이 있습니까?)? 내 PC 옆에 내 벽에 매달려 하나 인쇄하고 싶습니다.C 언어의 8 단계 번역 포스터
업데이트 : 지정을 잊어 버려 죄송합니다. 나는 C90에 관심이있다. (아마도 C99는 꽤 가까이에 있지만, pmg의 대답에 언급 된 _Pragma
은 C99와 관련이 있으며 나는 이것을 피하고 싶다).
포스터/한 페이지짜리 PDF 또는 C 언어의 8 단계 번역 목록과 비슷한 사람이 있습니까?)? 내 PC 옆에 내 벽에 매달려 하나 인쇄하고 싶습니다.C 언어의 8 단계 번역 포스터
업데이트 : 지정을 잊어 버려 죄송합니다. 나는 C90에 관심이있다. (아마도 C99는 꽤 가까이에 있지만, pmg의 대답에 언급 된 _Pragma
은 C99와 관련이 있으며 나는 이것을 피하고 싶다).
ASCII 아트 : 나는 좀 더 "광택"뭔가를 기대했다
ANSI C translation phases
=========================
+-------------------------------------------------+
| map physical characters to source character set |
| replace line terminators with newlines |
| decode trigraph sequences |
+-------------------------------------------------+
|
V
+---------------------------------------+
| join lines along trailing backslashes |
+---------------------------------------+
|
V
+-------------------------------------------------------------+
| decompose into preprocessing tokens and whitespace/comments |
| strip comments |
| retain newlines |
+-------------------------------------------------------------+
|
V
+------------------------------------------------+
| execute preprocessing directives/invoke macros |
| process included files |
+------------------------------------------------+
|
V
+----------------------------------------------------------------+
| decode escape sequences in character constants/string literals |
+----------------------------------------------------------------+
|
V
+--------------------------------------+
| concatenate adjacent string literals |
+--------------------------------------+
|
V
+------------------------------------------+
| convert preprocessing tokens to C tokens |
| analyze and translate tokens |
+------------------------------------------+
|
V
+-----------------------------+
| resolve external references |
| link libraries |
| build program image |
+-----------------------------+
거의 직통 the most current draft of the revised C99 standard; 나는 다시 포맷을했다.
Print-Screen을 수행하면 설정됩니다. 승리에 대한
5.1.1.2 Translation phases
1 The precedence among the syntax rules of translation is specified by the following
phases. (*5)
1. Physical source file multibyte characters are mapped, in an implementation
defined manner, to the source character set (introducing new-line characters for
end-of-line indicators) if necessary. Trigraph sequences are replaced by
corresponding single-character internal representations.
2. Each instance of a backslash character (\) immediately followed by a new-line
character is deleted, splicing physical source lines to form logical source lines.
Only the last backslash on any physical source line shall be eligible for being part
of such a splice. A source file that is not empty shall end in a new-line character,
which shall not be immediately preceded by a backslash character before any such
splicing takes place.
3. The source file is decomposed into preprocessing tokens (*6) and sequences of
white-space characters (including comments). A source file shall not end in a
partial preprocessing token or in a partial comment. Each comment is replaced by
one space character. New-line characters are retained. Whether each nonempty
sequence of white-space characters other than new-line is retained or replaced by
one space character is implementation-defined.
4. Preprocessing directives are executed, macro invocations are expanded, and
_Pragma unary operator expressions are executed. If a character sequence that
matches the syntax of a universal character name is produced by token
concatenation (6.10.3.3), the behavior is undefined. A #include preprocessing
directive causes the named header or source file to be processed from phase 1
through phase 4, recursively. All preprocessing directives are then deleted.
5. Each source character set member and escape sequence in character constants and
string literals is converted to the corresponding member of the execution character
set; if there is no corresponding member, it is converted to an implementation-defined
member other than the null (wide) character. (*7)
6. Adjacent string literal tokens are concatenated.
7. White-space characters separating tokens are no longer significant. Each
preprocessing token is converted into a token. The resulting tokens are
syntactically and semantically analyzed and translated as a translation unit.
8. All external object and function references are resolved. Library components are
linked to satisfy external references to functions and objects not defined in the
current translation. All such translator output is collected into a program image
which contains information needed for execution in its execution environment.
(*5) Implementations shall behave as if these separate phases occur, even though many are typically folded
together in practice. Source files, translation units, and translated translation units need not
necessarily be stored as files, nor need there be any one-to-one correspondence between these entities
and any external representation. The description is conceptual only, and does not specify any
particular implementation.
(*6) Adjacent string literal tokens are concatenated.
(*7) White-space characters separating tokens are no longer significant. Each
preprocessing token is converted into a token. The resulting tokens are
syntactically and semantically analyzed and translated as a translation unit.
(바람직의 trigraph 시퀀스 등의 목록을 포함한다)하지만,이 하나의 작업을 수행합니다. 누군가가 자신이 생각하는 것보다 나은 점이 있다면 허용 된 답변을 전환하는 것을 고려할 수 있으므로 계속 답변을 추가하십시오. – hlovdal
이것은 굉장하고, 죽은 단순하고, 너무 과소 평가 된 방법입니다. +2! –