跳转到内容

Compiler 2015: Tokens

来自ACM Class Wiki

Identifiers

An identifier is a letter followed by zero or more letters and/or digits. _ and $ and a-zA-z are considered as letters.

Comments

 // single-line comment
 /* multi-line comment */

Multi-line comments are NOT nested, so /* x /* y */ z */ SHOULD be treated as z */.

Constants

 identifier
 12345678
 01234567
 0xABCDEF
 'c'
 "string"

An identifier is a letter followed by zero or more letters and/or digits. _ and $ are considered as letters. However, a string cannot be pushed onto a second line. For example, when compiling the below program, you should report an error:

 int main(){
 "\n
 ";}

Keywords

 typedef
 void
 char
 int
 struct
 union
 if
 else
 while
 for
 continue
 break
 return
 sizeof

Keywords defined in ANSI C but not defined here SHOULD be ignored, e.g. static, const, bool, etc. If you see these, just view it as normal variables. (You may assume that testcases will not cover these keywords.)

Single-character operators

 (
 )
 ;
 ,
 =
 {
 }
 [
 ]
 *
 |
 ^
 &
 <
 >
 +
 -
 *
 /
 %
 ~
 !
 .

Multi-character operators

 OR   ||
 AND  &&
 EQ   ==
 NE   !=
 LE   <=
 GE   >=
 SHL  <<
 SHR  >>
 INC  ++
 DEC  --
 PTR  ->
 ELLIPSIS ...
 MUL_ASSIGN  *=
 DIV_ASSIGN  /=
 MOD_ASSIGN  %=
 ADD_ASSIGN  +=
 SUB_ASSIGN  -=
 SHL_ASSIGN  <<=
 SHR_ASSIGN  >>=
 AND_ASSIGN  &=
 XOR_ASSIGN  ^=
 OR_ASSIGN   |=