Skip to content

Commit

Permalink
Merge branch 'dev' into vm
Browse files Browse the repository at this point in the history
  • Loading branch information
TTENSHII committed Jan 14, 2024
2 parents 139245b + 9c70d16 commit 1d679e6
Show file tree
Hide file tree
Showing 61 changed files with 4,489 additions and 230 deletions.
32 changes: 2 additions & 30 deletions .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,37 +48,9 @@ jobs:
if: steps.filter.outputs.docs == 'true' || steps.filter.outputs.docs2 == 'true' || steps.filter.outputs.workflow == 'true' || github.ref == 'refs/heads/main'
run: mdbook build

- name: Install Haskell
uses: haskell-actions/setup@v2
with:
enable-stack: true
stack-version: 'latest'

- name: Compil
if: steps.filter.outputs.docs == 'true' || steps.filter.outputs.docs2 == 'true' || steps.filter.outputs.workflow == 'true' || github.ref == 'refs/heads/main'
run: |
if ! stack build; then
exit 0
fi
- name: Tests
- name: Copy OnlineRunner
if: steps.filter.outputs.docs == 'true' || steps.filter.outputs.docs2 == 'true' || steps.filter.outputs.workflow == 'true' || github.ref == 'refs/heads/main'
run: |
if ! stack test --test-arguments "--html book/Tests.html"; then
exit 0
fi
- name: Coverage
if: steps.filter.outputs.docs == 'true' || steps.filter.outputs.docs2 == 'true' || steps.filter.outputs.workflow == 'true' || github.ref == 'refs/heads/main'
run: |
if ! make tests-coverage; then
exit 0
else
PATH_HTML=$(make tests-coverage-html-path)
cp -r "$PATH_HTML/koaky" book/
cp -r "$PATH_HTML/combined" book/
cp "$PATH_HTML/index.html" book/Coverage.html
fi
run: cp ./lvtext/webrunner/index.html ./book/OnlineVM.html

- name: Setup Pages
if: github.ref == 'refs/heads/main'
Expand Down
56 changes: 42 additions & 14 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,22 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload ${{ needs.release-create.outputs.release }} "./koaky-exe.exe#koaky-windows.exe"
gh release upload ${{ needs.release-create.outputs.release }} "./lvtc/lvtc-exe.exe#lvtc-windows.exe"
gh release upload ${{ needs.release-create.outputs.release }} "./lvtrun/lvtrun-exe.exe#lvtrun-windows.exe"
- name: Upload To Artifact
- name: Upload To Artifact lvtc
if: github.ref != 'refs/heads/main'
uses: actions/upload-artifact@v3
with:
name: koaky.exe
path: ./koaky.exe
name: lvtc-windows.exe
path: ./lvtc/lvtc-exe.exe

- name: Upload To Artifact lvtrun
if: github.ref != 'refs/heads/main'
uses: actions/upload-artifact@v3
with:
name: lvtrun-windows.exe
path: ./lvtrun/lvtrun-exe.exe

release-linux:
runs-on: ubuntu-latest
Expand All @@ -89,21 +97,31 @@ jobs:
run: make

- name: Rename
run: mv koaky-exe koaky-linux
run: |
mv lvtc/lvtc-exe lvtc-linux
mv lvtrun/lvtrun-exe lvtrun-linux
- name: Upload To Release
if: github.ref == 'refs/heads/main'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload ${{ needs.release-create.outputs.release }} "./koaky-linux"
gh release upload ${{ needs.release-create.outputs.release }} "./lvtc-linux"
gh release upload ${{ needs.release-create.outputs.release }} "./lvtrun-linux"
- name: Upload To Artifact lvtc
if: github.ref != 'refs/heads/main'
uses: actions/upload-artifact@v3
with:
name: lvtc-linux
path: ./lvtc-linux

- name: Upload To Artifact
- name: Upload To Artifact lvtrun
if: github.ref != 'refs/heads/main'
uses: actions/upload-artifact@v3
with:
name: koaky-linux
path: ./koaky-linux
name: lvtrun-linux
path: ./lvtrun-linux

release-macos:
runs-on: macos-latest
Expand All @@ -126,18 +144,28 @@ jobs:
run: make

- name: Rename
run: mv koaky-exe koaky-macos
run: |
mv lvtc/lvtc-exe lvtc-macos
mv lvtrun/lvtrun-exe lvtrun-macos
- name: Upload To Release
if: github.ref == 'refs/heads/main'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload ${{ needs.release-create.outputs.release }} "./koaky-macos"
gh release upload ${{ needs.release-create.outputs.release }} "./lvtc-macos"
gh release upload ${{ needs.release-create.outputs.release }} "./lvtrun-macos"
- name: Upload To Artifact lvtc
if: github.ref != 'refs/heads/main'
uses: actions/upload-artifact@v3
with:
name: lvtc-macos
path: ./lvtc-macos

