From a8558c65cbbe14cfe304f90667b366182f3db19d Mon Sep 17 00:00:00 2001 From: Billy Moore Date: Fri, 16 Jan 2026 20:14:02 +0000 Subject: [PATCH] Support for comments with curly braces. --- src/HSPC/Tokenize.hs | 1 + test/Main.hs | 4 +++- test/sample_programs/comments_curly_brace.golden | 0 test/sample_programs/comments_curly_brace.pas | 9 +++++++++ test/sample_programs/comments_single_line.golden | 0 test/sample_programs/comments_single_line.pas | 7 +++++++ 6 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 test/sample_programs/comments_curly_brace.golden create mode 100644 test/sample_programs/comments_curly_brace.pas create mode 100644 test/sample_programs/comments_single_line.golden create mode 100644 test/sample_programs/comments_single_line.pas diff --git a/src/HSPC/Tokenize.hs b/src/HSPC/Tokenize.hs index ce25e96..3b4964b 100644 --- a/src/HSPC/Tokenize.hs +++ b/src/HSPC/Tokenize.hs @@ -23,6 +23,7 @@ data HSPCToken tokenize :: String -> [HSPCToken] tokenize [] = [] +tokenize ('{' : cs) = tokenize $ dropWhile (/= '}') cs tokenize (c : cs) | "//" `isPrefixOf` (c : cs) = tokenize $ dropWhile (/= '\n') cs -- End includes this annoying '.' diff --git a/test/Main.hs b/test/Main.hs index a207c44..f41be51 100644 --- a/test/Main.hs +++ b/test/Main.hs @@ -32,7 +32,9 @@ testSuite = TestSpec "Divide(div) literal ints" "operators_divide_two_ints" 2, TestSpec "Brackets with literal ints" "operators_brackets" 26, TestSpec "Unary minus with literal ints" "operators_unary_minus_int" 75, - TestSpec "Unary plus with literal ints" "operators_unary_plus_int" 25 + TestSpec "Unary plus with literal ints" "operators_unary_plus_int" 25, + TestSpec "{} comments" "comments_curly_brace" 12, + TestSpec "// comments" "comments_single_line" 12 ] main :: IO () diff --git a/test/sample_programs/comments_curly_brace.golden b/test/sample_programs/comments_curly_brace.golden new file mode 100644 index 0000000..e69de29 diff --git a/test/sample_programs/comments_curly_brace.pas b/test/sample_programs/comments_curly_brace.pas new file mode 100644 index 0000000..f4ca001 --- /dev/null +++ b/test/sample_programs/comments_curly_brace.pas @@ -0,0 +1,9 @@ + +program CommentExample; + +begin +{ + halt(0); +} + halt(12); +end. diff --git a/test/sample_programs/comments_single_line.golden b/test/sample_programs/comments_single_line.golden new file mode 100644 index 0000000..e69de29 diff --git a/test/sample_programs/comments_single_line.pas b/test/sample_programs/comments_single_line.pas new file mode 100644 index 0000000..4cc31c5 --- /dev/null +++ b/test/sample_programs/comments_single_line.pas @@ -0,0 +1,7 @@ + +program CommentExample; + +begin + //halt(0); + halt(12); +end.