summaryrefslogtreecommitdiff
path: root/test.golem
diff options
context:
space:
mode:
Diffstat (limited to 'test.golem')
-rw-r--r--test.golem53
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;
+}