From e4a3a10b2e11b4073fffadc88d77810d4d480457 Mon Sep 17 00:00:00 2001 From: Reboy2000 Date: Fri, 23 Jan 2026 20:26:08 -0500 Subject: [PATCH 1/3] Added Break and Continue --- Docs/doc/Corebenifits.pdf | Bin 0 -> 88092 bytes docs.md => Docs/doc/docs.md | 5 +- README.md | 4 ++ bin/Splice | Bin 0 -> 52360 bytes bin/spbuild | Bin 0 -> 51672 bytes examples/forloops/forloops.spl | 2 +- recurse.spc | Bin 76 -> 98 bytes recurse.spl | 12 ++-- src/build.c | 67 ++++++++++++++++++---- src/splice.c | 3 - src/splice.h | 102 ++++++++++++++++++++++++++++++--- 11 files changed, 167 insertions(+), 28 deletions(-) create mode 100644 Docs/doc/Corebenifits.pdf rename docs.md => Docs/doc/docs.md (97%) create mode 100755 bin/Splice create mode 100755 bin/spbuild diff --git a/Docs/doc/Corebenifits.pdf b/Docs/doc/Corebenifits.pdf new file mode 100644 index 0000000000000000000000000000000000000000..12c4715dc9a6736a60374823bb164a1650938be2 GIT binary patch literal 88092 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 literal 0 HcmV?d00001 diff --git a/docs.md b/Docs/doc/docs.md similarity index 97% rename from docs.md rename to Docs/doc/docs.md index 965e566..9d54f44 100644 --- a/docs.md +++ b/Docs/doc/docs.md @@ -139,7 +139,7 @@ while (i < 5) { Splice supports `for` loops with a counter variable. ```splice -for (let i = 0; i < 5; i = i + 1) { +for i in 1 . 10 { print(i); } ``` @@ -264,3 +264,6 @@ void loop() {} --- + +© Copyright 2026 OpenSplice and the Sinha Group +Licensed under the MIT License \ No newline at end of file diff --git a/README.md b/README.md index c681c9b..6281002 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,11 @@ [![CI](https://img.shields.io/github/actions/workflow/status/Open-Splice/Splice/main.yml?branch=main&label=Splice%20CI%2FCD&logo=github&style=plastic)](https://github.com/Open-Splice/Splice/actions/workflows/main.yml) + + + + [![Live on GitBook](https://img.shields.io/badge/Live%20on-Gitbook-black.svg?style=plastic&logo=gitbook&logoColor=white)](https://sinha.gitbook.io/splice) [![Reddit](https://img.shields.io/badge/On-Reddit-%23FF4500.svg?style=plastic&logo=Reddit&logoColor=white)](https://www.reddit.com/r/OpenSplice/) diff --git a/bin/Splice b/bin/Splice new file mode 100755 index 0000000000000000000000000000000000000000..3fa83d37d5ecbbeecf179bc6fab13bc9b0eb7e7d GIT binary patch literal 52360 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 literal 0 HcmV?d00001 diff --git a/bin/spbuild b/bin/spbuild new file mode 100755 index 0000000000000000000000000000000000000000..a618b4fc025636da44758af4bab5432868bc7bb5 GIT binary patch literal 51672 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 B2YLVi diff --git a/recurse.spl b/recurse.spl index f1af01a..7e26be8 100644 --- a/recurse.spl +++ b/recurse.spl @@ -1,5 +1,9 @@ -func hi(a) { - print(a); - hi(a + 1); +let i = 0 + +while (i < 5) { + i = i + 1 + if (i == 3) { + continue + } + print(i) } -hi(1); \ No newline at end of file diff --git a/src/build.c b/src/build.c index 8dd2934..ab8c270 100644 --- a/src/build.c +++ b/src/build.c @@ -78,13 +78,15 @@ typedef enum { TK_IF, TK_ELSE, TK_WHILE, TK_FOR, TK_IN, TK_RAISE, TK_TRUE, TK_FALSE, - TK_AND, TK_OR, TK_NOT, + TK_AND, TK_OR, TK_NOT,TK_DOTDOT,TK_BREAK,TK_CONTINUE, + + TK_LPAREN, TK_RPAREN, TK_LBRACE, TK_RBRACE, TK_LBRACKET, TK_RBRACKET, TK_COMMA, TK_SEMI, - TK_DOT, + TK_DOT,TK_QUIT, TK_ASSIGN, /* = */ TK_PLUS, TK_MINUS, TK_STAR, TK_SLASH, TK_IMPORT, @@ -152,7 +154,12 @@ static void tokenize(const char *src, TokVec *out) { /* number */ if (isdigit((unsigned char)*p)) { const char *s = p; - while (isdigit((unsigned char)*p) || *p=='.') p++; + while (isdigit((unsigned char)*p)) p++; + if (*p=='.' && isdigit((unsigned char)p[1])) { + p++; + while (isdigit((unsigned char)*p)) p++; + } + char tmp[128]; size_t n = (size_t)(p - s); if (n >= sizeof(tmp)) error(line, "Splice/OverflowError number too long"); @@ -187,12 +194,15 @@ static void tokenize(const char *src, TokVec *out) { else if (!strcmp(id,"read")) kw = TK_READ; else if (!strcmp(id,"write")) kw = TK_WRITE; else if (!strcmp(id,"true")) kw=TK_TRUE; + else if (!strcmp(id,"break")) kw = TK_BREAK; + else if (!strcmp(id, "continue")) kw = TK_CONTINUE; else if (!strcmp(id,"false")) kw=TK_FALSE; else if (!strcmp(id,"and")) kw=TK_AND; else if (!strcmp(id,"or")) kw=TK_OR; else if (!strcmp(id,"not")) kw=TK_NOT; else if (!strcmp(id,"input")) kw=TK_INPUT; else if (!strcmp(id,"import")) kw=TK_IMPORT; + else if (!strcmp(id,"quit")) kw=TK_QUIT; Tok t = { .t=kw, .lex=(kw==TK_IDENT? id : NULL), .line=line }; if (kw!=TK_IDENT) free(id); @@ -205,9 +215,14 @@ static void tokenize(const char *src, TokVec *out) { if (p[0]=='!' && p[1]=='=') { tv_push(out,(Tok){.t=TK_NEQ,.line=line}); p+=2; continue; } if (p[0]=='<' && p[1]=='=') { tv_push(out,(Tok){.t=TK_LE,.line=line}); p+=2; continue; } if (p[0]=='>' && p[1]=='=') { tv_push(out,(Tok){.t=TK_GE,.line=line}); p+=2; continue; } - + if (p[0]=='.' && p[1]=='.') { + tv_push(out, (Tok){ .t = TK_DOTDOT, .line = line }); + p += 2; + continue; + } /* single-char */ switch (*p) { + case '.': tv_push(out,(Tok){.t=TK_DOT,.line=line}); p++; break; case '(': tv_push(out,(Tok){.t=TK_LPAREN,.line=line}); p++; break; case ')': tv_push(out,(Tok){.t=TK_RPAREN,.line=line}); p++; break; case '{': tv_push(out,(Tok){.t=TK_LBRACE,.line=line}); p++; break; @@ -216,8 +231,12 @@ static void tokenize(const char *src, TokVec *out) { case ']': tv_push(out,(Tok){.t=TK_RBRACKET,.line=line}); p++; break; case ',': tv_push(out,(Tok){.t=TK_COMMA,.line=line}); p++; break; case ';': tv_push(out,(Tok){.t=TK_SEMI,.line=line}); p++; break; - case '.': tv_push(out,(Tok){.t=TK_DOT,.line=line}); p++; break; + + + + + case '=': tv_push(out,(Tok){.t=TK_ASSIGN,.line=line}); p++; break; case '+': tv_push(out,(Tok){.t=TK_PLUS,.line=line}); p++; break; case '-': tv_push(out,(Tok){.t=TK_MINUS,.line=line}); p++; break; @@ -495,6 +514,13 @@ static ASTNode *parse_statement(void) { n->var.value = rhs; return n; } + if (match(TK_CONTINUE)) { + return ast_new(AST_CONTINUE); + } + if (match(TK_BREAK)) { + return ast_new(AST_BREAK); + } + if (match(TK_PRINT)) { consume(TK_LPAREN, "Splice/SyntaxError Expected '(' after print"); @@ -504,6 +530,17 @@ static ASTNode *parse_statement(void) { n->print.expr = e; return n; } + if (match(TK_QUIT)) { + ASTNode *zero = ast_new(AST_NUMBER); + zero->number = 0; + + ASTNode *ret = ast_new(AST_RETURN); + ret->retstmt.expr = zero; + + return ret; + } + + if (match(TK_IMPORT)) { Tok *f = consume(TK_STRING, "Splice/SyntaxError Expected string filename after import"); @@ -577,24 +614,34 @@ static ASTNode *parse_statement(void) { consume(TK_LPAREN, "Splice/SyntaxError Expected '(' after if"); ASTNode *cond = parse_expression(); consume(TK_RPAREN, "Splice/SyntaxError Expected ')' after if cond"); + consume(TK_LBRACE, "Splice/SyntaxError Expected '{' after if"); ASTNode *thenb = parse_statements_until(TK_RBRACE); consume(TK_RBRACE, "Splice/SyntaxError Expected '}' after if body"); ASTNode *elseb = NULL; + if (match(TK_ELSE)) { - consume(TK_LBRACE, "Splice/SyntaxError Expected '{' after else"); - elseb = parse_statements_until(TK_RBRACE); - consume(TK_RBRACE, "Splice/SyntaxError Expected '}' after else body"); + /* else if (...) { ... } */ + if (at(TK_IF)) { + elseb = parse_statement(); // recurse → AST_IF + } + /* else { ... } */ + else { + consume(TK_LBRACE, "Splice/SyntaxError Expected '{' after else"); + elseb = parse_statements_until(TK_RBRACE); + consume(TK_RBRACE, "Splice/SyntaxError Expected '}' after else body"); + } } ASTNode *n = ast_new(AST_IF); - n->ifstmt.condition = cond; + n->ifstmt.condition = cond; n->ifstmt.then_branch = thenb; n->ifstmt.else_branch = elseb; return n; } + if (match(TK_WHILE)) { consume(TK_LPAREN, "Splice/SyntaxError Expected '(' after while"); ASTNode *cond = parse_expression(); @@ -613,7 +660,7 @@ static ASTNode *parse_statement(void) { Tok *id = consume(TK_IDENT, "Splice/SyntaxError Expected for variable"); consume(TK_IN, "Splice/SyntaxError Expected 'in' after for var"); ASTNode *start = parse_expression(); - consume(TK_DOT, "Splice/SyntaxError Expected '.' in for range"); + consume(TK_DOTDOT, "Splice/SyntaxError Expected '.' in for range"); ASTNode *end = parse_expression(); consume(TK_LBRACE, "Splice/SyntaxError Expected '{' after for range"); ASTNode *body = parse_statements_until(TK_RBRACE); diff --git a/src/splice.c b/src/splice.c index a17453a..df8f4a1 100644 --- a/src/splice.c +++ b/src/splice.c @@ -22,10 +22,7 @@ int main(int argc, char **argv) { } ASTNode *root = read_ast_from_spc(arg); - info(0, "Loaded AST from %s", arg); interpret(root); free_ast(root); - - success(0, "Code ran successfully"); return 0; } diff --git a/src/splice.h b/src/splice.h index d46a78d..a9e46cf 100644 --- a/src/splice.h +++ b/src/splice.h @@ -119,9 +119,12 @@ typedef enum { AST_BINARY_OP, AST_LET, AST_ASSIGN, + AST_BREAK, AST_PRINT, AST_READ, AST_WRITE, + AST_CONTINUE, + AST_RAISE, AST_WARN, AST_INPUT, @@ -234,7 +237,8 @@ typedef struct { ========================= */ static jmp_buf return_buf; static Value return_value; - +static jmp_buf *break_buf = NULL; +static jmp_buf *continue_buf = NULL; typedef enum { VAR_NUMBER, VAR_STRING, VAR_OBJECT } VarType; typedef struct { char *name; @@ -780,6 +784,11 @@ static void write_ast_node(FILE *f, const ASTNode *n) { case AST_IDENTIFIER: w_str(f, n->string); break; + case AST_BREAK: + /* nothing to write */ + break; + case AST_CONTINUE: + break; case AST_BINARY_OP: w_str(f, n->binop.op); @@ -890,6 +899,9 @@ static ASTNode *read_ast_node(FILE *f) { case AST_READ: n->read.expr = read_ast_node(f); break; + case AST_BREAK: + /* nothing to read */ + break; case AST_WRITE: n->write.path = read_ast_node(f); @@ -908,6 +920,8 @@ static ASTNode *read_ast_node(FILE *f) { n->tuple.items[i] = read_ast_node(f); break; } + case AST_CONTINUE: + break; case AST_STRING: case AST_IDENTIFIER: @@ -1300,8 +1314,24 @@ static inline Value eval(ASTNode *node) { double result = 0; const char *op = node->binop.op ? node->binop.op : ""; - if (strcmp(op, "==") == 0) result = (lnum == rnum); - else if (strcmp(op, "!=") == 0) result = (lnum != rnum); + if (strcmp(op, "==") == 0) { + if (left.type == VAL_STRING || right.type == VAL_STRING) { + const char *ls = (left.type == VAL_STRING) ? left.string : ""; + const char *rs = (right.type == VAL_STRING) ? right.string : ""; + result = (strcmp(ls, rs) == 0); + } else { + result = (lnum == rnum); + } + } + else if (strcmp(op, "!=") == 0) { + if (left.type == VAL_STRING || right.type == VAL_STRING) { + const char *ls = (left.type == VAL_STRING) ? left.string : ""; + const char *rs = (right.type == VAL_STRING) ? right.string : ""; + result = (strcmp(ls, rs) != 0); + } else { + result = (lnum != rnum); + } + } else if (strcmp(op, "+") == 0) result = lnum + rnum; else if (strcmp(op, "-") == 0) result = lnum - rnum; else if (strcmp(op, "*") == 0) result = lnum * rnum; @@ -1531,6 +1561,15 @@ static inline void interpret(ASTNode *node) { } break; } + case AST_CONTINUE: + longjmp(continue_buf, 1); + break; + + case AST_BREAK: + if (!break_buf) + error(0, "Splice/SyntaxError 'break' outside loop"); + longjmp(*break_buf, 1); + break; case AST_IMPORT: { #if !SPLICE_EMBED @@ -1631,10 +1670,32 @@ static inline void interpret(ASTNode *node) { break; } - case AST_WHILE: - while (eval(node->whilestmt.cond).number) - interpret(node->whilestmt.body); + case AST_WHILE: { + jmp_buf jb, jc; + + jmp_buf *prev_break = break_buf; + jmp_buf *prev_cont = continue_buf; + + break_buf = &jb; + continue_buf = &jc; + + if (setjmp(jb) == 0) { + while (eval(node->whilestmt.cond).number) { + if (setjmp(jc) == 0) { + interpret(node->whilestmt.body); + } + // continue lands here + } + } + + // restore outer loop context + break_buf = prev_break; + continue_buf = prev_cont; + break; + } + + case AST_FOR: { if (!node->forstmt.for_var) { @@ -1644,10 +1705,33 @@ static inline void interpret(ASTNode *node) { int start = (int)eval(node->forstmt.for_start).number; int end = (int)eval(node->forstmt.for_end).number; - for (int k = start; k <= end; ++k) { - set_var(node->forstmt.for_var, VAR_NUMBER, k, NULL); - interpret(node->forstmt.for_body); + jmp_buf jb, jc; + + jmp_buf *prev_break = break_buf; + jmp_buf *prev_cont = continue_buf; + + break_buf = &jb; + continue_buf = &jc; + + if (setjmp(jb) == 0) { + for (int k = start; k <= end; ++k) { + + set_var(node->forstmt.for_var, VAR_NUMBER, k, NULL); + + if (setjmp(jc) == 0) { + interpret(node->forstmt.for_body); + } + // continue jumps land here + } } + + // restore outer context + break_buf = prev_break; + continue_buf = prev_cont; + + + + break; } From b885edd2fc3ed6f002a7fe89760b2bad0c79b2d8 Mon Sep 17 00:00:00 2001 From: Reboy2000 Date: Fri, 23 Jan 2026 20:26:30 -0500 Subject: [PATCH 2/3] Added Break and Continue --- recurse | Bin 33464 -> 0 bytes recurse.c | 13 ------------- 2 files changed, 13 deletions(-) delete mode 100755 recurse delete mode 100644 recurse.c diff --git a/recurse b/recurse deleted file mode 100755 index fb173dd991d66f3c8c4d64ed4eace5084435337c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33464 zcmeI*U2GIp7zW@ovxT&_NRh@WYC16~L4%Z3V~mN(RA{8J&<2{Y>c!b^cNbRaw%H#n zl*pi|(RgDGA|@sjys!;=qa-Xb#wHlO@~0>miNU=gX*DQBE`(U?`<cRqP9WDS7`PB}XvN zLrQtFKjkSELG_^DkD%|OFU#&gjC;jz>LTj3=+`2;5y29C=HPg+J?;Io_pP|dLCAN} zlFOu9b|j-Mv0Xc2=u5c^A^X_-?at_u5$ zRo#!uJfHMYR^j<1&lui&u*iKMLC9Q@suO=BYhf?g&z4=8Y`lNX<7=?5WVEYlR7^WQlqOZbp?xF zSA)w(mn*ej#_>mAc6n~@t=ZwW39K8P4Cyn$_0`JTJYB0!e2P2{+B3MeQ0txuUcVMO z>uvXnvYXB{$8Irpcl)~w)?yNYnTuLN{?}4m^SkgP?sdpgZ!($j3h9Mw*`fdiC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-RYO%m{KQXZzE00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+;C~7@Sl5k^BiH3f@8GfC!NacQEb&q?Z5OAwyQL9-t&P4OOea&>gqg9l zYLteIhtyaNehN5PJf!=#>-bQ-FPDw$?eX4NJgsW_dy^@(B#pszCa!LiWrb>2Dzkj4 zB`1#;?{hoqrP!#PdoKHxv%RG+XL?J&8G%}wrj*WdcW_euwRhI$&boBx!2YkEtD8ic z{YX;E)qpWPjpZpDH?z&wBA5>&q|_+2&v9&X^m}pS-+u@FX{&VmsXtFO4j*{u*^NUR zk3R6&);}U!FCOZgzBl)CzUKUwKRkNmgT3#67#{e1CNWv{{nXTRc2{`O+@525c8{F> z^wLjUVj5qmu9m7 diff --git a/recurse.c b/recurse.c deleted file mode 100644 index 00388d3..0000000 --- a/recurse.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "stdio.h" -#include "stdlib.h" -#include "string.h" -#include "ctype.h" - -void recurse(int a) { - printf("%d\n", a); - recurse(a + 1); -} -int main() { - recurse(1); - return 0; -} \ No newline at end of file From 456c2c354416eea853497b19e761f02f0987e1a4 Mon Sep 17 00:00:00 2001 From: Reboy2000 Date: Fri, 23 Jan 2026 21:20:54 -0500 Subject: [PATCH 3/3] Added Break and Continue --- src/splice.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/splice.h b/src/splice.h index a9e46cf..d436d23 100644 --- a/src/splice.h +++ b/src/splice.h @@ -1562,7 +1562,7 @@ static inline void interpret(ASTNode *node) { break; } case AST_CONTINUE: - longjmp(continue_buf, 1); + longjmp(*continue_buf, 1); break; case AST_BREAK: