aboutsummaryrefslogtreecommitdiff
path: root/src/parser.hpp
Commit message (Collapse)AuthorAgeFilesLines
...
* `enum Addressing_Mode : u8;`gingerBill2021-07-121-1/+2
|
* Move things around for sanity checking for multithread preparationgingerBill2021-07-101-10/+12
|
* Remove `try`; Replace `try x else y` with `or_else(x, y)`gingerBill2021-07-051-2/+0
|
* Try `try` and `or_else` built-in procedures with operators `try` and `try else`gingerBill2021-07-041-0/+2
|
* Correct selector call expression chaining behaviour (a bit of a hack)gingerBill2021-06-161-1/+7
|
* Make default calling convention code more correct to readgingerBill2021-06-081-9/+13
|
* Add support for `Addressing_OptionalOkPtr`gingerBill2021-06-061-17/+18
| | | | Allowing for `i, ok := &x.(T);` (type assertions) and `v, ok := &m[k];` (map indexing)
* Experimental support for inline swizzling for array types of len <= 4 e.g. ↵gingerBill2021-06-051-1/+8
| | | | `v.xyz`, `v.argb`, `v.xxx`
* Add range-based error messages to `-verbose-errors`gingerBill2021-05-191-3/+3
| | | | | | | | Example: Cannot convert '(1 + 2)' to 'untyped bool' from 'untyped integer' x := (1 + 2) * true; ^~~~~~^
* Remove old dead codegingerBill2021-05-151-1/+0
|
* Add minor ignoring hint on type assertions to get better code generation ↵gingerBill2021-05-131-1/+7
| | | | with no optimizations enabled
* Add explicit numbers to `enum AddressingMode`gingerBill2021-05-121-16/+16
|
* Unify `AstTernaryExpr` with `AstTernaryIfExpr`gingerBill2021-05-051-1/+0
| | | | | Allow for both syntaxes `x if cond else y` and `cond ? x : y` Removes the confusing semantics behind `?:` which could be `if` or `when` depending on the context.
* Add "naked" calling convention (removes prologue and epilogue)gingerBill2021-04-281-1/+2
|
* Move out some intrinsics into separate procedures in llvm_backend.cpp; ↵gingerBill2021-04-241-2/+2
| | | | Rename `InlineRangeStmt` to `UnrollRangeStmt` (eventually merge the two AST nodes)
* Add new intrinsics: debug_trap, trap, read_cycle_counter, expectgingerBill2021-04-221-0/+1
|
* Improve `#optional_ok` logic for procedures; Add `#optional_second` for ↵gingerBill2021-04-191-0/+1
| | | | `package runtime` usage
* Experiment with new grammatical parsing rule for expression level ↵gingerBill2021-03-301-0/+1
| | | | (-strict-style) idea
* Make the parser support as many identifiers on the LHS in `for in` loops to ↵gingerBill2021-03-241-2/+1
| | | | improve error messages
* Minimize TokenPos size by using `i32` for line/column/offset and file_id ↵gingerBill2021-03-041-1/+2
| | | | | | instead of `String` To make `i32` safe, the parser limits the file size of odin files to a maximum of 2GiB (which will be good enough for the vast vast majority of cases)
* Begin work on aarch64 ABI for `-llvm-api`gingerBill2021-02-241-1/+1
|
* Build tag to make all declarations within a file private to the package ↵gingerBill2021-02-231-0/+1
| | | | `//+private`
* Remove `#opaque` typesgingerBill2021-02-231-4/+0
|
* Remove `bit_field` keyword and parsing logicgingerBill2021-02-231-5/+0
|
* Remove `"pure"` and `"pure_none"` calling conventionsgingerBill2021-02-231-6/+4
|
* Add extra error checking in parser.cppgingerBill2021-01-151-4/+6
|
* Allow string literals for `[N]byte`gingerBill2020-11-201-2/+2
|
* Update `odin doc` to support multiple package outputs by passing multiple ↵gingerBill2020-11-181-0/+1
| | | | | | | paths; Replace `-all` with `-short` Example: odin doc core/path core/path/filepath
* Begin rudimentary work on implementing `odin test` tooling with ↵gingerBill2020-11-171-0/+2
| | | | `*_test.odin` files
* Minimize memory usage for AST nodes by using Slice<T> rather than Array<T> ↵gingerBill2020-11-161-29/+28
| | | | when the parameter doesn't need to grow
* Minimize Ast flags usagegingerBill2020-11-161-8/+8
|
* Begin clarifying allocation patterns by changing from `heap_allocator` to ↵gingerBill2020-11-151-0/+1
| | | | specific arenas
* Inline asm expression (-llvm-api)gingerBill2020-10-241-4/+27
| | | | | | | | | | | | See https://llvm.org/docs/LangRef.html#inline-assembler-expressions Example: ``` x := asm(i32) -> i32 { "bswap $0", "=r,r", }(123); ``` Allowed directives `#side_effect`, `#align_stack`, `#att`, `#intel` e.g. `asm() #side_effect #intel {...}`
* Begin work on making packages import assembly sort files (.S)gingerBill2020-10-161-6/+26
|
* Add `+build ignore` taggingerBill2020-10-151-0/+1
|
* Update math and math/linalg; add "pure_none" calling conventiongingerBill2020-09-101-8/+9
|
* Revert accidental removal of `#const` for procedure variable parameters #718gingerBill2020-08-261-1/+2
|
* Remove some dead codegingerBill2020-07-141-2/+1
|
* Improve performance of tokenization and parsinggingerBill2020-05-271-2/+7
|
* Add `"pure"` procedure typesgingerBill2020-05-231-0/+1
|
* Selector Call Expressions: `x->y(123) == x.y(x, 123)`gingerBill2020-05-221-0/+1
|
* Minor fixes to improve hash map/set performancegingerBill2020-05-211-1/+1
|
* Relative pointersgingerBill2020-05-151-0/+4
|
* Implement Allow `.?` operator to unwrap any union #549gingerBill2020-05-141-1/+1
|
* Add experimental atom op tables for llvm-backendgingerBill2020-05-021-0/+2
|
* `#optional_ok` tag for proceduresgingerBill2020-04-191-0/+3
|
* Simplify compiler's `Map` and create a `StringMap` specifically for stringsgingerBill2020-04-131-10/+10
|
* Add extra internal memory analysisgingerBill2020-04-061-0/+10
|
* Merge branch 'master' into llvm-integrationgingerBill2020-03-051-2/+4
|\
| * `x if cond else y` and `x when cond else y` expressionsgingerBill2020-03-051-2/+4
| |