- name: Upload To Artifact
- name: Upload To Artifact lvtrun
if: github.ref != 'refs/heads/main'
uses: actions/upload-artifact@v3
with:
name: koaky-macos
path: ./koaky-macos
name: lvtrun-macos
path: ./lvtrun-macos
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
- name: Tests
id: failedTest
run: |
if ! stack test &> tests.log; then
if ! make tests &> tests.log; then
echo "failedTest=true" >> $GITHUB_OUTPUT
else
echo "failedTest=false" >> $GITHUB_OUTPUT
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,9 @@ tags
/koaky-exe
/glados

lvtc-exe
lvtrun-exe

*.log
*.exe

Expand Down
40 changes: 19 additions & 21 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,41 +5,39 @@
## makefile that stack
##

TARGET = koaky
MARVIN_TARGET = glados
TARGET = leviator

CP = cp
RM = rm -rf

ifeq ($(OS),Windows_NT)
BIN_STACK = $(TARGET)-exe.exe
else
BIN_STACK = $(TARGET)-exe
endif

all: $(TARGET)
LVT_COMPILER = lvtc
LVT_RUNER = lvtrun

$(TARGET):
stack build --copy-bins --local-bin-path .
$(CP) "$(BIN_STACK)" "$(MARVIN_TARGET)"
"$(MAKE)" -C "$(LVT_COMPILER)"
"$(MAKE)" -C "$(LVT_RUNER)"

debug:
"$(MAKE)" -C "$(LVT_COMPILER)" debug
"$(MAKE)" -C "$(LVT_RUNER)" debug

clean:
stack clean
"$(MAKE)" -C "$(LVT_COMPILER)" clean
"$(MAKE)" -C "$(LVT_RUNER)" clean

fclean: clean
stack purge
$(RM) "$(BIN_STACK)"
$(RM) "$(MARVIN_TARGET)"
"$(MAKE)" -C "$(LVT_COMPILER)" fclean
"$(MAKE)" -C "$(LVT_RUNER)" fclean

re: fclean $(TARGET)

tests:
stack test
"$(MAKE)" -C "$(LVT_COMPILER)" tests
"$(MAKE)" -C "$(LVT_RUNER)" tests

tests-coverage:
stack test --coverage
"$(MAKE)" -C "$(LVT_COMPILER)" tests-coverage
"$(MAKE)" -C "$(LVT_RUNER)" tests-coverage

tests-coverage-html-path:
@stack path --local-hpc-root
@"$(MAKE)" -C "$(LVT_COMPILER)" tests-coverage-html-path
@"$(MAKE)" -C "$(LVT_RUNER)" tests-coverage-html-path

.PHONY: $(TARGET) fclean re clean all
104 changes: 26 additions & 78 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,26 @@

## Documentation

-- **Comentary**
- **Comentary**

```c
// This is a comment
```

-- **Variables Declaration**
- **Alias**

```
alias A = Int;
```

- **Variables Declaration**

```hs
@Int a = 1;
@String b = "hello";
@StringView b = "hello";
```

-- **Variables Assignment**
- **Variables Assignment**

```hs
a = 1;
Expand All @@ -33,17 +39,11 @@ b = "hello";
@Bool a = True;
@Bool b = False;
@Int c = 1;
@List[Int] d = [1, 2, 3];
@Char e = 'a';
@String f = "hello";
@List[Char] g = ['a', 'b', 'c'];
@StringView f = "hello";
```

- **Built-in Global Variables**

```c
@List[String] ARGS = ["programfilepath", "arg1", "arg2"];
```
There is a `Void` type that can be used to return nothing.

- **Function Declaration**

Expand All @@ -53,6 +53,11 @@ fn add(a: Int, b: Int) -> Int
// the next line is the `return`
<- a + b;
};

export fn sub(a: Int, b: Int) -> Int
{
<- a - b;
};
```

- **Function Call**
Expand Down Expand Up @@ -80,38 +85,6 @@ fn add(a: Int, b: Int, c: Int) -> Int
};
```

- **Built-in Functions**

```c
// print to stdout
print("hello");
// print to stderr
printErr("hello");
// get a line from stdin
getLine();
// transform a type to a string
str(1);
// get the type of a value in string format
type(a);
// call a function with string
call("add", [1, 2]);
```
- **Generic Functions**
```rust
fn add[A](a: A, b: A) -> A
{
<- a + b;
};
```

- **Generic Functions Call**

```rust
add[Int](1, 2);
```

- **Conditions**

```c
Expand Down Expand Up @@ -141,59 +114,34 @@ while (i < 10)
};
```

```c
@List[Int] lst = [1, 2, 3];
foreach (a in lst)
{
if (a == 2)
{
break;
};
};
```
- **Imports**
```c
// Circular imports are not allowed
import "path/to/file.lvt"
```

- **Entrypoint**

```rust
// If you don't have this function, the program will not be run
fn start() -> Int
export fn start() -> Int
{
<- 0;
};
```

- **Operators**

```
```python
a + b
a - b
a * b
a / b
a == b
a != b
a < b
a <= b
a > b
a >= b
```

- **Structs**

```c
struct Point
{
a: Int,
};
```

- **Generic Structs**
- **Priority of Operators**

```c
struct Rect[A]
{
a: A,
};
// realy peticuliar buut we use { for ( and } for )
{a + B} * c
```
Loading

0 comments on commit 1d679e6

Please sign in to comment.