Commit Graph

2656 Commits

Author SHA1 Message Date
Andrew Kelley
96d4d0d674 parseh: detect fixed size integer types 2015-12-03 16:12:10 -07:00
Andrew Kelley
ad3f98c615 parseh command, parses a C .h file and produces extern decls 2015-12-03 16:00:14 -07:00
Josh Wolfe
f4b9b03f54 fix codegen for void parameters 2015-12-03 14:29:19 -07:00
Josh Wolfe
09a78d6235 can't declare unreachable variables 2015-12-03 12:38:28 -07:00
Josh Wolfe
f1aaf1353e add bool literals 2015-12-03 12:15:07 -07:00
Josh Wolfe
6494cf208e fix if-else type mismatch crash 2015-12-03 11:56:59 -07:00
Josh Wolfe
5af4ef88ac local variables work 2015-12-03 10:56:17 -07:00
Josh Wolfe
708cae3786 fix analysis for variable reference 2015-12-03 10:19:00 -07:00
Josh Wolfe
cb69cb0f26 analysis for variable declaration, but not variable reference 2015-12-03 10:10:33 -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
ffc2c9225f fix execution reaches end of non-void 2015-12-02 12:36:09 -07:00
Andrew Kelley
e94681b961 add test for undeclared identifier error 2015-12-02 00:59:58 -07:00
Andrew Kelley
370de7386c fix parameter access and thus shared library example 2015-12-02 00:53:57 -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
Josh Wolfe
c6a9ab107b string literals have type *const u8 2015-12-01 14:41:03 -07:00
Josh Wolfe
ab327344b6 merge conflicts 2015-12-01 10:44:30 -07:00
Andrew Kelley
dfb6682089 add test for bad import 2015-12-01 02:29:21 -07:00
Andrew Kelley
58e375d0a1 support multiple files 2015-12-01 02:08:58 -07:00
Andrew Kelley
29f24e3c50 add --color cli arg to override tty detection 2015-12-01 01:06:10 -07:00
Andrew Kelley
257cf09472 colored error messages that tell the source file 2015-12-01 00:50:11 -07:00
Andrew Kelley
31cf43de54 analyze looks for root export decl only in the root source file 2015-11-30 23:06:29 -07:00
Josh Wolfe
9278dbedd5 Merge remote-tracking branch 'origin/master' into type-checking 2015-11-30 22:54:00 -07:00
Andrew Kelley
cd68969115 closer to multiple files working 2015-11-30 22:53:37 -07:00
Josh Wolfe
18cfcfe44f fix ast printer names 2015-11-30 22:40:52 -07:00
Josh Wolfe
00f4c05784 merge conflicts 2015-11-30 22:12:21 -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
Josh Wolfe
abbc395701 implement basics of type checking 2015-11-30 18:43:45 -07:00
Josh Wolfe
ef482ece7c no more TypeId. use g->builtin_types. 2015-11-30 15:36:58 -07:00
Andrew Kelley
b77c423f77 all LLVM C++ API contained to one file 2015-11-30 14:43:23 -07:00
Josh Wolfe
f36255b670 Merge branch 'master' of github.com:andrewrk/zig 2015-11-30 14:13:04 -07:00
Josh Wolfe
757ebefd60 untangle analyze_node into a stricter call graph 2015-11-30 14:13:00 -07:00
Andrew Kelley
4ccb98bdce analyze no longer depends on llvm C++ API 2015-11-30 14:10:07 -07:00
Josh Wolfe
014711c57e rename variable 2015-11-30 09:38:31 -07:00
Josh Wolfe
9e0ff6faa2 factor analysis code out of codegen 2015-11-30 09:14:58 -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
9b477230e0 ability to generate shared library and h file 2015-11-29 18:02:20 -07:00
Josh Wolfe
f4721857ed inline PrimaryExpr ast node 2015-11-29 17:16:32 -07:00
Andrew Kelley
63d4e3ce1e add missing panic for shared library output 2015-11-29 15:10:06 -07:00
Josh Wolfe
ceb2d44bfc merge arithmetic binary operator gen functions 2015-11-29 15:08:42 -07:00
Andrew Kelley
a008a81eef codegen: fix wrong node type 2015-11-29 14:59:41 -07:00
Josh Wolfe
30442ed893 merge conflicts 2015-11-29 14:52:49 -07:00
Josh Wolfe
9a014b52cc flatten expression ast to hide operator precedence 2015-11-29 14:46:05 -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
4466a4533c parser: add missing static 2015-11-29 12:00:34 -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
03f9922734 remove unnecessary codegen llvm initialization 2015-11-27 21:49:04 -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
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
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
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
Andrew Kelley
775e98be5a experiment with being a linker 2015-11-05 00:05:25 -07:00
Andrew Kelley
174baa49bd progress toward more complex parser gen 2015-11-04 17:15:46 -07:00
Andrew Kelley
c36cd9d313 parsergen parsing a simple grammar 2015-11-04 00:07:24 -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
5f48463bdd some half done thing I forgot about ¯\_(ツ)_/¯ 2015-08-23 22:45:20 -07:00
Andrew Kelley
d519ce87dd preprocessor runs once 2015-08-05 21:47:08 -07:00
Andrew Kelley
e71521335a preprocessor detects #include directives 2015-08-05 20:26:58 -07:00
Andrew Kelley
e09932928a tokenize 2015-08-05 17:44:05 -07:00
Andrew Kelley
899c9fe94e read a file 2015-08-05 16:22:21 -07:00
Andrew Kelley
1d554f3161 input output 2015-08-05 15:46:40 -07:00
Andrew Kelley
50f0ed918c link against LLVM 2015-08-05 15:23:15 -07:00