Commit Graph

235 Commits (3aab6012c471522e2d1cd5a456f56cb9a7addeb6)

Author SHA1 Message Date
Andrew Kelley a09b505558 null pointer optimization for ?&T
this is necessary for the parseh change where all
pointers from .h files are maybe pointers.
2016-01-28 14:04:22 -07:00
Andrew Kelley 0278468479 upgrade to the libclang C++ API
c_import creates a tmp .h file and parses it with libclang,
reporting any errors found.

See #88
2016-01-27 00:01:49 -07:00
Andrew Kelley ac085a869d docs: update deps to llvm and clang 3.7.1 2016-01-26 18:11:18 -07:00
Andrew Kelley bc89614996 update README 2016-01-26 01:39:45 -07:00
Andrew Kelley a3e288ab5b implement compile time string concatenation
See #76
2016-01-25 21:56:29 -07:00
Andrew Kelley deb3586884 implement %% prefix operator
See #23

also make undefined constants use llvm undef value
2016-01-25 15:45:05 -07:00
Andrew Kelley c0dc0ca6c9 update README 2016-01-25 15:22:52 -07:00
Andrew Kelley 4c50606b9d refactor std to use for loop 2016-01-18 07:16:17 -07:00
Andrew Kelley 74b1665586 more readme formatting 2016-01-15 17:18:03 -07:00
Andrew Kelley 39c1348862 fix readme formatting 2016-01-15 17:15:42 -07:00
Andrew Kelley 8d60ffe314 solve the mystery of undefined reference error
big surprise, C++ is to blame
2016-01-15 17:12:26 -07:00
Andrew Kelley 5f9ecb8566 instead of 'as' to cast, call type as function 2016-01-14 02:52:33 -07:00
Andrew Kelley cb46d0b5b0 fix not adding builtin functions code 2016-01-11 20:44:10 -07:00
Andrew Kelley e1f498212c fix codegen for implicit maybe wrap 2016-01-08 02:52:27 -07:00
Andrew Kelley fcacc85b4e cleanup readme 2016-01-04 04:44:32 -07:00
Andrew Kelley 1f8e3871ee parse if maybe expression 2015-12-26 15:05:27 -07:00
Andrew Kelley 423ee0689b add implicit casting support 2015-12-15 17:11:57 -07:00
Andrew Kelley fe94ca8d10 readme: provide bash to get c dir 2015-12-15 13:06:42 -07:00
Andrew Kelley 1b1453293e readme: add note about discovering libc path 2015-12-15 13:02:02 -07:00
Andrew Kelley f5a3281877 when linking with libc use the C runtime library 2015-12-15 12:44:42 -07:00
Andrew Kelley 4c16eaa640 readme: update current status 2015-12-11 04:37:23 -07:00
Andrew Kelley f740268ab7 move roadmap to github issues 2015-12-11 04:25:10 -07:00
Andrew Kelley 0dbee2300e add inline assembly support 2015-12-10 15:34:38 -07:00
Andrew Kelley 3e8a98fa61 add language reference documentation 2015-12-09 15:20:31 -07:00
Andrew Kelley 367ea908bd readme: update int types 2015-12-09 12:32:26 -07:00
Andrew Kelley 7b181b51ad parseh: cleanup types 2015-12-09 01:23:58 -07:00
Josh Wolfe 6a48c007a6 fix typo 2015-12-09 01:08:18 -07:00
Andrew Kelley dfda85e870 ability to call external variadic functions 2015-12-09 01:03:04 -07:00
Andrew Kelley 75efc31329 add array access syntax 2015-12-08 14:15:34 -07:00
Andrew Kelley 5dfe4d6387 codegen: do all the allocas at beginning of function
fixes debugging
2015-12-07 23:40:58 -07:00
Andrew Kelley b66fb607bf add debugging info for array type 2015-12-07 20:07:46 -07:00
Josh Wolfe f6eecfe5f4 getting started on array types 2015-12-07 08:29:19 -07:00
Josh Wolfe 94e61287e7 let is now a statement, not an expression 2015-12-06 23:49:20 -07:00
Andrew Kelley dfb48a2c6b update README 2015-12-06 22:12:49 -07:00
Andrew Kelley c6fff3b2c0 update README 2015-12-06 21:55:28 -07:00
Andrew Kelley daa3b6bfa3 add unused label error 2015-12-05 21:08:20 -07:00
Andrew Kelley c7615c1a80 error for extern function with void parameter 2015-12-04 14:33:57 -07:00
Andrew Kelley cd6283e8c4 parseh: fix wrong fn parameters in some cases 2015-12-04 11:45:11 -07:00
Andrew Kelley 5144c4fa37 exporting .h file supports void 2015-12-03 17:30:44 -07:00
Andrew Kelley a398afa7cc more C header interoperability 2015-12-03 17:06:33 -07:00
Josh Wolfe f1aaf1353e add bool literals 2015-12-03 12:15:07 -07:00
Andrew Kelley f8ca6c70c7 add labels and goto 2015-12-03 00:47:35 -07:00
Josh Wolfe c89f77dd8e parsing variable declaration 2015-12-02 16:33:06 -07:00
Andrew Kelley 08a2311efd support if conditionals 2015-12-01 21:19:38 -07:00
Josh Wolfe 1ed926c321 implicit void statements and all tests pass with type checking 2015-12-01 15:54:46 -07:00
Andrew Kelley 58e375d0a1 support multiple files 2015-12-01 02:08:58 -07:00
Andrew Kelley 55b8472374 refactor code to prepare for multiple files
verbose compiler output is now behind --verbose flag
2015-11-30 20:00:39 -07:00
Andrew Kelley 020f854f6f add bad version string test case 2015-11-30 02:14:54 -07:00
Andrew Kelley 8f0f318c39 add directive to specify root export version 2015-11-30 02:12:20 -07:00
Andrew Kelley ac0c5a3707 minor parser refactoring 2015-11-30 01:26:01 -07:00
Andrew Kelley c1d77f2a23 function call names are expressions 2015-11-29 14:39:11 -07:00
Andrew Kelley 918e7641fc rename unary expression to prefix op expression 2015-11-29 14:00:34 -07:00
Andrew Kelley a7555c58d9 add unary expression 2015-11-29 13:37:55 -07:00
Andrew Kelley 855d51840d remove LLVMZigTargetMachineEmitToFile
The llvm C API provided function is adequate.
2015-11-29 11:12:40 -07:00
Andrew Kelley e5d1f0eea5 parse and codegen for math expressions 2015-11-29 02:43:05 -07:00
Andrew Kelley f6529341a2 ability to export .o file 2015-11-27 22:13:39 -07:00
Andrew Kelley cb4773ce29 add root export declaration which is overridable by command line options 2015-11-27 21:24:47 -07:00
Andrew Kelley 4cc95174a7 add tests for compile errors 2015-11-27 18:55:06 -07:00
Andrew Kelley 3a1defa67b figure out integers
After researching int_least8_t, int_fast8_t, and friends,
it seems that rust's idea of only having fixed integer
types is the way to go.
2015-11-27 17:07:23 -07:00
Andrew Kelley 024052b448 add pub and export visibility modifiers and optimization 2015-11-27 15:46:06 -07:00
Andrew Kelley 9ca9a2c554 allow empty function and return with no expression 2015-11-27 10:52:31 -07:00
Andrew Kelley 821907317e support C-style comments, plus nesting 2015-11-27 00:40:26 -07:00
Andrew Kelley 763ce1c485 add tests 2015-11-26 01:29:52 -07:00
Josh Wolfe e579011a6e inline AstNodeStatement 2015-11-25 15:45:10 -07:00
Andrew Kelley a1771c76c3 build: improve findllvm script 2015-11-25 11:23:25 -07:00
Andrew Kelley 4fe366dfa6 cleanup 2015-11-24 23:56:35 -07:00
Andrew Kelley 09f68c7c33 support linker directives
now you can depend on libc in zig language instead of it being
hardcoded in the compiler.
2015-11-24 23:44:41 -07:00
Andrew Kelley 505317a12f debug/release mode 2015-11-24 22:32:26 -07:00
Andrew Kelley cda10f0577 only \n and ' ' are valid whitespace characters 2015-11-24 20:37:53 -07:00
Andrew Kelley c7f4cadbc7 debug symbols implemented; debugging with gdb works 2015-11-24 19:54:38 -07:00
Andrew Kelley baf5167171 fix not using subtarget features 2015-11-24 15:01:37 -07:00
Andrew Kelley 925c805d4b add unreachable expression
now creating .o file from hello.zig correctly
2015-11-24 13:37:14 -07:00
Andrew Kelley e112818e25 codegen: fix param type of const strings 2015-11-24 03:06:10 -07:00
Andrew Kelley 4bbc074dd7 hello world IR code looks good 2015-11-24 02:43:45 -07:00
Andrew Kelley 7d22a89eec partial hello world codegen 2015-11-24 00:35:28 -07:00
Andrew Kelley 1b24f4c73c parsing hello.zig example with recursive descent
that was easy
2015-11-23 21:30:12 -07:00
Andrew Kelley 5b663ddbb2 grammar doesn't need the option() construct 2015-11-23 19:19:38 -07:00
Andrew Kelley 72be61fc0a generated parser understands tuples 2015-11-06 22:11:47 -07:00
Andrew Kelley 174baa49bd progress toward more complex parser gen 2015-11-04 17:15:46 -07:00
Andrew Kelley 7cfceeca2d parser generator beginnings 2015-11-03 22:39:35 -07:00
Andrew Kelley 303823b6b8 building part of the hello world AST 2015-11-02 03:39:36 -07:00
Andrew Kelley 34f8d80eac tokenizing hello.zig 2015-11-01 22:21:33 -07:00
Andrew Kelley e09932928a tokenize 2015-08-05 17:44:05 -07:00
Andrew Kelley 50f0ed918c link against LLVM 2015-08-05 15:23:15 -07:00
Andrew Kelley 8e08cf4bec init 2015-08-05 14:46:04 -07:00