aboutsummaryrefslogtreecommitdiff
path: root/src/tokenizer.cpp
AgeCommit message (Collapse)Author
2020-04-01stage1: make C++ switch fallthrough an errorMichael Dusan
Make fallthrough an error when compiler supports it. This requires a new macro that is defined with such compilers to be used as a statement, at all fallthrough sites: switch (...) { case 0: ... ZIG_FALLTHROUGH; case 1: ... break; default: ... break; } If we ever move to C++17 as minimal requirement, then the macro can be replaced with `[[fallthrough]];` at statement sites.
2020-03-30fixed bugs hitting EOF immediately after //, /// or //!Kelly Boothby
2020-03-15make parsing `0.0_e1` an errormomumi
2020-03-15allow `_` separators in number literals (stage 1)momumi
* Underscores `_` may be placed between two digits in a int/float literal * Consecutive underscores are not allowed * Fixed parsing bug in exponents of hexadecimal float literals. Exponents should always be base 10, but hex characters would be parsed inside the exponent and everything after them would be ignored. eg: `0x1.0p1ab1` would be parsed as `0x1.0p1`.
2020-02-10stage1: memory/report overhaulMichael Dusan
- split util_base.hpp from util.hpp - new namespaces: `mem` and `heap` - new `mem::Allocator` interface - new `heap::CAllocator` impl with global `heap::c_allocator` - new `heap::ArenaAllocator` impl - new `mem::TypeInfo` extracts names without RTTI - name extraction is enabled w/ ZIG_ENABLE_MEM_PROFILE=1 - new `mem::List` takes explicit `Allocator&` parameter - new `mem::HashMap` takes explicit `Allocator&` parameter - add Codegen.pass1_arena and use for all `ZigValue` allocs - deinit Codegen.pass1_arena early in `zig_llvm_emit_output()`
2020-01-15disallow multiline strings in test and library namesVexu
2020-01-06remove stdcallcc, extern, nakedcc from stage1; zig fmt rewritesAndrew Kelley
2020-01-02Implement the callconv() annotationLemonBoy
2019-11-23update the stage1 implementation to the new proposalAndrew Kelley
See #3731
2019-11-21string literals are now null terminatedAndrew Kelley
this also deletes C string literals from the language, and then makes the std lib changes and compiler changes necessary to get the behavior tests and std lib tests passing again.
2019-11-15implemented container doc comments in stage 1Vexu
2019-11-11stop accepting deprecated `use` keywordAndrew Kelley
closes #2591
2019-11-06add token for parsing pointer dereferenceBrendan Hansknecht
2019-10-09Merge pull request #3390 from nrdmn/unicode_character_literalsAndrew Kelley
unicode character literals
2019-10-07unicode character literalsNick Erdmann
2019-10-06stage1 parser supports doc commentsAndrew Kelley
2019-09-11Recognize & skip the UTF-8 BOMLemonBoy
2019-09-05implement `noasync` function callsAndrew Kelley
See #3157
2019-09-05Add the noinline keyword for function declarationsLemonBoy
2019-08-26fix some compile error regressionsAndrew Kelley
2019-08-15remove `cancel`Andrew Kelley
2019-07-26add the `anyframe` and `anyframe->T` typesAndrew Kelley
2019-07-19remove coroutines implementation and promise typeAndrew Kelley
2019-07-06Make anyerror not a keywordhryx
2019-07-04Unicode escapes: stage1 tokenizer and behavior testshryx
2019-06-09different array literal syntax when inferring the sizeAndrew Kelley
old syntax: []i32{1, 2, 3} new syntax: [_]i32{1, 2, 3} closes #1797
2019-05-29change `use` to `usingnamespace`Andrew Kelley
See #2014 `use` syntax is still accepted for now. `zig fmt` automatically updates code. After a release cycle the old syntax will be removed.
2019-05-16stage1 tokenizer: add more missing break statementsAndrew Kelley
2019-05-16Add break after digit_value check in TokenizeStateCharCodeSamTebbs33
2019-03-25implement allowzero pointer attributeAndrew Kelley
closes #1953 only needed for freestanding targets. also adds safety for `@intToPtr` when the address is zero.
2019-03-23character literals: allow unicode escapesAndrew Kelley
also make the documentation for character literals more clear. closes #2089 see #2097
2019-03-23remove octal and hex floats from the languageAndrew Kelley
closes #2093 This is technically a breaking change but I would be surprised if anyone was actually using this feature.
2019-03-22float literals now parse using musl's 128 bit float codeAndrew Kelley
fixes float literals not having 128 bit precision
2019-03-22Simplify hex-float parsing codeMarc Tiehuis
2019-03-21hex float parsing: solve another caseAndrew Kelley
this works now: 0x1.edcb34a235253948765432134674fp-1
2019-03-21fix parsing of large hex float literalsAndrew Kelley
closes #2083
2019-02-10added C pointer type and implicit int-to-ptr for this typeAndrew Kelley
See #1059
2019-02-06thread local storage working for linux x86_64Andrew Kelley
2019-01-30Move tokenizer error location to offending charMatthew McAllister
Previously, it pointed to the start of the current token, but this made it difficult to tell where the error occurred when it was, say, in the middle of a string.
2019-01-29simpler implementation of `&&` and `||` hintsAndrew Kelley
This accomplishes the same goal, but with less changes, so that I can backport copy elision stuff easier.
2019-01-25Hint at use of and/or when &&/|| is improperly used (#1886)kristopher tate
2018-11-17rename `section` keyword to `linksection`Andrew Kelley
add zig fmt support for this syntax closes #1152
2018-11-13New Zig formal grammar (#1685)Jimmi Holst Christensen
Reverted #1628 and changed the grammar+parser of the language to not allow certain expr where types are expected
2018-09-26Tweak SYMBOL_CHAR define in tokenizer.cppWink Saville
Make it a little clearer what a SYMBOL_CHAR is, use ALPHA instead of ALPHA_EXCEPT_C and case 'c', which is ALPHA's definition.
2018-09-13remove `this`. add `@This()`.Andrew Kelley
closes #1283
2018-07-18fix invalid character test on windowsAndrew Kelley
2018-06-28Correct hex-float parsingMarc Tiehuis
Unblocks #495.
2018-06-10breaking syntax change: orelse keyword instead of ?? (#1096)Andrew Kelley
use the `zig-fmt-optional-default` branch to have zig fmt automatically do the changes. closes #1023
2018-06-09breaking syntax change: ??x to x.? (#1095)Andrew Kelley
See #1023 This also renames Nullable/Maybe to Optional
2018-06-02introduce [*] for unknown length pointersAndrew Kelley
See #770 Currently it does not have any different behavior than `*` but it is now recommended to use `[*]` for unknown length pointers to be future-proof. Instead of [ * ] being separate tokens as the proposal suggested, this commit implements `[*]` as a single token.