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
Josh Wolfe
66e3aa0910
initialize mutable variables to zero
2015-12-06 23:33:10 -07:00
Andrew Kelley
3c3be10a60
add mutable local variables
2015-12-06 23:09:46 -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
139e5ca08f
fix reading source from stdin
2015-12-04 14:33:40 -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
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