Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/y1yang0/nyx
[nyx] dynamically typed scripting language
https://github.com/y1yang0/nyx
compiler interpreter language programming-language scripting-language
Last synced: 2 months ago
JSON representation
[nyx] dynamically typed scripting language
- Host: GitHub
- URL: https://github.com/y1yang0/nyx
- Owner: y1yang0
- License: mit
- Created: 2018-12-09T08:43:06.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-16T13:52:06.000Z (almost 2 years ago)
- Last Synced: 2024-11-02T07:14:00.107Z (2 months ago)
- Topics: compiler, interpreter, language, programming-language, scripting-language
- Language: C++
- Homepage:
- Size: 316 KB
- Stars: 25
- Watchers: 1
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# NYX Language
**nyx** is yet another a dynamically typed scripting language with flexible syntax and strict type system.
Its syntax resembles Python,Java and C family languages. If you've already familiar with any other popular languages,
you can seamlessly write code after skimming its language reference manual.
In addition, nyx attempts to detect sorts of erroneous program forms at compile time that benefited from its underlying
strict type system, this could tremendously save your time for debugging type relevant bugs.# Build
```bash
$ mkdir build && cd build
$ cmake ..
$ make
$ nyx
```
All tests passed on *Windows*# Code Examples
+ [nyx_test/example/9x9table.nyx](nyx_test/example/9x9table.nyx)
```
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
```
+ [nyx_test/example/yang_hui_san_jiao.nyx](nyx_test/example/yang_hui_san_jiao.nyx)
```
n = 1 [1]
n = 2 [1,1]
n = 3 [1,2,1]
n = 4 [1,3,3,1]
n = 5 [1,4,6,4,1]
n = 6 [1,5,10,10,5,1]
n = 7 [1,6,15,20,15,6,1]
n = 8 [1,7,21,35,35,21,7,1]
n = 9 [1,8,28,56,70,56,28,8,1]
```+ [nyx_test/example/quick_sort.nyx](nyx_test/example/quick_sort.nyx)
```
[4,-5,9,15,-6,-2,0] => [-6,-5,-2,0,4,9,15]
```
+ [nyx_test/example/love.nyx](nyx_test/example/love.nyx)
```
********* *********
***************** *****************
****************************************
*******************************************
*********************************************
*********************************************
*********************************************
*********************************************
*********************************************
*********************************************
*******************************************
*****************************************
****************************************
*************************************
***********************************
*********************************
*****************************
*************************
*********************
***************
*********
***
```
+ [nyx_test/example/ast.nyx](nyx_test/example/ast.nyx)
```
-Func[fibonacci_rec]
-IfStmt
-BinaryExpr[23]
-NameExpr[num]
-IntExpr[2]
-ReturnStmt
-IntExpr[1]
-ReturnStmt
-BinaryExpr[13]
-FunCallExpr[fibonacci_rec]
-BinaryExpr[14]
-NameExpr[num]
-IntExpr[2]
-FunCallExpr[fibonacci_rec]
-BinaryExpr[14]
-NameExpr[num]
-IntExpr[1]
```
## Language Reference
See [reference.md](./docs/reference.md) for detailed language reference,
[`nyx_test/*`](./nyx_test/) contains various nyx code snippets, they are probably the best way to learn how to program in **nyx**.# License
**nyx** is licensed under the [MIT LICENSE](LICENSE)。