Compare commits
2 commits
9109c4d680
...
dff40e6b27
| Author | SHA1 | Date | |
|---|---|---|---|
| dff40e6b27 | |||
| e49b1d659b |
11 changed files with 46 additions and 15 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1 +1,2 @@
|
|||
__pycache__/
|
||||
bin/
|
||||
|
|
|
|||
1
README
1
README
|
|
@ -7,6 +7,7 @@ A personal little MATLAB alternative I suppose :)
|
|||
In future I'd love to start using a developed TUI library like [textual](https://github.com/Textualize/textual?tab=readme-ov-file),
|
||||
but for now everything is just a custom ANSI wrapper thing.
|
||||
|
||||
Noether can compile to C or Nim via their respective backends.
|
||||
|
||||
|
||||
NOTES:
|
||||
|
|
|
|||
3
lang/NOTES
Normal file
3
lang/NOTES
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Todo:
|
||||
- [ ] Not currently sure how the lexer will interpret non-latin characters (make sure it handles all unicode)
|
||||
- [ ] The lexer currently only handles a limited number of escape codes / whitespace characters
|
||||
2
lang/demo/loop-space.no
Normal file
2
lang/demo/loop-space.no
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
loop:
|
||||
print("Goodbye world!")
|
||||
2
lang/demo/loop-tab-crlf.no
Normal file
2
lang/demo/loop-tab-crlf.no
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
loop:
|
||||
print("Goodbye world!")
|
||||
2
lang/demo/loop-tab.no
Normal file
2
lang/demo/loop-tab.no
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
loop:
|
||||
print("Goodbye world!")
|
||||
3
lang/demo/string.no
Normal file
3
lang/demo/string.no
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
"Goodbye World!"
|
||||
'a'
|
||||
'abc' # ERROR
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
# Package
|
||||
|
||||
version = "0.1.0"
|
||||
author = "Emile Clark-Boman"
|
||||
description = "Type theoretic imperative and logic language for mathematical programming"
|
||||
license = "MIT"
|
||||
srcDir = "src"
|
||||
binDir = "bin"
|
||||
installExt = @["nim"]
|
||||
bin = @["noether", "nlx"]
|
||||
backend = "c"
|
||||
|
||||
|
||||
# Dependencies
|
||||
|
||||
requires "nim >= 2.2.0"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import os
|
|||
import noether/lex
|
||||
|
||||
when isMainModule:
|
||||
echo "Noether Lang - Extras"
|
||||
echo "Noether Lang Extras v0.1.0 - nlx"
|
||||
|
||||
if paramCount() > 0:
|
||||
let filename = paramStr(1)
|
||||
|
|
|
|||
|
|
@ -10,16 +10,19 @@ type
|
|||
TERM, # String \0 terminator
|
||||
WORD, # Alphanumeric token
|
||||
SYMB, # Symbolic token
|
||||
LNFD, # Line-Feed
|
||||
WTSP, # Whitespace
|
||||
LPAR, # (
|
||||
RPAR, # )
|
||||
LBRA, # {
|
||||
RBRA, # }
|
||||
LSQB, # [
|
||||
RSQB, # ]
|
||||
LANB, # <
|
||||
RANB, # >
|
||||
LNFD, # \r \n Line-Feed
|
||||
WTSP, # ' ' \t Whitespace
|
||||
LPAR, # ( Left Parenthesis
|
||||
RPAR, # ) Right Parenthesis
|
||||
LBRA, # { Left Brace
|
||||
RBRA, # } Right Brace
|
||||
LSQB, # [ Left Square Bracket
|
||||
RSQB, # ] Right Square Bracket
|
||||
# LANB, # < Left Angle Bracket
|
||||
# RANB, # > Right Angle Bracket
|
||||
SQUO, # ' Single Quotation Marking
|
||||
DQUO, # " Double Quotation Marking
|
||||
GRVA, # ` Grave Accent
|
||||
|
||||
nlTok = object
|
||||
tokType*: nlTokType
|
||||
|
|
@ -67,13 +70,27 @@ proc getTokType(c: char): nlTokType =
|
|||
case c:
|
||||
of '\0':
|
||||
result = nlTokType.TERM
|
||||
of '\n':
|
||||
of '\r', '\n':
|
||||
result = nlTokType.LNFD
|
||||
of ' ':
|
||||
of ' ', '\t':
|
||||
result = nlTokType.WTSP
|
||||
of '(':
|
||||
result = nlTokType.LPAR
|
||||
of ')':
|
||||
result = nlTokType.RPAR
|
||||
of '{':
|
||||
result = nlTokType.LBRA
|
||||
of '}':
|
||||
result = nlTokType.RBRA
|
||||
of '[':
|
||||
result = nlTokType.LSQB
|
||||
of ']':
|
||||
result = nlTokType.RSQB
|
||||
of '\'':
|
||||
result = nlTokType.SQUO
|
||||
of '\"':
|
||||
result = nlTokType.DQUO
|
||||
of '`':
|
||||
result = nlTokType.GRVA
|
||||
else:
|
||||
result = nlTokType.WORD
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue