Commit Graph

87 Commits

Author SHA1 Message Date
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
7959dc26a1 Merge branch 'main' of https://github.com/washh/ivy 2024-11-16 20:40:32 +00:00
6e5db6a3e2 frontend: compile: print lex token details as they are read 2024-11-16 17:06:02 +00:00
00cf226078 lang: lex: implement lexing of symbols, identifiers, labels, keywords, and comments 2024-11-16 17:05:29 +00:00
024d317e13 cmake: store all build artifacts in bin/ and lib/ directories 2024-11-16 17:04:50 +00:00