summaryrefslogtreecommitdiff
path: root/docs/chapter25/examples
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2025-06-13 15:42:08 -0700
committerCliff Click <cliffc@acm.org>2026-10-24 15:56:44 -0700
commitf5f0580331b4e29a0a0dc43d9885dfe0f0aed865 (patch)
treea983bd53ce8173b21380f0b3bf06d88d845ae861 /docs/chapter25/examples
parentb59f51486393b2fae7b0015bc5099c5514c7335a (diff)
downloadSimple-f5f0580331b4e29a0a0dc43d9885dfe0f0aed865.tar.gz
Simple-f5f0580331b4e29a0a0dc43d9885dfe0f0aed865.zip
Chapter 25: SSA Before Types Are Known
Co-authored-by: Hsiang-Ying Fu <66062782+fuhsnn@users.noreply.github.com> Co-authored-by: Tamás Hadházy <85063808+Hels15@users.noreply.github.com> Co-authored-by: fuhsnn <66062782+fuhsnn@users.noreply.github.com> Co-authored-by: Symious <14933944+symious@users.noreply.github.com> Co-authored-by: Jun Kawasaki <jun784@gmail.com> Co-authored-by: Hadházy Tamás <helsgithub15@gmail.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'docs/chapter25/examples')
-rw-r--r--docs/chapter25/examples/A_helloWorld.smp3
-rw-r--r--docs/chapter25/examples/BubbleSort.smp37
2 files changed, 40 insertions, 0 deletions
diff --git a/docs/chapter25/examples/A_helloWorld.smp b/docs/chapter25/examples/A_helloWorld.smp
new file mode 100644
index 00000000..07ff935f
--- /dev/null
+++ b/docs/chapter25/examples/A_helloWorld.smp
@@ -0,0 +1,3 @@
+// -*- mode: java; -*-
+sys.io.p("Hello, World!");
+return 0;
diff --git a/docs/chapter25/examples/BubbleSort.smp b/docs/chapter25/examples/BubbleSort.smp
new file mode 100644
index 00000000..938e3181
--- /dev/null
+++ b/docs/chapter25/examples/BubbleSort.smp
@@ -0,0 +1,37 @@
+// -*- mode: java; -*-
+
+// An implementation of
+// https://sampleprograms.io/projects/bubble-sort/
+//
+// Bubble sort, with reading (parsing) and writing (formatting) the data.
+
+val sort = { !sys.aryi64 nums ->
+ var done = false;
+ while( !done ) {
+ done = true;
+ for( var i = 0; i < nums.len-1; i++ )
+ if( nums.buf[i] > nums.buf[i+1] ) {
+ int tmp = nums.buf[i];
+ nums.buf[i] = nums.buf[i+1];
+ nums.buf[i+1] = tmp; // Swap
+ done = false;
+ }
+ }
+};
+
+// Read from stdin a line of the form "[ 4, 3, 2, 1]" and print it sorted.
+val main = { ->
+ // Parse array of numbers from stdin
+ var nums = sys.parseAryI64( sys.io.stdin() );
+ if( !nums ) {
+ sys.io.p("stdin must look like [4, 3, 2, 1]");
+ return 1;
+ }
+
+ // Bubble sort array of integers
+ sort(nums);
+
+ // Print a list of numbers to stdout
+ nums.str().write(1);
+ return 0;
+};