Compare commits
	
		
			2 Commits
		
	
	
		
			acc9b94c1f
			...
			34d35d6039
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					34d35d6039 | ||
| 
						 | 
					a476d1b9e9 | 
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,2 +1,3 @@
 | 
			
		||||
build/*
 | 
			
		||||
.cache
 | 
			
		||||
.cache
 | 
			
		||||
compile_commands.json
 | 
			
		||||
							
								
								
									
										24
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								README.md
									
									
									
									
									
								
							@@ -1,9 +1,11 @@
 | 
			
		||||
# Lispy stuff
 | 
			
		||||
 | 
			
		||||
[](https://ci.emin.software/repos/2)
 | 
			
		||||
 | 
			
		||||
Simple lisp-ish language compiler written in C++.
 | 
			
		||||
 | 
			
		||||
Right now it doesn't compile much - it's just a parser.
 | 
			
		||||
The goal is to emit bytecode. The bytecode format is not decided yet.
 | 
			
		||||
The end goal is to emit bytecode. The bytecode format is not decided yet.
 | 
			
		||||
 | 
			
		||||
## Build
 | 
			
		||||
 | 
			
		||||
@@ -16,11 +18,14 @@ cmake ..
 | 
			
		||||
make
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
This will build two executables, `main` and `test`. `test` runs all tests
 | 
			
		||||
on the compiler itself
 | 
			
		||||
 | 
			
		||||
## Development
 | 
			
		||||
 | 
			
		||||
I use clangd as the language server. Appropriate `compile_commands.json`
 | 
			
		||||
(required for clangd, otherwise it can not find include files) is provided.
 | 
			
		||||
If you'd like to generate them yourself, just use cmake:
 | 
			
		||||
I use clangd as the language server. If you want your include files to be handled
 | 
			
		||||
correctly, you'll need to generate `compile_commands.json` yourself. You can
 | 
			
		||||
do this using cmake:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cd build
 | 
			
		||||
@@ -28,4 +33,15 @@ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 ..
 | 
			
		||||
cp compile_commands.json ../
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
After this, clangd should not give you errors on every included header.
 | 
			
		||||
 | 
			
		||||
## Progress
 | 
			
		||||
 | 
			
		||||
Woodpecker CI/CD system is integrated.
 | 
			
		||||
Currently using Catch2 for unit testing.
 | 
			
		||||
 | 
			
		||||
Lexing - complete, more token types may be added as necessary
 | 
			
		||||
Parsing - This is the next step.
 | 
			
		||||
Optimizations - 
 | 
			
		||||
Emitting Bytecode - the goal.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +0,0 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
  "directory": "/home/haxala1r/Desktop/Programming/C++/lispy-stuff/build",
 | 
			
		||||
  "command": "/usr/bin/c++  -I/home/haxala1r/Desktop/Programming/C++/lispy-stuff/src/include  -o CMakeFiles/main.dir/src/main.cpp.o -c /home/haxala1r/Desktop/Programming/C++/lispy-stuff/src/main.cpp",
 | 
			
		||||
  "file": "/home/haxala1r/Desktop/Programming/C++/lispy-stuff/src/main.cpp",
 | 
			
		||||
  "output": "CMakeFiles/main.dir/src/main.cpp.o"
 | 
			
		||||
}
 | 
			
		||||
]
 | 
			
		||||
		Reference in New Issue
	
	Block a user