From e541071e47cf09c84710b5a65ce939430dd93f99 Mon Sep 17 00:00:00 2001 From: Seyedamirhossein Hesamian Date: Sun, 9 Aug 2026 15:19:52 -0500 Subject: [PATCH 1/6] Simplify/refactor examples/scala/Makefile --- examples/scala/Makefile | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/examples/scala/Makefile b/examples/scala/Makefile index eacfbd28..97756825 100644 --- a/examples/scala/Makefile +++ b/examples/scala/Makefile @@ -25,20 +25,20 @@ OUT_BASE = obj OUT = ${OUT_BASE}/${EVALUATOR} $(shell mkdir -p ${OUT}) -SCALAGEN = simple.scala classic-binding.scala tiny.scala broad-fiber-cycle.scala \ - below-fiber-cycle.scala below-single-fiber-cycle.scala local-fiber-cycle.scala \ - test-coll.scala test-use-coll.scala test-cycle.scala use-global.scala \ - test-fields.scala \ - grammar.scala first.scala follow.scala nullable.scala \ +AST_TREE_SCALAGEN = simple.scala tiny.scala grammar.scala \ farrow-lv-tree.scala farrow-ubd-tree.scala - -MISCGEN = nested-cycles.scala SimpleParser.scala SimpleScanner.scala \ +EVALUATOR_EXAMPLES = classic-binding first follow nullable test-coll \ + test-use-coll test-cycle test-fields use-global broad-fiber-cycle \ + below-fiber-cycle below-single-fiber-cycle local-fiber-cycle nested-cycles \ + farrow-lv farrow-ubd farrow-ubd-fiber nested-ubd nested-ubd-fiber +SCALAGEN = ${AST_TREE_SCALAGEN} \ + $(foreach example,${EVALUATOR_EXAMPLES},$(example).scala $(example).static.scala) + +MISCGEN = SimpleParser.scala SimpleScanner.scala \ GrammarTokens.scala SimpleTokens.scala GrammarScanner.scala GrammarParser.scala \ - FarrowLvTokens.scala FarrowLvTokens.scala FarrowLvScanner.scala FarrowLvParser.scala farrow-lv.scala \ - FarrowUbdTokens.scala FarrowUbdTokens.scala FarrowUbdScanner.scala FarrowUbdParser.scala farrow-ubd.scala \ - farrow-ubd-fiber.scala \ - NestedUbdTokens.scala NestedUbdScanner.scala NestedUbdParser.scala nested-ubd.scala \ - nested-ubd-fiber.scala nested-ubd-tree.scala \ + FarrowLvTokens.scala FarrowLvScanner.scala FarrowLvParser.scala \ + FarrowUbdTokens.scala FarrowUbdScanner.scala FarrowUbdParser.scala \ + NestedUbdTokens.scala NestedUbdScanner.scala NestedUbdParser.scala \ *.output *.lex *.y *.scala~ .PHONY: all clean phony_explicit @@ -74,7 +74,7 @@ phony_explicit: %.static.scala : ../%.aps ${APS2SCALA} ${APS2SCALA} ${APS2SCALAFLAGS} -S -C $* - mv $*.scala $@ + cp $*.scala $@ %.scala : ../%.aps ${APS2SCALA} ${APS2SCALA} ${APS2SCALAFLAGS} $* From a7ee1e77b4911ab2fc4d9f674904095461d10078 Mon Sep 17 00:00:00 2001 From: Seyedamirhossein Hesamian Date: Sun, 9 Aug 2026 23:21:14 -0500 Subject: [PATCH 2/6] Update Makefile --- examples/scala/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/scala/Makefile b/examples/scala/Makefile index 97756825..e77765be 100644 --- a/examples/scala/Makefile +++ b/examples/scala/Makefile @@ -74,7 +74,7 @@ phony_explicit: %.static.scala : ../%.aps ${APS2SCALA} ${APS2SCALA} ${APS2SCALAFLAGS} -S -C $* - cp $*.scala $@ + mv $*.scala $@ %.scala : ../%.aps ${APS2SCALA} ${APS2SCALA} ${APS2SCALAFLAGS} $* From 8f4b371a7390abe443641c77bb71b5163fea960b Mon Sep 17 00:00:00 2001 From: Seyedamirhossein Hesamian Date: Mon, 10 Aug 2026 00:51:56 -0500 Subject: [PATCH 3/6] Update scc.c --- utilities/scc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utilities/scc.c b/utilities/scc.c index 3a339f5c..e3cc20fd 100644 --- a/utilities/scc.c +++ b/utilities/scc.c @@ -302,7 +302,7 @@ SCC_COMPONENTS* scc_graph_components(SccGraph* graph) { } while (changed); if (count_transitive_edges_added > 0) { - printf( + fprintf(stderr, "Graph provided to SCC utility has not gone through " "transitive closure (%d new transitive edges have been added)\n", count_transitive_edges_added); From 2bc21651ccb18b57a08680b83a793966b5fae24a Mon Sep 17 00:00:00 2001 From: Seyedamirhossein Hesamian Date: Mon, 10 Aug 2026 01:09:14 -0500 Subject: [PATCH 4/6] Update Makefile --- examples/scala/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/scala/Makefile b/examples/scala/Makefile index e77765be..f98b9625 100644 --- a/examples/scala/Makefile +++ b/examples/scala/Makefile @@ -46,7 +46,6 @@ MISCGEN = SimpleParser.scala SimpleScanner.scala \ # keep generated .scala .SECONDARY: -all : ${SCALAGEN} all : ${OUT}/grammar_implicit.class ${OUT}/simple_implicit.class ${OUT}/classic_binding_implicit.class ${OUT}/Classic.class all : ${OUT}/GrammarScanner.class ${OUT}/GrammarTokens.class ${OUT}/SimpleScanner.class ${OUT}/SimpleTokens.class all : ${OUT}/GrammarParserBase.class ${OUT}/GrammarParser.class ${OUT}/SimpleParserBase.class ${OUT}/SimpleParser.class From 5330a2b477eb92260129afd01d6eef1f790f21cc Mon Sep 17 00:00:00 2001 From: Seyedamirhossein Hesamian Date: Mon, 10 Aug 2026 11:12:48 -0500 Subject: [PATCH 5/6] Update scc.c --- utilities/scc.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/utilities/scc.c b/utilities/scc.c index e3cc20fd..9a60a394 100644 --- a/utilities/scc.c +++ b/utilities/scc.c @@ -301,11 +301,8 @@ SCC_COMPONENTS* scc_graph_components(SccGraph* graph) { } } while (changed); - if (count_transitive_edges_added > 0) { - fprintf(stderr, - "Graph provided to SCC utility has not gone through " - "transitive closure (%d new transitive edges have been added)\n", - count_transitive_edges_added); + if (count_transitive_edges_added > 0 && (analysis_debug & WORKLIST_CHANGES)) { + printf("Transitive closure added %d edges\n", count_transitive_edges_added); } graph->neighbors = collect_neighbors(graph); From 1981508e5479671f918a551760d2b93b37f3a3a3 Mon Sep 17 00:00:00 2001 From: Amir Hesamian Date: Mon, 10 Aug 2026 11:43:12 -0500 Subject: [PATCH 6/6] build succeeds --- analyze/aps-debug.c | 3 +++ utilities/scc.c | 4 +++- utilities/scc.h | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/analyze/aps-debug.c b/analyze/aps-debug.c index e85631cd..c5bf75e5 100644 --- a/analyze/aps-debug.c +++ b/analyze/aps-debug.c @@ -4,6 +4,7 @@ #include #include #include "aps-ag.h" +#include "utilities.h" static int aps_error_count = 0; @@ -83,6 +84,7 @@ static void list_debug_flags() { fprintf(stderr,"\tO TOTAL_ORDER\n"); fprintf(stderr,"\tT PROD_ORDER\n"); fprintf(stderr,"\t3 TYPE_3_DEBUG\n"); + fprintf(stderr,"\t4 SCC_ADDITIONS\n"); exit(0); } @@ -122,6 +124,7 @@ void set_debug_flags(const char *options) case 'v': oag_debug |= DEBUG_ORDER_VERBOSE; break; case 'T': oag_debug |= PROD_ORDER; break; case '3': oag_debug |= TYPE_3_DEBUG; break; + case '4': scc_debug |= SCC_ADDITIONS; break; } } while (*options != '\0'); } diff --git a/utilities/scc.c b/utilities/scc.c index 9a60a394..610d822f 100644 --- a/utilities/scc.c +++ b/utilities/scc.c @@ -14,6 +14,8 @@ #include "hashtable.h" #include "stack.h" +int scc_debug = 0; + /** * Give a graph and vertex it returns the internal index * @param graph SCC graph @@ -301,7 +303,7 @@ SCC_COMPONENTS* scc_graph_components(SccGraph* graph) { } } while (changed); - if (count_transitive_edges_added > 0 && (analysis_debug & WORKLIST_CHANGES)) { + if (count_transitive_edges_added > 0 && (scc_debug & SCC_ADDITIONS)) { printf("Transitive closure added %d edges\n", count_transitive_edges_added); } diff --git a/utilities/scc.h b/utilities/scc.h index 99923473..9c20522b 100644 --- a/utilities/scc.h +++ b/utilities/scc.h @@ -5,6 +5,9 @@ #include #include "hashtable.h" +extern int scc_debug; +#define SCC_ADDITIONS 4 + typedef struct scc_component { void** array; int length;