Compare commits

..

3 Commits

Author SHA1 Message Date
Aryadev Chavali
b391fe9a74 lexer/token: update tokeniser to recognise puts 2026-01-29 15:49:20 +00:00
Aryadev Chavali
12e82e64d0 examples/hello-world: putstr -> puts 2026-01-29 15:40:30 +00:00
Aryadev Chavali
9b55b9ec32 arl.org: rewrite parser bit 2026-01-29 05:42:16 +00:00
4 changed files with 12 additions and 11 deletions

15
arl.org
View File

@@ -1,5 +1,6 @@
#+title: ARL - Issue tracker
#+date: 2026-01-23
#+filetags: arl
* TODO Write a minimum working transpiler
We need to be able to compile the following file:
@@ -23,13 +24,13 @@ It's a Eulerian Path from the source code to the native executable.
[[file:src/parser/]]
[[file:include/arl/parser/]]
We need to generate some form of AST from the token stream. We want
something a stage above the tokeniser so it should distinguish the
following cases:
- Literal value
- Primitive call
*** TODO AST design
*** TODO Token Stream to AST implementation
We need to generate some form of AST from the token stream. This
should be a little more advanced than our initial stream,
distinguishing between
- Literal values
- Primitive calls
- References to otherwise undefined words (may be defined through
import or later on)
** TODO Stack effect/type analysis
[[file:src/analysis/]]
[[file:include/arl/analysis/]]

View File

@@ -1 +1 @@
"Hello, world!\n" putstr
"Hello, world!\n" puts

View File

@@ -25,7 +25,7 @@ typedef enum
/// Known symbols which later stages would benefit from.
typedef enum
{
TOKEN_KNOWN_PUTSTR,
TOKEN_KNOWN_PUTS,
NUM_TOKEN_KNOWNS,
} token_known_t;

View File

@@ -13,8 +13,8 @@ const char *token_known_to_cstr(token_known_t known)
{
switch (known)
{
case TOKEN_KNOWN_PUTSTR:
return "putstr";
case TOKEN_KNOWN_PUTS:
return "puts";
default:
FAIL("Unexpected TOKEN_KNOWN value: %d\n", known);
}