d43e387158
lang: ast: add state size to ast_node_type
2024-11-24 11:42:43 +00:00
f1ea916155
lang: ast: re-factor parser into multiple files
2024-11-24 11:11:06 +00:00
a25683ddc9
lang: lex: move all lex enums to their own value ranges
2024-11-24 11:10:27 +00:00
e71f6a0904
frontend: repl: pass user input through the parser
2024-11-23 19:28:26 +00:00
ed35011931
lang: ast: implement node, parser, and parser state management
2024-11-23 19:28:03 +00:00
b630aa009c
lang: lex: add function to check if tokens are available
...
if this function returns false, any attempt to read tokens from the lexer will cause another line of input to be retrieved from the lexer's line source.
2024-11-23 19:27:29 +00:00
54a0c331b2
common: add a status code for internal errors
2024-11-23 19:26:29 +00:00
5c5a2d236c
lang: ast: add stub parser functions
2024-11-23 10:15:40 +00:00
8219797cbb
cmake: don't link bluelib modules to their dependencies
...
this fixes duplicate library warnings given by ld, but still ensures that the user lists all dependent bluelib modules in their CMakeFiles.txt
2024-11-23 10:14:05 +00:00
6f06f42953
lang: add missing includes
2024-11-22 22:30:26 +00:00
f1be82c495
asm: add missing includes
2024-11-22 22:30:15 +00:00
ceb9f10b66
lang: add ast node definitions
2024-11-22 21:47:37 +00:00
90f96b6229
lang: lex: fix regular number characters not incrementing the token length
2024-11-21 20:05:13 +00:00
2d89db48d2
doc: standardise the use of braces, brackets, and parens in asm source
...
parens () are used to specify object parent (e.g. the name of the class
that a message handler belongs to)
braces {} are used to specify the contents of an object (e.g. the
getter/setter for a property)
brackets [] are used to specify the identifier of an object (e.g. the
selector for a message handler)
2024-11-20 22:15:14 +00:00
230e66e066
asm: lex: add left and right brace symbols
2024-11-20 22:15:10 +00:00
17ee2b6b57
frontend: switch to new bluelib tty interface
2024-11-20 22:14:35 +00:00
92f407ac09
lang: add colour to internal print functions
2024-11-20 22:14:11 +00:00
8df4592a6b
frontend: assemble: lex assembly file contents
2024-11-19 22:09:54 +00:00
adf4e38578
frontend: implement function for printing assembly lex tokens
2024-11-19 22:09:32 +00:00
4e8d6e8122
asm: implement asembly lexer
2024-11-19 22:08:58 +00:00
605d70d967
doc: add decimal number to sample source file
2024-11-19 16:58:44 +00:00
335e360b2d
frontend: implement printing integer and double lex tokens
2024-11-19 16:57:39 +00:00
6e642b3c19
lang: lex: implement lexing of decimal numbers
2024-11-19 16:57:20 +00:00
a54a232428
lang: lex: fix underscore label producing two separate tokens
2024-11-19 16:17:58 +00:00
ea3c01204b
frontend: repl: remove line continuations from input produced by line-ed
2024-11-19 15:59:05 +00:00
b62c048498
frontend: line-ed: fix control characters (\n, \r, etc) being mishandled on win32
2024-11-19 15:58:25 +00:00
1dbe68cfeb
lang: lex: add missing symbol and keyword definitions
2024-11-19 15:57:31 +00:00
7eab36aa5f
frontend: add command for internal debugging functionality
2024-11-19 15:22:58 +00:00
7c42bf7bc9
lang: add internal debugging interface
2024-11-19 15:22:39 +00:00
881f345bbe
lang: lex: move structure definitions to a separate header
2024-11-19 15:22:16 +00:00
0f3328565e
lang: lex: fix identifier prefixed with underscore being tokenised incorrectly
2024-11-19 14:00:42 +00:00
eda7a1f951
frontend: line-ed: add missing tty function implementations for linux & darwin
2024-11-19 13:00:11 +00:00
4d411c67f0
frontend: line-ed: add missing wchar includes
2024-11-19 12:59:52 +00:00
90a32ac1a1
lang: lex: use a dictionary to lookup keywords
2024-11-19 10:49:42 +00:00
c5f60c285e
frontend: line-ed: convert all escape code usage to s_tty calls
2024-11-18 21:13:28 +00:00
5a5b0d01d8
lang: lex: only read linefeeds up to the end of the current line buffer
2024-11-18 15:19:26 +00:00
96172eac84
frontend: line-ed: move platform-specific code to separate directory
2024-11-18 15:15:04 +00:00
29447bf5ec
frontend: split interactive and non-interactive modes into separate commands
2024-11-18 09:55:02 +00:00
d5c86c4eea
frontend: move token printing code to a separate file
2024-11-18 09:54:27 +00:00
4fc1a6ade8
frontend: add a line editor for shell input
2024-11-18 09:53:55 +00:00
f44a3364b3
common: add MIN and MAX macros
2024-11-18 09:53:35 +00:00
61eabd52c4
lang: lex: replace call to isnumber() with isdigit()
2024-11-17 10:58:31 +00:00
6a563da1b0
doc: include dquote strings in Person.im
2024-11-17 09:32:49 +00:00
c9661af81e
frontend: compile: print number and atom token info
2024-11-17 09:32:26 +00:00
104e549b32
lang: lex: implement lexing of numbers and atoms
2024-11-17 09:31:58 +00:00
f55b8f4851
frontend: compile: use new opaque lexer interface
2024-11-16 23:05:07 +00:00
f14c387a6e
lang: lex: implement state stack; make lexer structure opaque
...
the state stack is used to track whether a string is currently being read,
what kind of string it is, and whether or not we are in an interpolation
within that string.
2024-11-16 23:03:43 +00:00
412e9abf05
frontend: compile: add colour-coding to token list
2024-11-16 23:03:16 +00:00
e01798db2f
doc: add a note describing lexer state transitions
2024-11-16 21:30:45 +00:00
102769735e
lang: lex: start implementing strings and interpolation
2024-11-16 21:30:32 +00:00