Commit Graph

65 Commits

Author SHA1 Message Date
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
03f9922734 remove unnecessary codegen llvm initialization 2015-11-27 21:49:04 -07:00
Andrew Kelley
c810a0b381 more vim doc files 2015-11-27 21:48:58 -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
4068897b6b rename standalone.cpp to run_tests.cpp 2015-11-27 17:11:03 -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
4060ae93fb call ld with correct -dynamic-linker argument
It looks like Debian/Ubuntu are doing it correctly.
See https://sourceware.org/glibc/wiki/ABIList

NixOS has a clang patch which disables adding the -dynamic-linker
argument to ld in order to ensure "purity" - that is - that all paths
are in /nix/store/*.
See 6b1651928e/pkgs/development/compilers/llvm/3.7/clang/purity.patch

So, I changed the environment variable to ZIG_NATIVE_DYNAMIC_LINKER and allow
it to be set to blank. And it only matters when building for the native target,
since you might want to build for other targets without modifying your
environment.

closes #1
2015-11-26 23:43:29 -07:00
Josh Wolfe
bd5cb3e50e add hook for environment variable ZIG_DEBIAN_HACK. see #1. 2015-11-26 14:42:46 -07:00
Josh Wolfe
00a7936c9f more readable integer constant 2015-11-26 02:48:06 -07:00
Andrew Kelley
763ce1c485 add tests 2015-11-26 01:29:52 -07:00
Andrew Kelley
893e152dab no errors during codegen
also, fix function calling and allow forward declarations
2015-11-25 18:17:35 -07:00
Andrew Kelley
6f460de02d parser: force ast printer to be correct 2015-11-25 16:57:34 -07:00
Josh Wolfe
311fd67083 inline AstNodeStatementExpression 2015-11-25 16:43:16 -07:00
Andrew Kelley
22421447fb fix the remaining TODOs in the source 2015-11-25 16:36:03 -07:00
Josh Wolfe
e48717e091 clean up noreturn stuff 2015-11-25 15:58:32 -07:00
Andrew Kelley
86a0ae8699 assert(false) -> zig_unreachable() 2015-11-25 15:48:57 -07:00
Josh Wolfe
e579011a6e inline AstNodeStatement 2015-11-25 15:45:10 -07:00
Andrew Kelley
079ed9e356 parser: more AST printing code for debug purposes 2015-11-25 15:40:05 -07:00
Andrew Kelley
a600df073a fix invalid memory write 2015-11-25 15:17:19 -07:00
Josh Wolfe
0b59afec56 fix typo 2015-11-25 12:19:10 -07:00
Andrew Kelley
c3458543c9 build: fix findllvm script 2015-11-25 11:37:43 -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
afac1a0123 simple vim syntax highlighting 2015-11-24 23:44:08 -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
ca836191e1 debug information for functions 2015-11-24 19:07:33 -07:00
Andrew Kelley
baf5167171 fix not using subtarget features 2015-11-24 15:01:37 -07:00
Andrew Kelley
fefbee166d hello world example working 2015-11-24 13:51:36 -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
c2e5d50027 write object file and fix void return type 2015-11-24 13:00:38 -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
3b4a2afb65 semantic analysis checks for multiple definitions of functions 2015-11-23 22:47:25 -07:00
Andrew Kelley
a22bc8d20a more detailed AST inspection 2015-11-23 21:45:10 -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
6b911f1e94 delete parser generator. let's try recursive descent 2015-11-23 19:21:52 -07:00
Andrew Kelley
5b663ddbb2 grammar doesn't need the option() construct 2015-11-23 19:19:38 -07:00
Andrew Kelley
4236b85c72 parser generator supports a simple OR 2015-11-07 04:50:48 -07:00
Andrew Kelley
ae0e9685c6 parser generator supports sub rules 2015-11-06 23:59:40 -07:00
Andrew Kelley
72be61fc0a generated parser understands tuples 2015-11-06 22:11:47 -07:00
Andrew Kelley
4ecb37a8a4 delete ELF parsing code 2015-11-05 00:06:36 -07:00