Skip to content

Commit 2b611e9

Browse files
committed
Fix build
1 parent ce43ed5 commit 2b611e9

File tree

10 files changed

+115
-19
lines changed

10 files changed

+115
-19
lines changed

CMakeLists.txt

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,19 +61,15 @@ set(BUILTINS_HEADERS
6161

6262
# Set lexer source and headers
6363
set(LEXER_SOURCE
64-
src/lexer/tokenizer/token.c
64+
src/parser/lexer/token.c
6565

66-
src/lexer/tokenizer/tokenizer.c
67-
68-
src/lexer/lexer.c
66+
src/parser/lexer/lexer.c
6967
)
7068

7169
set(LEXER_HEADERS
72-
src/lexer/tokenizer/token.h
73-
74-
src/lexer/tokenizer/tokenizer.h
70+
src/parser/lexer/token.h
7571

76-
src/lexer/lexer.h
72+
src/parser/lexer/lexer.h
7773
)
7874

7975
# Set AST source and headers
@@ -100,7 +96,7 @@ set(PARSER_HEADERS
10096

10197
# Set Main executables for lexer, ast, and parser
10298
set(LEXER_MAIN
103-
src/lexer/main.c
99+
src/parser/lexer/main.c
104100
)
105101

106102
set(AST_MAIN

Dockerfile

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ FROM alpine:latest
22
LABEL name="The One Programming Language"
33

44
# LLVM version
5-
ARG LLVM_VERSION=12.0.1
5+
ARG LLVM_VERSION=16.0.3
66

77
# LLVM dependencies
88
RUN apk --no-cache add \
@@ -58,8 +58,7 @@ RUN cmake --build ./build --config Debug --target all -j 6 --
5858
WORKDIR /One/build
5959

6060
# Running example input.one
61-
RUN ./lexer ../src/input.one log
62-
RUN cat log
61+
RUN ./lexer ../src/input.one log && cat log
6362

6463
# Running tests
6564
RUN ./lexer_test

src/ast/ast.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#include <inttypes.h>
1515

1616
#include "../builtins/array.h"
17-
#include "../lexer/tokenizer/token.h"
17+
#include "../parser/lexer/token.h"
1818

1919
typedef enum _token_type TokenType;
2020
typedef struct _location Location;

src/builtins/error.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
99
**/
1010

11-
#include <parser/lexer/lexer.h>
11+
#include "../parser/lexer/lexer.h"
1212

1313
#include "error.h"
1414

src/parser/lexer/lexer.c

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include <stdio.h>
1313
#include <stdlib.h>
1414
#include <string.h>
15-
#include <builtins/error.h>
15+
#include "../../builtins/error.h"
1616

1717
#ifdef _ONE_TEST_
1818
#define debug_lexer(format, args...) \
@@ -617,3 +617,49 @@ void lexer_free()
617617
// free(lexer.start);
618618
// free(lexer.current);
619619
}
620+
621+
/*
622+
* @function: lexer_trace
623+
* @description: Log and trace items of tokens
624+
* @arguments: FILE* file_out, char* data, Token** tokens
625+
* @return: nothing, void
626+
*/
627+
void lexer_trace(FILE* file_out, const char* data, Token** tokens)
628+
{
629+
debug_lexer("lexer_trace");
630+
631+
while (tokens != NULL && *tokens != NULL)
632+
if (tokens == NULL) return;
633+
634+
while (*tokens != NULL)
635+
{
636+
Token* t = *tokens;
637+
printf("sizeof(t) = %zu\n", sizeof t);
638+
printf("-->1\n");
639+
printf("-->%s\n", t == NULL ? "y" : "n");
640+
// printf("sizeof(t) = %zu\n", sizeof t);
641+
// printf("-->1\n");
642+
// printf("-->%s\n", t == NULL ? "y" : "n");
643+
char* t_name = token_name(t->type);
644+
printf("-->2\n");
645+
// printf("-->2\n");
646+
bool has1 = file_convert_index_to_rc(data, t->pos.index, &t->pos.line, &t->pos.column);
647+
printf("-->3\n");
648+
// printf("-->3\n");
649+
bool has2 = file_convert_index_to_rc(data, t->pos_end.index, &t->pos_end.line, &t->pos_end.column);
650+
printf("-->4\n");
651+
// printf("-->4\n");
652+
653+
fprintf(file_out, "[%zu:%zu] [%zu:%zu - %zu:%zu] %s", t->pos.tokens, t->length, t->pos.line, t->pos.column, t->pos_end.line, t->pos_end.column, t_name);
654+
printf("-->5\n");
655+
// printf("-->5\n");
656+
657+
if (t->value != NULL)
658+
{
659+
fprintf(file_out, ": \"%s\"", t->value);
660+
}
661+
fprintf(file_out, "\n");
662+
if (t->type == TOKEN_EOF) break;
663+
tokens++;
664+
}
665+
}

src/parser/lexer/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#include <stdio.h>
1212
#include <stdlib.h>
1313

14-
#include <builtins/file.h>
14+
#include "../../builtins/file.h"
1515

1616
#include "lexer.h"
1717
extern Token* current;

src/parser/lexer/token.c

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010

1111
#include "token.h"
1212
#include "lexer.h"
13-
#include <builtins/error.h>
13+
#include "../../builtins/array.h"
14+
#include "../../builtins/error.h"
1415

1516
#ifdef _ONE_TEST_
1617
#define debug_token(format, args...) \
@@ -587,3 +588,49 @@ bool token_is_skip(TokenType type)
587588
type == TOKEN_SKIP_COMMENT_SINGLE ||
588589
type == TOKEN_SKIP_COMMENT_MULTI);
589590
}
591+
592+
/*
593+
* @function: tokenizer_string
594+
* @description: Create a array of tokens from a one program source-code char*
595+
* @inputs: char* of a One program source-code
596+
* @return: Array of Token
597+
*/
598+
Token** tokenizer_string(char* data)
599+
{
600+
debug_token("tokenizer_string");
601+
debug_token("tokenizer_string: %s", data);
602+
603+
lexer_init(data);
604+
605+
Array tokens;
606+
array_init(&tokens);
607+
608+
size_t i;
609+
Token* t;
610+
for (;;)
611+
{
612+
t = lexer_scan();
613+
// printf("==>%s\n", token_name(t->type));
614+
array_push(&tokens, t);
615+
// debug_lexer("parser_scan: print_token %s", token_name(t->type));
616+
if (t->type == TOKEN_ERROR)
617+
{
618+
printf("Error: %s\n", t->value);
619+
break;
620+
}
621+
else if (t->type == TOKEN_EOF)
622+
break;
623+
}
624+
625+
debug_token("tokenizer_string: count of tokens is %d", tokens.count);
626+
debug_token("tokenizer_string: size of tokens is %d", tokens.size);
627+
628+
// while (*data != '\0')
629+
// {
630+
// Token* t = token_make_value(TOKEN_VALUE_IDENTIFIER, (char*){data});
631+
// array_push(&tokens, t);
632+
// data++;
633+
// }
634+
635+
return (Token**)tokens.data;
636+
}

src/parser/lexer/token.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,4 +407,12 @@ size_t token_utf8_string_length(char* s);
407407
*/
408408
bool token_is_skip(TokenType type);
409409

410+
/*
411+
* @function: tokenizer_string
412+
* @description: Create a array of tokens from a one program source-code char*
413+
* @inputs: char* of a One program source-code
414+
* @return: Array of Token
415+
*/
416+
Token** tokenizer_string(char* data);
417+
410418
#endif // _ONE_TOKENIZER_TOKEN_H_

src/parser/parser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "parser_token.h"
1919

20-
#include <builtins/array.h>
20+
#include "../builtins/array.h"
2121

2222
typedef struct
2323
{

test/test.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
#include "../src/builtins/file.h"
2525

26-
#include "../src/lexer/lexer.h"
26+
#include "../src/parser/lexer/lexer.h"
2727
#include "../src/parser/parser.h"
2828

2929
typedef struct

0 commit comments

Comments
 (0)