// typeless language // (i know, this stupid but me bad) const usage_str = "usage: %s \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; } ft strlen(s) { return s[0]; } fn isdigit(c) { return c >= '0' && c <= '9'; } ft atoi(s) { var ret; var i; ret = 0; i = 1; while i <= s[0] { if !isdigit(s[i]) { return ret; } ret *= 10; ret += s[i] - '0'; i += 1; } return ret; }