From f83643c9260a7297bbb71484f02c0fefd4e501ce Mon Sep 17 00:00:00 2001 From: wires Date: Tue, 25 Feb 2025 19:22:08 -0500 Subject: [PATCH] more skeleton --- src/akh_lexer.erl | 5 +++++ src/akhamoth.erl | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/akh_lexer.erl b/src/akh_lexer.erl index a260d47..1c2c09a 100644 --- a/src/akh_lexer.erl +++ b/src/akh_lexer.erl @@ -16,6 +16,7 @@ | ')' | ',' | ';' + | ':' | '.' | '->' | '+'. @@ -34,6 +35,10 @@ tokenize(Text) -> tokenize(Text, 0, 1, akh_source_map:empty(), []). ) -> {ok, source_map(), [token()]}. tokenize([], _, _, SourceMap, Tokens) -> {ok, SourceMap, Tokens}; +tokenize([$( | T], Offset, Line, SourceMap, Tokens) -> + tokenize(T, Offset + 1, Line, SourceMap, [{'(', {Offset, 1}} | Tokens]); +tokenize([$) | T], Offset, Line, SourceMap, Tokens) -> + tokenize(T, Offset + 1, Line, SourceMap, [{')', {Offset, 1}} | Tokens]); tokenize([$\n | T], Offset, Line, SourceMap, Tokens) -> NewMap = akh_source_map:insert(Offset, Line, SourceMap), tokenize(T, Offset + 1, Line + 1, NewMap, Tokens); diff --git a/src/akhamoth.erl b/src/akhamoth.erl index f53e3d3..bfb9730 100644 --- a/src/akhamoth.erl +++ b/src/akhamoth.erl @@ -1,3 +1,9 @@ -module(akhamoth). --export([]). +-export([compile/1]). + +-spec compile(Path :: file:name_all()) -> any(). +compile(Path) -> + {ok, SrcBin} = file:read_file(Path), + Src = unicode:characters_to_list(SrcBin), + akh_lexer:tokenize(Src).