Rui Ueyama
d69a11dd25
Add _Atomic and atomic ++, -- and op= operators
2020-12-07 12:00:06 +09:00
Rui Ueyama
f6944133d2
Use hashmap for keyword lookup
2020-12-07 12:00:06 +09:00
Rui Ueyama
e0bf168041
Add long double
2020-12-07 12:00:06 +09:00
Rui Ueyama
b3772845bd
Add thread-local variable
2020-12-07 12:00:06 +09:00
Rui Ueyama
a2535163e2
Add basic "asm" statement
2020-12-07 12:00:06 +09:00
Rui Ueyama
7d80a5136d
Add typeof
2020-12-07 12:00:06 +09:00
Rui Ueyama
c61c0d0025
Add #line
2020-12-07 12:00:06 +09:00
Rui Ueyama
37998be0c1
Improve error message for multibyte characters
2020-12-07 12:00:06 +09:00
Rui Ueyama
2b2fa25507
Skip UTF-8 BOM markers
2020-12-07 12:00:06 +09:00
Rui Ueyama
238277714d
Allow to concatenate regular string literals with L/u/U string literals
2020-12-07 12:00:06 +09:00
Rui Ueyama
0e5d250ebf
Allow multibyte UTF-8 character in identifier
2020-12-07 12:00:06 +09:00
Rui Ueyama
36230e0827
Add UTF-16 string literal initializer
2020-12-07 12:00:06 +09:00
Rui Ueyama
cae061af2b
Add wide string literal
2020-12-07 12:00:06 +09:00
Rui Ueyama
c467ee665d
Add UTF-32 string literal
2020-12-07 12:00:06 +09:00
Rui Ueyama
9cabe1f204
Add UTF-16 string literal
2020-12-07 12:00:06 +09:00
Rui Ueyama
57b21fe902
Add UTF-8 string literal
2020-12-07 12:00:06 +09:00
Rui Ueyama
2dac3afece
Add UTF-32 character literal
2020-12-07 12:00:06 +09:00
Rui Ueyama
454618cd15
Add UTF-16 character literal
2020-12-07 12:00:06 +09:00
Rui Ueyama
a57c661d46
Accept multibyte character as wide character literal
...
On most Unix-like systems, wide character literal is 32-bit long
and encodes a Unicode code point. On Windows, that is 16-bit
long and encodes a UTF-16 code unit. Clearly, there's a portability
issue here. Personally I've never used wide characters in my code
as I didn't find it useful.
Being said that, some header files contain wide character literal,
so we need to support that so that chibicc can include such files.
We assume that source files are always encoded in UTF-8.
2020-12-07 12:00:06 +09:00
Rui Ueyama
c31886aa7a
Add \u and \U escape sequences
2020-12-07 12:00:06 +09:00
Rui Ueyama
74bcec5b22
Canonicalize newline character
2020-12-07 12:00:06 +09:00
Rui Ueyama
3f2c2d5bca
Tokenize numeric tokens as pp-numbers
2020-12-07 12:00:06 +09:00
Rui Ueyama
7746e4ee0b
Recognize wide character literal
...
For now, L'' is equivalent to ''.
2020-12-07 12:00:06 +09:00
Rui Ueyama
b33fe0ea82
Support line continuation
2020-12-07 12:00:06 +09:00
Rui Ueyama
8f561aed9b
Add macro token-pasting operator (##)
2020-12-07 12:00:06 +09:00
Rui Ueyama
8f6f7925a0
Add macro stringizing operator (#)
2020-12-07 12:00:06 +09:00
Rui Ueyama
dec3b3fa02
Add zero-arity funclike #define
2020-12-07 12:00:06 +09:00
Rui Ueyama
bf6ff928ad
Add #if and #endif
2020-12-07 12:00:06 +09:00
Rui Ueyama
ec149f64d2
Skip extra tokens after #include "..."
2020-12-07 12:00:06 +09:00
Rui Ueyama
d367510fcc
Add #include "..."
2020-12-07 12:00:06 +09:00
Rui Ueyama
146c7b3dd4
Add the null directive
2020-12-07 12:00:06 +09:00
Rui Ueyama
1e1ea39dad
Add a do-nothing preprocessor
2020-12-07 12:00:06 +09:00
Rui Ueyama
29de46aed4
Add "float" and "double" local variables and casts
2020-12-07 12:00:06 +09:00
Rui Ueyama
1e57f72d8a
Add floating-point constant
2020-12-07 12:00:06 +09:00
Rui Ueyama
b773554275
Ignore const, volatile, auto, register, restrict or _Noreturn.
2020-12-07 12:00:06 +09:00
Rui Ueyama
aaf10459d9
Add U, L and LL suffixes
2020-12-07 12:00:06 +09:00
Rui Ueyama
34ab83bdf4
Add unsigned integral types
2020-12-07 12:00:06 +09:00
Rui Ueyama
3f59ce7955
Add signed
keyword
2020-12-07 12:00:06 +09:00
Rui Ueyama
58fc86137c
Allow to call a variadic function
2020-12-07 12:00:06 +09:00
Rui Ueyama
ee252e6ce7
Add do ... while
2020-12-07 12:00:06 +09:00
Rui Ueyama
9df51789e7
Add _Alignof and _Alignas
2020-12-07 12:00:06 +09:00
Rui Ueyama
006a45ccd4
Add extern
2020-12-07 12:00:06 +09:00
Rui Ueyama
d0c0cb74b2
Add <<, >>, <<= and >>=
2020-12-07 12:00:06 +09:00
Rui Ueyama
044d9ae07b
Add switch-case
2020-12-07 12:00:06 +09:00
Rui Ueyama
3c83dfd8af
Add continue statement
2020-12-07 12:00:06 +09:00
Rui Ueyama
b3047f2317
Add break statement
2020-12-07 12:00:06 +09:00
Rui Ueyama
6116cae4c4
Add goto and labeled statement
2020-12-07 12:00:06 +09:00
Rui Ueyama
f30f78175c
Add && and ||
2020-12-07 12:00:06 +09:00
Rui Ueyama
86440068b4
Add &, |, ^, &=, |= and ^=
2020-12-07 12:00:06 +09:00
Rui Ueyama
daa739817c
Add % and %=
2020-12-07 12:00:06 +09:00