diff options
Diffstat (limited to 'test.golem')
-rw-r--r-- | test.golem | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/test.golem b/test.golem new file mode 100644 index 0000000..8bb015a --- /dev/null +++ b/test.golem @@ -0,0 +1,53 @@ +fn strlen(s); + +// typeless language +// (i know, this stupid but me bad) + +const usage_str = "usage: %s <file>\n"; + +fn main(argc, argv) { + var i; + var fp, data; + var toks; + + if argc != 2 { + fprintf(stderr, usage_str, argv[0]); + return 1; + } + i = 0; + while i < argc { + puts(argv[i]); + } + fp = fopen(argv[1], "rb"); + if fp == null { + perror("main"); + return 1; + } + data = drain(fp); + fclose(fp); + if data == 0 { + fprintf(stderr, "failed to drain '%s'\n", argv[1]); + return 1; + } + toks = lexer(data); + free(data); + if toks == 0 { + fprintf(stderr, "lexer failed\n"); + return 1; + } + lexer_print(toks); + lexer_free(toks); + return 0; +} + +fn strlen(s) { + var i, len; + + i = 0; + while s[i] { + len = len + ((s[i] & 0xFF) != 0); + len = len + ((s[i] & 0xFF00) != 0); + i += 1; + } + return len; +} |