diff --git a/Project-02-03-04/Source.gv.png b/Project-02-03-04/Source.gv.png index 7d29a74..f5245bf 100644 Binary files a/Project-02-03-04/Source.gv.png and b/Project-02-03-04/Source.gv.png differ diff --git a/Project-02-03-04/cfg/CFG.py b/Project-02-03-04/cfg/CFG.py index 316a618..0e9a16d 100644 --- a/Project-02-03-04/cfg/CFG.py +++ b/Project-02-03-04/cfg/CFG.py @@ -1,92 +1,60 @@ -from typing import Any - +from typing import Any, Callable, Set from .CFG_Node import * - class CFG: - def __init__(self, in_node: CFG_Node, out_node: CFG_Node, ast=None): - self.in_node = in_node - self.out_node = out_node + def __init__(self, ast): + start = CFG_START() + start.dot_style = 'style=filled, color=gray' + end = CFG_END() + end.dot_style = 'style=filled, color=gray' + + last = ast.cfa(start, end) + if last is not None: + last.add_child(end) + + self.START = start + self.END = end self.ast = ast - - # If AST is provided, filter the graph by removing empty nodes - if ast is not None: - self._filter_graph() - - def _filter_graph(self): - """ - Filter the CFG by removing empty nodes and rewiring edges. - This should be done once during construction, not during to_dot(). - """ - # Collect all nodes in the graph - all_nodes = set() - self._collect_nodes(self.in_node, all_nodes) - - # Identify nodes to remove - nodes_to_remove = [node for node in all_nodes if self._should_remove_node(node)] - - # Remove nodes and rewrite edges + + # Remove empty nodes and rewire edges + all_nodes = self.nodes() + nodes_to_remove = [node for node in all_nodes if node.is_empty()] for node in nodes_to_remove: - self._remove_node_and_rewire(node) - - def _collect_nodes(self, node, node_set): - """Recursively collect all nodes in the graph""" + self.__remove_and_rewire(node) + + def nodes(self): + all_nodes = set() + self.__collect_nodes(self.START, all_nodes) + return all_nodes + + def __collect_nodes(self, node, node_set): if node in node_set: return node_set.add(node) for child in node.children: - self._collect_nodes(child, node_set) + self.__collect_nodes(child, node_set) - def _should_remove_node(self, node): - """Determine if a node should be removed from the graph""" - # Remove empty nodes (nodes with no meaningful content) - # Check for both None and "None" string - if hasattr(node, 'label') and ((node.label is None) or (node.label == "None")): - # Nodes with AST nodes should NOT be removed - they will get labels from AST - if node.ast_node is not None: - return False - # Also keep global START nodes (they have label=None but should be shown) - if hasattr(node, 'dot_label') and node.dot_label() == "START": - return False - # Remove nodes that have no AST and no meaningful label - return True - - # Remove global END nodes (those without function names) - if hasattr(node, 'dot_label'): - if node.dot_label() in ["END"]: - # Keep function-specific END nodes, skip global ones - if hasattr(node, 'label') and node.label and '(' in node.label and ')' in node.label: - return False - else: - return True - - return False - - def _remove_node_and_rewire(self, node): - """Remove a node from the graph and rewire edges to bypass it""" - # Store original children before modification + def __remove_and_rewire(self, node): original_children = list(node.children) - - # For each parent, rewire edges to bypass this node + for parent in list(node.parents): if node in parent.children: - # Find appropriate targets based on node type - if hasattr(node, 'dot_shape') and node.dot_shape() == "diamond": - # For diamond nodes, preserve T/F branches + # For diamond nodes, preserve the true and false bodies + if isinstance(node, CFG_DIAMOND): targets = [] if len(original_children) >= 1: - true_target = self._find_first_non_empty_child(original_children[0]) + true_target = self.__first_filled_child(original_children[0]) if true_target: targets.append(true_target) if len(original_children) >= 2: - false_target = self._find_first_non_empty_child(original_children[1]) + false_target = self.__first_filled_child(original_children[1]) if false_target: targets.append(false_target) + # For regular nodes, find all non-empty targets else: - # For regular nodes, find all non-empty targets targets = [] for child in original_children: - target = self._find_first_non_empty_child(child) + target = self.__first_filled_child(child) if target and target not in targets: targets.append(target) @@ -101,97 +69,49 @@ class CFG: node.parents.clear() node.children.clear() - def _find_first_non_empty_child(self, node): - """Find the first non-empty descendant of a node""" - if not self._should_remove_node(node): + def __first_filled_child(self, node): + if not node.is_empty(): return node - # Recursively check children for child in sorted(node.children, key=lambda n: n.id): - result = self._find_first_non_empty_child(child) + result = self.__first_filled_child(child) if result is not None: return result - return None def to_dot(self) -> str: - """ - Convert the CFG to DOT format. - This method should ONLY handle formatting, not graph modifications. - All graph filtering and modifications should be done in the constructor. - """ - visited = set() - lines = ["digraph CFG {"] - lines.append(' node [fontname="Helvetica"];') - - def node_label(node: CFG_Node) -> str | None | Any: - # Use custom label if available - if hasattr(node, 'label') and node.label: - # Remove node ID from label for certain node types - if isinstance(node, (CFG_START, CFG_END, CFG_CALL, CFG_RETURN)): - return node.label - else: - return node.label - - # Base label from the node - base = node.dot_label() if hasattr(node, "dot_label") else "" - - # Semantic label from AST - if node.ast_node is not None: - semantic = str(node.ast_node) - label_content = f"{base}\n{semantic}" if base else semantic - return label_content - - return base if base else None - - def node_shape(node: CFG_Node) -> str: - return node.dot_shape() if hasattr(node, "dot_shape") else "box" - - def node_style(node: CFG_Node) -> str: - # Add styling for special node types - styles = [] - if hasattr(node, 'label') and node.label: - if node.label.startswith('CALL') or node.label.startswith('RET'): - styles.append('style=filled') - styles.append('color=orange') - elif node.label.startswith('START') or node.label.startswith('END'): - styles.append('style=filled') - styles.append('color=green') - return ', '.join(styles) if styles else '' - - def visit(node: CFG_Node): - if node.id in visited: - return - - visited.add(node.id) - - label = node_label(node) - if label is None: - # This shouldn't happen if the constructor did its job properly - return - - shape = node_shape(node) - style = node_style(node) + lines = ["digraph CFG {", ' node [fontname="Helvetica"];'] + def emit(node: CFG_Node): + label = node.dot_label() + shape = node.dot_shape + style = node.dot_style style_str = f", {style}" if style else "" - lines.append( - f' n{node.id} [label="{label}", shape={shape}{style_str}];' - ) + lines.append(f' n{node.id} [label="{label}", shape={shape}{style_str}];') - # Add edges to children for i, child in enumerate(sorted(node.children, key=lambda n: n.id)): - # Add edge labels for diamond nodes (conditional branches) edge_label = "" - if hasattr(node, 'dot_shape') and node.dot_shape() == "diamond": + if isinstance(node, CFG_DIAMOND): if i == 0: edge_label = ' [label="T"]' elif i == 1: edge_label = ' [label="F"]' - lines.append(f" n{node.id} -> n{child.id}{edge_label};") - visit(child) - # Start the CFG traversal from the entry node - visit(self.in_node) + self.traverse(emit, start=self.START) lines.append("}") - return "\n".join(lines) \ No newline at end of file + return "\n".join(lines) + + # Reusable traversal function + def traverse(self, fn: Callable[[CFG_Node], Any], start: CFG_Node | None = None) -> None: + start = start or self.START + visited: Set[int] = set() + + def visit(node: CFG_Node): + if node.id in visited: + return + visited.add(node.id) + fn(node) + for child in sorted(node.children, key=lambda n: n.id): + visit(child) + visit(start) \ No newline at end of file diff --git a/Project-02-03-04/cfg/CFG_Node.py b/Project-02-03-04/cfg/CFG_Node.py index 0a9fa81..512b5e3 100644 --- a/Project-02-03-04/cfg/CFG_Node.py +++ b/Project-02-03-04/cfg/CFG_Node.py @@ -5,7 +5,10 @@ class CFG_Node: self.ast_node = ast_node self.children = set() self.parents = set() - self.label = None # Optional label for the node + + self.label = None + self.dot_shape = 'box' + self.dot_style = '' self.id = CFG_Node.__counter CFG_Node.__counter += 1 @@ -36,44 +39,58 @@ class CFG_Node: parent.children.remove(self) self.parents.remove(parent) - def __str__(self): - if self.label: - return f"CFG_Node({self.id}, label='{self.label}')" - elif self.ast_node: - return f"CFG_Node({self.id}, ast={type(self.ast_node).__name__})" - else: - return f"CFG_Node({self.id})" + def dot_label(self): + # Prioritize custom label + if self.label is not None: + return self.label - def __repr__(self): - return self.__str__() + # Build label from AST node + if self.ast_node is not None: + return str(self.ast_node) + return None + + def is_filled(self): + return not self.is_empty() + + def is_empty(self): + # Node is empty if it has no label and no related AST node + if self.label is None or self.label == "None": + if self.ast_node is not None: + # Node belongs to a ast node + return False + return True + # Node is required for the control flow + return False class CFG_START(CFG_Node): - def dot_shape(self): - return "box" - - def dot_label(self): - return "START" - + def __init__(self, ast_node=None): + super().__init__(ast_node) + self.dot_shape = "ellipse" + self.dot_style = 'style=filled, color=green' + self.label = "START" class CFG_END(CFG_Node): - def dot_shape(self): - return "box" - - def dot_label(self): - return "END" - + def __init__(self, ast_node=None): + super().__init__(ast_node) + self.dot_shape = "ellipse" + self.dot_style = 'style=filled, color=green' + self.label = "END" class CFG_DIAMOND(CFG_Node): - def dot_shape(self): - return "diamond" - + def __init__(self, ast_node=None): + super().__init__(ast_node) + self.dot_shape = "diamond" + self.label = "" class CFG_CALL(CFG_Node): - def dot_shape(self): - return "box" - + def __init__(self, ast_node=None): + super().__init__(ast_node) + self.dot_style = 'style=filled, color=orange' + self.dot_shape = "box" class CFG_RETURN(CFG_Node): - def dot_shape(self): - return "box" + def __init__(self, ast_node=None): + super().__init__(ast_node) + self.dot_style = 'style=filled, color=orange' + self.dot_shape = "box" diff --git a/Project-02-03-04/cfg_build.py b/Project-02-03-04/cfg_build.py index 482959f..c88e4ec 100644 --- a/Project-02-03-04/cfg_build.py +++ b/Project-02-03-04/cfg_build.py @@ -125,7 +125,6 @@ class IF(compiler.IF): # Attach junction node diamond = CFG_DIAMOND(self.cond) - diamond.label = "" cond_node.add_child(diamond) # Define start and end entry and unwraps expressions @@ -164,7 +163,6 @@ class WHILE(compiler.WHILE): # Attach junction node diamond = CFG_DIAMOND(self.cond) - diamond.label = "" comp_node.add_child(diamond) # Unwrap the loop body diff --git a/Project-02-03-04/generate_after_dot_files.py b/Project-02-03-04/generate_after_dot_files.py deleted file mode 100644 index f47f5ea..0000000 --- a/Project-02-03-04/generate_after_dot_files.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import os -from pathlib import Path - -# Add the current directory to Python path so we can import our modules -sys.path.insert(0, '/home/janniclas/Projekte/Construction-of-Compilers/Project-02-03-04') - -import triplayacc as yacc -import cfg_build -import syntax -from cfg.CFG import CFG -from cfg.CFG_Node import (CFG_START, CFG_END) - -def make_cfg(ast): - start = CFG_START() - end = CFG_END() - - last = ast.cfa(start, end) - if last is not None: - last.add_child(end) - - return CFG(start, end, ast) - -def generate_dot_files(): - base = Path("triplaprograms") - programs = sorted([f for f in base.glob("*.tripla")]) - - output_dir = Path("mistraltests/after") - output_dir.mkdir(exist_ok=True, parents=True) - - for path in programs: - try: - print(f"Processing {path.name}...") - - # Reset the global FUNCTIONS registry - cfg_build.FUNCTIONS.clear() - - source = path.read_text() - ast = yacc.parser.parse(source) - - # Create CFG - cfg = make_cfg(ast) - - # Generate dot file - dot_str = cfg.to_dot() - - # Save to file - output_path = output_dir / f"{path.stem}_cfg_after.dot" - with open(output_path, "w") as f: - f.write(dot_str) - - print(f"Saved: {output_path}") - - except Exception as e: - print(f"Error processing {path.name}: {e}") - continue - -def compare_dot_files(): - """Compare before and after dot files to ensure they're the same""" - before_dir = Path("mistraltests/before") - after_dir = Path("mistraltests/after") - - before_files = sorted(before_dir.glob("*_cfg_before.dot")) - after_files = sorted(after_dir.glob("*_cfg_after.dot")) - - print("\nComparing dot files...") - - mismatches = [] - - for before_file, after_file in zip(before_files, after_files): - before_content = before_file.read_text() - after_content = after_file.read_text() - - if before_content == after_content: - print(f"✓ {before_file.stem} - MATCH") - else: - print(f"✗ {before_file.stem} - MISMATCH") - mismatches.append((before_file, after_file)) - - if mismatches: - print(f"\n{mismatches} files have mismatches!") - for before_file, after_file in mismatches: - print(f" {before_file.name} vs {after_file.name}") - else: - print("\nAll dot files match! The refactoring was successful.") - -if __name__ == "__main__": - generate_dot_files() - compare_dot_files() \ No newline at end of file diff --git a/Project-02-03-04/generate_before_dot_files.py b/Project-02-03-04/generate_before_dot_files.py deleted file mode 100644 index 4f7bd93..0000000 --- a/Project-02-03-04/generate_before_dot_files.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import os -from pathlib import Path - -# Add the current directory to Python path so we can import our modules -sys.path.insert(0, '/home/janniclas/Projekte/Construction-of-Compilers/Project-02-03-04') - -import triplayacc as yacc -import cfg_build -import syntax -from cfg.CFG import CFG -from cfg.CFG_Node import (CFG_START, CFG_END) - -def make_cfg(ast): - start = CFG_START() - end = CFG_END() - - last = ast.cfa(start, end) - if last is not None: - last.add_child(end) - - return CFG(start, end) - -def generate_dot_files(): - base = Path("triplaprograms") - programs = sorted([f for f in base.glob("*.tripla")]) - - output_dir = Path("mistraltests/before") - output_dir.mkdir(exist_ok=True, parents=True) - - for path in programs: - try: - print(f"Processing {path.name}...") - - # Reset the global FUNCTIONS registry - cfg_build.FUNCTIONS.clear() - - source = path.read_text() - ast = yacc.parser.parse(source) - - # Create CFG - cfg = make_cfg(ast) - - # Generate dot file - dot_str = cfg.to_dot() - - # Save to file - output_path = output_dir / f"{path.stem}_cfg_before.dot" - with open(output_path, "w") as f: - f.write(dot_str) - - print(f"Saved: {output_path}") - - except Exception as e: - print(f"Error processing {path.name}: {e}") - continue - -if __name__ == "__main__": - generate_dot_files() - print("Done generating 'before' dot files.") \ No newline at end of file diff --git a/Project-02-03-04/main.py b/Project-02-03-04/main.py index f9a49e4..b701381 100644 --- a/Project-02-03-04/main.py +++ b/Project-02-03-04/main.py @@ -1,23 +1,19 @@ -import triplayacc as yacc -import cfg_build -import syntax - -from pathlib import Path -from graphviz import Source -from vistram.tram import * - -import tkinter as tk -from vistram.vistram import MachineUI - -import matplotlib.pyplot as plt -import matplotlib.image as mpimg -import lib.console as cnsl import os - -from cfg.CFG import CFG -from cfg.CFG_Node import (CFG_START, CFG_END) +import tkinter as tk +from pathlib import Path import matplotlib +import matplotlib.image as mpimg +import matplotlib.pyplot as plt +from graphviz import Source + +import lib.console as cnsl +import syntax +import triplayacc as yacc +from cfg.CFG import CFG +from vistram.tram import * +from vistram.vistram import MachineUI + matplotlib.use("TkAgg") # Assembles the AST into TRAM code @@ -26,14 +22,7 @@ def assemble(ast): return code + [halt()] def make_cfg(ast): - start = CFG_START() - end = CFG_END() - - last = ast.cfa(start, end) - if last is not None: - last.add_child(end) - - return CFG(start, end, ast) + return CFG(ast) # Renders a diagram of the AST def render_diagram(dot_string: str): diff --git a/Project-02-03-04/mistraltests/after/argsParamsExample_cfg_after.dot b/Project-02-03-04/mistraltests/after/argsParamsExample_cfg_after.dot deleted file mode 100644 index 7181248..0000000 --- a/Project-02-03-04/mistraltests/after/argsParamsExample_cfg_after.dot +++ /dev/null @@ -1,21 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n1 [label="START", shape=box]; - n1 -> n7; - n7 [label="1", shape=box]; - n7 -> n8; - n8 [label="2", shape=box]; - n8 -> n9; - n9 [label="3", shape=box]; - n9 -> n10; - n10 [label="CALL a", shape=box, style=filled, color=orange]; - n10 -> n3; - n3 [label="START a(x, y, z)", shape=box, style=filled, color=green]; - n3 -> n6; - n6 [label="x", shape=box]; - n6 -> n4; - n4 [label="END a(x, y, z)", shape=box, style=filled, color=green]; - n4 -> n12; - n12 [label="RET a", shape=box, style=filled, color=orange]; - n10 -> n12; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/complex_cfg_after.dot b/Project-02-03-04/mistraltests/after/complex_cfg_after.dot deleted file mode 100644 index d31f776..0000000 --- a/Project-02-03-04/mistraltests/after/complex_cfg_after.dot +++ /dev/null @@ -1,125 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n14 [label="START", shape=box]; - n14 -> n65; - n65 [label="10", shape=box]; - n65 -> n66; - n66 [label="CALL f1", shape=box, style=filled, color=orange]; - n66 -> n16; - n16 [label="START f1(b)", shape=box, style=filled, color=green]; - n16 -> n21; - n21 [label="b", shape=box]; - n21 -> n22; - n22 [label="0", shape=box]; - n22 -> n23; - n23 [label="b == 0", shape=box]; - n23 -> n24; - n24 [label="", shape=diamond]; - n24 -> n28 [label="T"]; - n28 [label="0", shape=box]; - n28 -> n17; - n17 [label="END f1(b)", shape=box, style=filled, color=green]; - n17 -> n34; - n34 [label="RET f1", shape=box, style=filled, color=orange]; - n34 -> n17; - n17 -> n45; - n45 [label="RET f1", shape=box, style=filled, color=orange]; - n45 -> n58; - n58 [label="a", shape=box]; - n58 -> n59; - n59 [label="b", shape=box]; - n59 -> n60; - n60 [label="a * b", shape=box]; - n60 -> n61; - n61 [label="CALL g", shape=box, style=filled, color=orange]; - n61 -> n50; - n50 [label="START g(c)", shape=box, style=filled, color=green]; - n50 -> n53; - n53 [label="a", shape=box]; - n53 -> n54; - n54 [label="b", shape=box]; - n54 -> n55; - n55 [label="a * b", shape=box]; - n55 -> n56; - n56 [label="c", shape=box]; - n56 -> n57; - n57 [label="(a * b) * c", shape=box]; - n57 -> n51; - n51 [label="END g(c)", shape=box, style=filled, color=green]; - n51 -> n63; - n63 [label="RET g", shape=box, style=filled, color=orange]; - n63 -> n19; - n19 [label="END f2(a, b)", shape=box, style=filled, color=green]; - n19 -> n91; - n91 [label="RET f2", shape=box, style=filled, color=orange]; - n61 -> n63; - n17 -> n49; - n49 [label="RET f1", shape=box, style=filled, color=orange]; - n49 -> n58; - n17 -> n68; - n68 [label="RET f1", shape=box, style=filled, color=orange]; - n68 -> n70; - n70 [label="10", shape=box]; - n70 -> n83; - n83 [label="20", shape=box]; - n83 -> n84; - n84 [label="30", shape=box]; - n84 -> n85; - n85 [label="CALL max", shape=box, style=filled, color=orange]; - n85 -> n71; - n71 [label="START max(a, b)", shape=box, style=filled, color=green]; - n71 -> n74; - n74 [label="a", shape=box]; - n74 -> n75; - n75 [label="b", shape=box]; - n75 -> n76; - n76 [label="a > b", shape=box]; - n76 -> n77; - n77 [label="", shape=diamond]; - n77 -> n81 [label="T"]; - n81 [label="a", shape=box]; - n81 -> n72; - n72 [label="END max(a, b)", shape=box, style=filled, color=green]; - n72 -> n87; - n87 [label="RET max", shape=box, style=filled, color=orange]; - n87 -> n89; - n89 [label="CALL f2", shape=box, style=filled, color=orange]; - n89 -> n18; - n18 [label="START f2(a, b)", shape=box, style=filled, color=green]; - n18 -> n35; - n35 [label="a", shape=box]; - n35 -> n36; - n36 [label="b", shape=box]; - n36 -> n37; - n37 [label="a > b", shape=box]; - n37 -> n38; - n38 [label="", shape=diamond]; - n38 -> n42 [label="T"]; - n42 [label="a", shape=box]; - n42 -> n43; - n43 [label="CALL f1", shape=box, style=filled, color=orange]; - n43 -> n16; - n43 -> n45; - n38 -> n46 [label="F"]; - n46 [label="b", shape=box]; - n46 -> n47; - n47 [label="CALL f1", shape=box, style=filled, color=orange]; - n47 -> n16; - n47 -> n49; - n89 -> n91; - n77 -> n82 [label="F"]; - n82 [label="b", shape=box]; - n82 -> n72; - n85 -> n87; - n24 -> n29 [label="F"]; - n29 [label="b", shape=box]; - n29 -> n30; - n30 [label="1", shape=box]; - n30 -> n31; - n31 [label="b - 1", shape=box]; - n31 -> n32; - n32 [label="CALL f1", shape=box, style=filled, color=orange]; - n32 -> n16; - n32 -> n34; - n66 -> n68; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/condition_cfg_after.dot b/Project-02-03-04/mistraltests/after/condition_cfg_after.dot deleted file mode 100644 index 812791f..0000000 --- a/Project-02-03-04/mistraltests/after/condition_cfg_after.dot +++ /dev/null @@ -1,24 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n92 [label="START", shape=box]; - n92 -> n94; - n94 [label="2", shape=box]; - n94 -> n95; - n95 [label="x", shape=box]; - n95 -> n96; - n96 [label="2 < x", shape=box]; - n96 -> n97; - n97 [label="x", shape=box]; - n97 -> n98; - n98 [label="9", shape=box]; - n98 -> n99; - n99 [label="x > 9", shape=box]; - n99 -> n100; - n100 [label="(2 < x) && (x > 9)", shape=box]; - n100 -> n101; - n101 [label="", shape=diamond]; - n101 -> n105 [label="T"]; - n105 [label="1", shape=box]; - n101 -> n106 [label="F"]; - n106 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/defSemiExample_cfg_after.dot b/Project-02-03-04/mistraltests/after/defSemiExample_cfg_after.dot deleted file mode 100644 index 8152335..0000000 --- a/Project-02-03-04/mistraltests/after/defSemiExample_cfg_after.dot +++ /dev/null @@ -1,43 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n107 [label="START", shape=box]; - n107 -> n119; - n119 [label="1", shape=box]; - n119 -> n120; - n120 [label="CALL a", shape=box, style=filled, color=orange]; - n120 -> n109; - n109 [label="START a(x)", shape=box, style=filled, color=green]; - n109 -> n116; - n116 [label="x", shape=box]; - n116 -> n110; - n110 [label="END a(x)", shape=box, style=filled, color=green]; - n110 -> n122; - n122 [label="RET a", shape=box, style=filled, color=orange]; - n122 -> n124; - n124 [label="2", shape=box]; - n124 -> n125; - n125 [label="CALL b", shape=box, style=filled, color=orange]; - n125 -> n111; - n111 [label="START b(y)", shape=box, style=filled, color=green]; - n111 -> n117; - n117 [label="y", shape=box]; - n117 -> n112; - n112 [label="END b(y)", shape=box, style=filled, color=green]; - n112 -> n127; - n127 [label="RET b", shape=box, style=filled, color=orange]; - n127 -> n128; - n128 [label="3", shape=box]; - n128 -> n129; - n129 [label="CALL c", shape=box, style=filled, color=orange]; - n129 -> n113; - n113 [label="START c(z)", shape=box, style=filled, color=green]; - n113 -> n118; - n118 [label="z", shape=box]; - n118 -> n114; - n114 [label="END c(z)", shape=box, style=filled, color=green]; - n114 -> n131; - n131 [label="RET c", shape=box, style=filled, color=orange]; - n129 -> n131; - n125 -> n127; - n120 -> n122; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/example_cfg_after.dot b/Project-02-03-04/mistraltests/after/example_cfg_after.dot deleted file mode 100644 index 9626042..0000000 --- a/Project-02-03-04/mistraltests/after/example_cfg_after.dot +++ /dev/null @@ -1,67 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n132 [label="START", shape=box]; - n132 -> n167; - n167 [label="2", shape=box]; - n167 -> n168; - n168 [label="3", shape=box]; - n168 -> n169; - n169 [label="CALL f", shape=box, style=filled, color=orange]; - n169 -> n134; - n134 [label="START f(x, y, z)", shape=box, style=filled, color=green]; - n134 -> n137; - n137 [label="2", shape=box]; - n137 -> n138; - n138 [label="y = 2", shape=box]; - n138 -> n139; - n139 [label="3", shape=box]; - n139 -> n140; - n140 [label="z = 3", shape=box]; - n140 -> n160; - n160 [label="x", shape=box]; - n160 -> n161; - n161 [label="CALL g", shape=box, style=filled, color=orange]; - n161 -> n141; - n141 [label="START g(x)", shape=box, style=filled, color=green]; - n141 -> n144; - n144 [label="7", shape=box]; - n144 -> n145; - n145 [label="x = 7", shape=box]; - n145 -> n146; - n146 [label="y", shape=box]; - n146 -> n147; - n147 [label="0", shape=box]; - n147 -> n148; - n148 [label="y > 0", shape=box]; - n148 -> n149; - n149 [label="", shape=diamond]; - n149 -> n153 [label="T"]; - n153 [label="y", shape=box]; - n153 -> n154; - n154 [label="CALL g", shape=box, style=filled, color=orange]; - n154 -> n141; - n154 -> n156; - n156 [label="RET g", shape=box, style=filled, color=orange]; - n156 -> n159; - n159 [label="x", shape=box]; - n159 -> n142; - n142 [label="END g(x)", shape=box, style=filled, color=green]; - n142 -> n156; - n142 -> n163; - n163 [label="RET g", shape=box, style=filled, color=orange]; - n163 -> n164; - n164 [label="x", shape=box]; - n164 -> n165; - n165 [label="g(x) + x", shape=box]; - n165 -> n135; - n135 [label="END f(x, y, z)", shape=box, style=filled, color=green]; - n135 -> n171; - n171 [label="RET f", shape=box, style=filled, color=orange]; - n149 -> n157 [label="F"]; - n157 [label="8", shape=box]; - n157 -> n158; - n158 [label="x = 8", shape=box]; - n158 -> n159; - n161 -> n163; - n169 -> n171; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/factorial_cfg_after.dot b/Project-02-03-04/mistraltests/after/factorial_cfg_after.dot deleted file mode 100644 index 037fb22..0000000 --- a/Project-02-03-04/mistraltests/after/factorial_cfg_after.dot +++ /dev/null @@ -1,266 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n173 [label="START", shape=box]; - n173 -> n338; - n338 [label="3", shape=box]; - n338 -> n339; - n339 [label="CALL fac", shape=box, style=filled, color=orange]; - n339 -> n191; - n191 [label="START fac(x)", shape=box, style=filled, color=green]; - n191 -> n194; - n194 [label="x", shape=box]; - n194 -> n195; - n195 [label="1", shape=box]; - n195 -> n196; - n196 [label="x == 1", shape=box]; - n196 -> n197; - n197 [label="", shape=diamond]; - n197 -> n201 [label="T"]; - n201 [label="1", shape=box]; - n201 -> n192; - n192 [label="END fac(x)", shape=box, style=filled, color=green]; - n192 -> n207; - n207 [label="RET fac", shape=box, style=filled, color=orange]; - n207 -> n208; - n208 [label="x", shape=box]; - n208 -> n209; - n209 [label="fac((x - 1)) * x", shape=box]; - n209 -> n192; - n192 -> n223; - n223 [label="RET fac", shape=box, style=filled, color=orange]; - n223 -> n224; - n224 [label="x", shape=box]; - n224 -> n225; - n225 [label="fac((x - 1)) * x", shape=box]; - n225 -> n192; - n192 -> n239; - n239 [label="RET fac", shape=box, style=filled, color=orange]; - n239 -> n240; - n240 [label="x", shape=box]; - n240 -> n241; - n241 [label="fac((x - 1)) * x", shape=box]; - n241 -> n192; - n192 -> n255; - n255 [label="RET fac", shape=box, style=filled, color=orange]; - n255 -> n256; - n256 [label="x", shape=box]; - n256 -> n257; - n257 [label="fac((x - 1)) * x", shape=box]; - n257 -> n192; - n192 -> n271; - n271 [label="RET fac", shape=box, style=filled, color=orange]; - n271 -> n272; - n272 [label="x", shape=box]; - n272 -> n273; - n273 [label="fac((x - 1)) * x", shape=box]; - n273 -> n192; - n192 -> n287; - n287 [label="RET fac", shape=box, style=filled, color=orange]; - n287 -> n288; - n288 [label="x", shape=box]; - n288 -> n289; - n289 [label="fac((x - 1)) * x", shape=box]; - n289 -> n192; - n192 -> n303; - n303 [label="RET fac", shape=box, style=filled, color=orange]; - n303 -> n304; - n304 [label="x", shape=box]; - n304 -> n305; - n305 [label="fac((x - 1)) * x", shape=box]; - n305 -> n192; - n192 -> n319; - n319 [label="RET fac", shape=box, style=filled, color=orange]; - n319 -> n320; - n320 [label="x", shape=box]; - n320 -> n321; - n321 [label="fac((x - 1)) * x", shape=box]; - n321 -> n192; - n192 -> n335; - n335 [label="RET fac", shape=box, style=filled, color=orange]; - n335 -> n336; - n336 [label="x", shape=box]; - n336 -> n337; - n337 [label="fac((x - 1)) * x", shape=box]; - n337 -> n192; - n192 -> n341; - n341 [label="RET fac", shape=box, style=filled, color=orange]; - n197 -> n202 [label="F"]; - n202 [label="x", shape=box]; - n202 -> n203; - n203 [label="1", shape=box]; - n203 -> n204; - n204 [label="x - 1", shape=box]; - n204 -> n205; - n205 [label="CALL fac", shape=box, style=filled, color=orange]; - n205 -> n191; - n205 -> n207; - n191 -> n210; - n210 [label="x", shape=box]; - n210 -> n211; - n211 [label="1", shape=box]; - n211 -> n212; - n212 [label="x == 1", shape=box]; - n212 -> n213; - n213 [label="", shape=diamond]; - n213 -> n217 [label="T"]; - n217 [label="1", shape=box]; - n217 -> n192; - n213 -> n218 [label="F"]; - n218 [label="x", shape=box]; - n218 -> n219; - n219 [label="1", shape=box]; - n219 -> n220; - n220 [label="x - 1", shape=box]; - n220 -> n221; - n221 [label="CALL fac", shape=box, style=filled, color=orange]; - n221 -> n191; - n221 -> n223; - n191 -> n226; - n226 [label="x", shape=box]; - n226 -> n227; - n227 [label="1", shape=box]; - n227 -> n228; - n228 [label="x == 1", shape=box]; - n228 -> n229; - n229 [label="", shape=diamond]; - n229 -> n233 [label="T"]; - n233 [label="1", shape=box]; - n233 -> n192; - n229 -> n234 [label="F"]; - n234 [label="x", shape=box]; - n234 -> n235; - n235 [label="1", shape=box]; - n235 -> n236; - n236 [label="x - 1", shape=box]; - n236 -> n237; - n237 [label="CALL fac", shape=box, style=filled, color=orange]; - n237 -> n191; - n237 -> n239; - n191 -> n242; - n242 [label="x", shape=box]; - n242 -> n243; - n243 [label="1", shape=box]; - n243 -> n244; - n244 [label="x == 1", shape=box]; - n244 -> n245; - n245 [label="", shape=diamond]; - n245 -> n249 [label="T"]; - n249 [label="1", shape=box]; - n249 -> n192; - n245 -> n250 [label="F"]; - n250 [label="x", shape=box]; - n250 -> n251; - n251 [label="1", shape=box]; - n251 -> n252; - n252 [label="x - 1", shape=box]; - n252 -> n253; - n253 [label="CALL fac", shape=box, style=filled, color=orange]; - n253 -> n191; - n253 -> n255; - n191 -> n258; - n258 [label="x", shape=box]; - n258 -> n259; - n259 [label="1", shape=box]; - n259 -> n260; - n260 [label="x == 1", shape=box]; - n260 -> n261; - n261 [label="", shape=diamond]; - n261 -> n265 [label="T"]; - n265 [label="1", shape=box]; - n265 -> n192; - n261 -> n266 [label="F"]; - n266 [label="x", shape=box]; - n266 -> n267; - n267 [label="1", shape=box]; - n267 -> n268; - n268 [label="x - 1", shape=box]; - n268 -> n269; - n269 [label="CALL fac", shape=box, style=filled, color=orange]; - n269 -> n191; - n269 -> n271; - n191 -> n274; - n274 [label="x", shape=box]; - n274 -> n275; - n275 [label="1", shape=box]; - n275 -> n276; - n276 [label="x == 1", shape=box]; - n276 -> n277; - n277 [label="", shape=diamond]; - n277 -> n281 [label="T"]; - n281 [label="1", shape=box]; - n281 -> n192; - n277 -> n282 [label="F"]; - n282 [label="x", shape=box]; - n282 -> n283; - n283 [label="1", shape=box]; - n283 -> n284; - n284 [label="x - 1", shape=box]; - n284 -> n285; - n285 [label="CALL fac", shape=box, style=filled, color=orange]; - n285 -> n191; - n285 -> n287; - n191 -> n290; - n290 [label="x", shape=box]; - n290 -> n291; - n291 [label="1", shape=box]; - n291 -> n292; - n292 [label="x == 1", shape=box]; - n292 -> n293; - n293 [label="", shape=diamond]; - n293 -> n297 [label="T"]; - n297 [label="1", shape=box]; - n297 -> n192; - n293 -> n298 [label="F"]; - n298 [label="x", shape=box]; - n298 -> n299; - n299 [label="1", shape=box]; - n299 -> n300; - n300 [label="x - 1", shape=box]; - n300 -> n301; - n301 [label="CALL fac", shape=box, style=filled, color=orange]; - n301 -> n191; - n301 -> n303; - n191 -> n306; - n306 [label="x", shape=box]; - n306 -> n307; - n307 [label="1", shape=box]; - n307 -> n308; - n308 [label="x == 1", shape=box]; - n308 -> n309; - n309 [label="", shape=diamond]; - n309 -> n313 [label="T"]; - n313 [label="1", shape=box]; - n313 -> n192; - n309 -> n314 [label="F"]; - n314 [label="x", shape=box]; - n314 -> n315; - n315 [label="1", shape=box]; - n315 -> n316; - n316 [label="x - 1", shape=box]; - n316 -> n317; - n317 [label="CALL fac", shape=box, style=filled, color=orange]; - n317 -> n191; - n317 -> n319; - n191 -> n322; - n322 [label="x", shape=box]; - n322 -> n323; - n323 [label="1", shape=box]; - n323 -> n324; - n324 [label="x == 1", shape=box]; - n324 -> n325; - n325 [label="", shape=diamond]; - n325 -> n329 [label="T"]; - n329 [label="1", shape=box]; - n329 -> n192; - n325 -> n330 [label="F"]; - n330 [label="x", shape=box]; - n330 -> n331; - n331 [label="1", shape=box]; - n331 -> n332; - n332 [label="x - 1", shape=box]; - n332 -> n333; - n333 [label="CALL fac", shape=box, style=filled, color=orange]; - n333 -> n191; - n333 -> n335; - n339 -> n341; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/faulty_if_cfg_after.dot b/Project-02-03-04/mistraltests/after/faulty_if_cfg_after.dot deleted file mode 100644 index 2c955a9..0000000 --- a/Project-02-03-04/mistraltests/after/faulty_if_cfg_after.dot +++ /dev/null @@ -1,6 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n356 [label="START", shape=box]; - n356 -> n358; - n358 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/func_cfg_after.dot b/Project-02-03-04/mistraltests/after/func_cfg_after.dot deleted file mode 100644 index 8882b76..0000000 --- a/Project-02-03-04/mistraltests/after/func_cfg_after.dot +++ /dev/null @@ -1,50 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n359 [label="START", shape=box]; - n359 -> n382; - n382 [label="10", shape=box]; - n382 -> n383; - n383 [label="8", shape=box]; - n383 -> n384; - n384 [label="CALL func", shape=box, style=filled, color=orange]; - n384 -> n361; - n361 [label="START func(a, b)", shape=box, style=filled, color=green]; - n361 -> n364; - n364 [label="a", shape=box]; - n364 -> n365; - n365 [label="0", shape=box]; - n365 -> n366; - n366 [label="a > 0", shape=box]; - n366 -> n367; - n367 [label="b", shape=box]; - n367 -> n368; - n368 [label="a", shape=box]; - n368 -> n369; - n369 [label="b != a", shape=box]; - n369 -> n370; - n370 [label="(a > 0) && (b != a)", shape=box]; - n370 -> n371; - n371 [label="", shape=diamond]; - n371 -> n362 [label="T"]; - n362 [label="END func(a, b)", shape=box, style=filled, color=green]; - n362 -> n386; - n386 [label="RET func", shape=box, style=filled, color=orange]; - n371 -> n373 [label="F"]; - n373 [label="b", shape=box]; - n373 -> n374; - n374 [label="1", shape=box]; - n374 -> n375; - n375 [label="b + 1", shape=box]; - n375 -> n376; - n376 [label="b = (b + 1)", shape=box]; - n376 -> n377; - n377 [label="a", shape=box]; - n377 -> n378; - n378 [label="1", shape=box]; - n378 -> n379; - n379 [label="a - 1", shape=box]; - n379 -> n380; - n380 [label="a = (a - 1)", shape=box]; - n380 -> n366; - n384 -> n386; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/geq_cfg_after.dot b/Project-02-03-04/mistraltests/after/geq_cfg_after.dot deleted file mode 100644 index 79218ae..0000000 --- a/Project-02-03-04/mistraltests/after/geq_cfg_after.dot +++ /dev/null @@ -1,16 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n388 [label="START", shape=box]; - n388 -> n390; - n390 [label="1", shape=box]; - n390 -> n391; - n391 [label="0", shape=box]; - n391 -> n392; - n392 [label="1 >= 0", shape=box]; - n392 -> n393; - n393 [label="", shape=diamond]; - n393 -> n397 [label="T"]; - n397 [label="1", shape=box]; - n393 -> n398 [label="F"]; - n398 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/ggT_euclid_rec_cfg_after.dot b/Project-02-03-04/mistraltests/after/ggT_euclid_rec_cfg_after.dot deleted file mode 100644 index 151b313..0000000 --- a/Project-02-03-04/mistraltests/after/ggT_euclid_rec_cfg_after.dot +++ /dev/null @@ -1,65 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n405 [label="START", shape=box]; - n405 -> n439; - n439 [label="3528", shape=box]; - n439 -> n440; - n440 [label="3780", shape=box]; - n440 -> n441; - n441 [label="CALL ggT", shape=box, style=filled, color=orange]; - n441 -> n407; - n407 [label="START ggT(a, b)", shape=box, style=filled, color=green]; - n407 -> n410; - n410 [label="a", shape=box]; - n410 -> n411; - n411 [label="b", shape=box]; - n411 -> n412; - n412 [label="a == b", shape=box]; - n412 -> n413; - n413 [label="", shape=diamond]; - n413 -> n417 [label="T"]; - n417 [label="a", shape=box]; - n417 -> n408; - n408 [label="END ggT(a, b)", shape=box, style=filled, color=green]; - n408 -> n431; - n431 [label="RET ggT", shape=box, style=filled, color=orange]; - n431 -> n408; - n408 -> n438; - n438 [label="RET ggT", shape=box, style=filled, color=orange]; - n438 -> n408; - n408 -> n443; - n443 [label="RET ggT", shape=box, style=filled, color=orange]; - n413 -> n418 [label="F"]; - n418 [label="a", shape=box]; - n418 -> n419; - n419 [label="b", shape=box]; - n419 -> n420; - n420 [label="a > b", shape=box]; - n420 -> n421; - n421 [label="", shape=diamond]; - n421 -> n425 [label="T"]; - n425 [label="a", shape=box]; - n425 -> n426; - n426 [label="b", shape=box]; - n426 -> n427; - n427 [label="a - b", shape=box]; - n427 -> n428; - n428 [label="b", shape=box]; - n428 -> n429; - n429 [label="CALL ggT", shape=box, style=filled, color=orange]; - n429 -> n407; - n429 -> n431; - n421 -> n432 [label="F"]; - n432 [label="b", shape=box]; - n432 -> n433; - n433 [label="a", shape=box]; - n433 -> n434; - n434 [label="b - a", shape=box]; - n434 -> n435; - n435 [label="a", shape=box]; - n435 -> n436; - n436 [label="CALL ggT", shape=box, style=filled, color=orange]; - n436 -> n407; - n436 -> n438; - n441 -> n443; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/homework_cfg_after.dot b/Project-02-03-04/mistraltests/after/homework_cfg_after.dot deleted file mode 100644 index 1209859..0000000 --- a/Project-02-03-04/mistraltests/after/homework_cfg_after.dot +++ /dev/null @@ -1,109 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n445 [label="START", shape=box]; - n445 -> n499; - n499 [label="1", shape=box]; - n499 -> n500; - n500 [label="2", shape=box]; - n500 -> n501; - n501 [label="CALL f", shape=box, style=filled, color=orange]; - n501 -> n447; - n447 [label="START f(x, y)", shape=box, style=filled, color=green]; - n447 -> n452; - n452 [label="x", shape=box]; - n452 -> n453; - n453 [label="0", shape=box]; - n453 -> n454; - n454 [label="x == 0", shape=box]; - n454 -> n455; - n455 [label="", shape=diamond]; - n455 -> n467 [label="T"]; - n467 [label="2", shape=box]; - n467 -> n468; - n468 [label="y", shape=box]; - n468 -> n469; - n469 [label="2 * y", shape=box]; - n469 -> n470; - n470 [label="x", shape=box]; - n470 -> n471; - n471 [label="CALL g", shape=box, style=filled, color=orange]; - n471 -> n459; - n459 [label="START g(x, z)", shape=box, style=filled, color=green]; - n459 -> n462; - n462 [label="x", shape=box]; - n462 -> n463; - n463 [label="y", shape=box]; - n463 -> n464; - n464 [label="x * y", shape=box]; - n464 -> n465; - n465 [label="z", shape=box]; - n465 -> n466; - n466 [label="(x * y) + z", shape=box]; - n466 -> n460; - n460 [label="END g(x, z)", shape=box, style=filled, color=green]; - n460 -> n473; - n473 [label="RET g", shape=box, style=filled, color=orange]; - n473 -> n448; - n448 [label="END f(x, y)", shape=box, style=filled, color=green]; - n448 -> n488; - n488 [label="RET f", shape=box, style=filled, color=orange]; - n488 -> n489; - n489 [label="a * f(a,i)", shape=box]; - n489 -> n490; - n490 [label="a = (a * f(a,i))", shape=box]; - n490 -> n491; - n491 [label="i", shape=box]; - n491 -> n492; - n492 [label="1", shape=box]; - n492 -> n493; - n493 [label="i - 1", shape=box]; - n493 -> n494; - n494 [label="i = (i - 1)", shape=box]; - n494 -> n478; - n478 [label="i", shape=box]; - n478 -> n479; - n479 [label="0", shape=box]; - n479 -> n480; - n480 [label="i > 0", shape=box]; - n480 -> n481; - n481 [label="", shape=diamond]; - n481 -> n483 [label="T"]; - n483 [label="a", shape=box]; - n483 -> n484; - n484 [label="a", shape=box]; - n484 -> n485; - n485 [label="i", shape=box]; - n485 -> n486; - n486 [label="CALL f", shape=box, style=filled, color=orange]; - n486 -> n447; - n486 -> n488; - n481 -> n496 [label="F"]; - n496 [label="a", shape=box]; - n496 -> n497; - n497 [label="42", shape=box]; - n497 -> n498; - n498 [label="a + 42", shape=box]; - n498 -> n460; - n448 -> n503; - n503 [label="RET f", shape=box, style=filled, color=orange]; - n503 -> n505; - n505 [label="3", shape=box]; - n505 -> n506; - n506 [label="3", shape=box]; - n506 -> n507; - n507 [label="CALL g", shape=box, style=filled, color=orange]; - n507 -> n459; - n507 -> n509; - n509 [label="RET g", shape=box, style=filled, color=orange]; - n460 -> n509; - n459 -> n478; - n471 -> n473; - n455 -> n475 [label="F"]; - n475 [label="x", shape=box]; - n475 -> n476; - n476 [label="1", shape=box]; - n476 -> n477; - n477 [label="x + 1", shape=box]; - n477 -> n448; - n501 -> n503; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/multiple-let-with-same-func-name_cfg_after.dot b/Project-02-03-04/mistraltests/after/multiple-let-with-same-func-name_cfg_after.dot deleted file mode 100644 index c28cea6..0000000 --- a/Project-02-03-04/mistraltests/after/multiple-let-with-same-func-name_cfg_after.dot +++ /dev/null @@ -1,34 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n512 [label="START", shape=box]; - n512 -> n518; - n518 [label="5", shape=box]; - n518 -> n519; - n519 [label="CALL m", shape=box, style=filled, color=orange]; - n519 -> n514; - n514 [label="START m(a)", shape=box, style=filled, color=green]; - n514 -> n517; - n517 [label="a", shape=box]; - n517 -> n515; - n515 [label="END m(a)", shape=box, style=filled, color=green]; - n515 -> n521; - n521 [label="RET m", shape=box, style=filled, color=orange]; - n521 -> n529; - n529 [label="5", shape=box]; - n529 -> n530; - n530 [label="CALL m", shape=box, style=filled, color=orange]; - n530 -> n523; - n523 [label="START m(b)", shape=box, style=filled, color=green]; - n523 -> n526; - n526 [label="b", shape=box]; - n526 -> n527; - n527 [label="1", shape=box]; - n527 -> n528; - n528 [label="b + 1", shape=box]; - n528 -> n524; - n524 [label="END m(b)", shape=box, style=filled, color=green]; - n524 -> n532; - n532 [label="RET m", shape=box, style=filled, color=orange]; - n530 -> n532; - n519 -> n521; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/multiple-let_cfg_after.dot b/Project-02-03-04/mistraltests/after/multiple-let_cfg_after.dot deleted file mode 100644 index ea0334e..0000000 --- a/Project-02-03-04/mistraltests/after/multiple-let_cfg_after.dot +++ /dev/null @@ -1,44 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n534 [label="START", shape=box]; - n534 -> n540; - n540 [label="5", shape=box]; - n540 -> n541; - n541 [label="CALL n", shape=box, style=filled, color=orange]; - n541 -> n536; - n536 [label="START n(a)", shape=box, style=filled, color=green]; - n536 -> n539; - n539 [label="a", shape=box]; - n539 -> n537; - n537 [label="END n(a)", shape=box, style=filled, color=green]; - n537 -> n543; - n543 [label="RET n", shape=box, style=filled, color=orange]; - n543 -> n551; - n551 [label="5", shape=box]; - n551 -> n552; - n552 [label="CALL n", shape=box, style=filled, color=orange]; - n552 -> n536; - n552 -> n554; - n554 [label="RET n", shape=box, style=filled, color=orange]; - n554 -> n555; - n555 [label="5", shape=box]; - n555 -> n556; - n556 [label="CALL m", shape=box, style=filled, color=orange]; - n556 -> n545; - n545 [label="START m(a)", shape=box, style=filled, color=green]; - n545 -> n548; - n548 [label="a", shape=box]; - n548 -> n549; - n549 [label="1", shape=box]; - n549 -> n550; - n550 [label="a + 1", shape=box]; - n550 -> n546; - n546 [label="END m(a)", shape=box, style=filled, color=green]; - n546 -> n558; - n558 [label="RET m", shape=box, style=filled, color=orange]; - n558 -> n559; - n559 [label="n(5) + m(5)", shape=box]; - n556 -> n558; - n537 -> n554; - n541 -> n543; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/or_cfg_after.dot b/Project-02-03-04/mistraltests/after/or_cfg_after.dot deleted file mode 100644 index 47e1722..0000000 --- a/Project-02-03-04/mistraltests/after/or_cfg_after.dot +++ /dev/null @@ -1,20 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n561 [label="START", shape=box]; - n561 -> n563; - n563 [label="True", shape=box]; - n563 -> n564; - n564 [label="True", shape=box]; - n564 -> n565; - n565 [label="True", shape=box]; - n565 -> n566; - n566 [label="True == True", shape=box]; - n566 -> n567; - n567 [label="True || (True == True)", shape=box]; - n567 -> n568; - n568 [label="", shape=diamond]; - n568 -> n572 [label="T"]; - n572 [label="1", shape=box]; - n568 -> n573 [label="F"]; - n573 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/p1_cfg_after.dot b/Project-02-03-04/mistraltests/after/p1_cfg_after.dot deleted file mode 100644 index b5f7e47..0000000 --- a/Project-02-03-04/mistraltests/after/p1_cfg_after.dot +++ /dev/null @@ -1,21 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n574 [label="START", shape=box]; - n574 -> n582; - n582 [label="5", shape=box]; - n582 -> n583; - n583 [label="CALL g", shape=box, style=filled, color=orange]; - n583 -> n576; - n576 [label="START g(a)", shape=box, style=filled, color=green]; - n576 -> n579; - n579 [label="a", shape=box]; - n579 -> n580; - n580 [label="a", shape=box]; - n580 -> n581; - n581 [label="a * a", shape=box]; - n581 -> n577; - n577 [label="END g(a)", shape=box, style=filled, color=green]; - n577 -> n585; - n585 [label="RET g", shape=box, style=filled, color=orange]; - n583 -> n585; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/p2_cfg_after.dot b/Project-02-03-04/mistraltests/after/p2_cfg_after.dot deleted file mode 100644 index bb80e27..0000000 --- a/Project-02-03-04/mistraltests/after/p2_cfg_after.dot +++ /dev/null @@ -1,38 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n587 [label="START", shape=box]; - n587 -> n606; - n606 [label="10", shape=box]; - n606 -> n607; - n607 [label="CALL f1", shape=box, style=filled, color=orange]; - n607 -> n589; - n589 [label="START f1(b)", shape=box, style=filled, color=green]; - n589 -> n592; - n592 [label="b", shape=box]; - n592 -> n593; - n593 [label="0", shape=box]; - n593 -> n594; - n594 [label="b == 0", shape=box]; - n594 -> n595; - n595 [label="", shape=diamond]; - n595 -> n599 [label="T"]; - n599 [label="0", shape=box]; - n599 -> n590; - n590 [label="END f1(b)", shape=box, style=filled, color=green]; - n590 -> n605; - n605 [label="RET f1", shape=box, style=filled, color=orange]; - n605 -> n590; - n590 -> n609; - n609 [label="RET f1", shape=box, style=filled, color=orange]; - n595 -> n600 [label="F"]; - n600 [label="b", shape=box]; - n600 -> n601; - n601 [label="1", shape=box]; - n601 -> n602; - n602 [label="b - 1", shape=box]; - n602 -> n603; - n603 [label="CALL f1", shape=box, style=filled, color=orange]; - n603 -> n589; - n603 -> n605; - n607 -> n609; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/p3_cfg_after.dot b/Project-02-03-04/mistraltests/after/p3_cfg_after.dot deleted file mode 100644 index 4131dc0..0000000 --- a/Project-02-03-04/mistraltests/after/p3_cfg_after.dot +++ /dev/null @@ -1,125 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n611 [label="START", shape=box]; - n611 -> n662; - n662 [label="10", shape=box]; - n662 -> n663; - n663 [label="CALL f1", shape=box, style=filled, color=orange]; - n663 -> n613; - n613 [label="START f1(b)", shape=box, style=filled, color=green]; - n613 -> n618; - n618 [label="b", shape=box]; - n618 -> n619; - n619 [label="0", shape=box]; - n619 -> n620; - n620 [label="b == 0", shape=box]; - n620 -> n621; - n621 [label="", shape=diamond]; - n621 -> n625 [label="T"]; - n625 [label="0", shape=box]; - n625 -> n614; - n614 [label="END f1(b)", shape=box, style=filled, color=green]; - n614 -> n631; - n631 [label="RET f1", shape=box, style=filled, color=orange]; - n631 -> n614; - n614 -> n642; - n642 [label="RET f1", shape=box, style=filled, color=orange]; - n642 -> n655; - n655 [label="a", shape=box]; - n655 -> n656; - n656 [label="b", shape=box]; - n656 -> n657; - n657 [label="a * b", shape=box]; - n657 -> n658; - n658 [label="CALL g", shape=box, style=filled, color=orange]; - n658 -> n647; - n647 [label="START g(c)", shape=box, style=filled, color=green]; - n647 -> n650; - n650 [label="a", shape=box]; - n650 -> n651; - n651 [label="b", shape=box]; - n651 -> n652; - n652 [label="a * b", shape=box]; - n652 -> n653; - n653 [label="c", shape=box]; - n653 -> n654; - n654 [label="(a * b) * c", shape=box]; - n654 -> n648; - n648 [label="END g(c)", shape=box, style=filled, color=green]; - n648 -> n660; - n660 [label="RET g", shape=box, style=filled, color=orange]; - n660 -> n616; - n616 [label="END f2(a, b)", shape=box, style=filled, color=green]; - n616 -> n688; - n688 [label="RET f2", shape=box, style=filled, color=orange]; - n658 -> n660; - n614 -> n646; - n646 [label="RET f1", shape=box, style=filled, color=orange]; - n646 -> n655; - n614 -> n665; - n665 [label="RET f1", shape=box, style=filled, color=orange]; - n665 -> n667; - n667 [label="10", shape=box]; - n667 -> n680; - n680 [label="20", shape=box]; - n680 -> n681; - n681 [label="30", shape=box]; - n681 -> n682; - n682 [label="CALL max", shape=box, style=filled, color=orange]; - n682 -> n668; - n668 [label="START max(a, b)", shape=box, style=filled, color=green]; - n668 -> n671; - n671 [label="a", shape=box]; - n671 -> n672; - n672 [label="b", shape=box]; - n672 -> n673; - n673 [label="a > b", shape=box]; - n673 -> n674; - n674 [label="", shape=diamond]; - n674 -> n678 [label="T"]; - n678 [label="a", shape=box]; - n678 -> n669; - n669 [label="END max(a, b)", shape=box, style=filled, color=green]; - n669 -> n684; - n684 [label="RET max", shape=box, style=filled, color=orange]; - n684 -> n686; - n686 [label="CALL f2", shape=box, style=filled, color=orange]; - n686 -> n615; - n615 [label="START f2(a, b)", shape=box, style=filled, color=green]; - n615 -> n632; - n632 [label="a", shape=box]; - n632 -> n633; - n633 [label="b", shape=box]; - n633 -> n634; - n634 [label="a > b", shape=box]; - n634 -> n635; - n635 [label="", shape=diamond]; - n635 -> n639 [label="T"]; - n639 [label="a", shape=box]; - n639 -> n640; - n640 [label="CALL f1", shape=box, style=filled, color=orange]; - n640 -> n613; - n640 -> n642; - n635 -> n643 [label="F"]; - n643 [label="b", shape=box]; - n643 -> n644; - n644 [label="CALL f1", shape=box, style=filled, color=orange]; - n644 -> n613; - n644 -> n646; - n686 -> n688; - n674 -> n679 [label="F"]; - n679 [label="b", shape=box]; - n679 -> n669; - n682 -> n684; - n621 -> n626 [label="F"]; - n626 [label="b", shape=box]; - n626 -> n627; - n627 [label="1", shape=box]; - n627 -> n628; - n628 [label="b - 1", shape=box]; - n628 -> n629; - n629 [label="CALL f1", shape=box, style=filled, color=orange]; - n629 -> n613; - n629 -> n631; - n663 -> n665; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/p4_cfg_after.dot b/Project-02-03-04/mistraltests/after/p4_cfg_after.dot deleted file mode 100644 index 70de5bd..0000000 --- a/Project-02-03-04/mistraltests/after/p4_cfg_after.dot +++ /dev/null @@ -1,25 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n689 [label="START", shape=box]; - n689 -> n698; - n698 [label="10", shape=box]; - n698 -> n699; - n699 [label="8", shape=box]; - n699 -> n700; - n700 [label="CALL func", shape=box, style=filled, color=orange]; - n700 -> n691; - n691 [label="START func(a, b)", shape=box, style=filled, color=green]; - n691 -> n694; - n694 [label="b", shape=box]; - n694 -> n695; - n695 [label="1", shape=box]; - n695 -> n696; - n696 [label="b + 1", shape=box]; - n696 -> n697; - n697 [label="a = (b + 1)", shape=box]; - n697 -> n692; - n692 [label="END func(a, b)", shape=box, style=filled, color=green]; - n692 -> n702; - n702 [label="RET func", shape=box, style=filled, color=orange]; - n700 -> n702; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/p6_cfg_after.dot b/Project-02-03-04/mistraltests/after/p6_cfg_after.dot deleted file mode 100644 index 143f6c5..0000000 --- a/Project-02-03-04/mistraltests/after/p6_cfg_after.dot +++ /dev/null @@ -1,103 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n710 [label="START", shape=box]; - n710 -> n762; - n762 [label="2", shape=box]; - n762 -> n763; - n763 [label="3", shape=box]; - n763 -> n764; - n764 [label="CALL f", shape=box, style=filled, color=orange]; - n764 -> n712; - n712 [label="START f(a, b)", shape=box, style=filled, color=green]; - n712 -> n717; - n717 [label="a", shape=box]; - n717 -> n718; - n718 [label="0", shape=box]; - n718 -> n719; - n719 [label="a == 0", shape=box]; - n719 -> n720; - n720 [label="", shape=diamond]; - n720 -> n724 [label="T"]; - n724 [label="2", shape=box]; - n724 -> n725; - n725 [label="b", shape=box]; - n725 -> n726; - n726 [label="2 + b", shape=box]; - n726 -> n713; - n713 [label="END f(a, b)", shape=box, style=filled, color=green]; - n713 -> n760; - n760 [label="RET f", shape=box, style=filled, color=orange]; - n760 -> n761; - n761 [label="c * f((c - 1),d)", shape=box]; - n761 -> n728; - n728 [label="END g(a, c)", shape=box, style=filled, color=green]; - n728 -> n740; - n740 [label="RET g", shape=box, style=filled, color=orange]; - n740 -> n741; - n741 [label="2 + g(a,b)", shape=box]; - n741 -> n713; - n728 -> n772; - n772 [label="RET g", shape=box, style=filled, color=orange]; - n713 -> n766; - n766 [label="RET f", shape=box, style=filled, color=orange]; - n766 -> n768; - n768 [label="3", shape=box]; - n768 -> n769; - n769 [label="2", shape=box]; - n769 -> n770; - n770 [label="CALL g", shape=box, style=filled, color=orange]; - n770 -> n727; - n727 [label="START g(a, c)", shape=box, style=filled, color=green]; - n727 -> n730; - n730 [label="a", shape=box]; - n730 -> n731; - n731 [label="c", shape=box]; - n731 -> n732; - n732 [label="a + c", shape=box]; - n732 -> n733; - n733 [label="b", shape=box]; - n733 -> n734; - n734 [label="(a + c) + b", shape=box]; - n734 -> n728; - n727 -> n743; - n743 [label="c", shape=box]; - n743 -> n744; - n744 [label="0", shape=box]; - n744 -> n745; - n745 [label="c == 0", shape=box]; - n745 -> n746; - n746 [label="", shape=diamond]; - n746 -> n750 [label="T"]; - n750 [label="1", shape=box]; - n750 -> n751; - n751 [label="d", shape=box]; - n751 -> n752; - n752 [label="1 + d", shape=box]; - n752 -> n728; - n746 -> n753 [label="F"]; - n753 [label="c", shape=box]; - n753 -> n754; - n754 [label="c", shape=box]; - n754 -> n755; - n755 [label="1", shape=box]; - n755 -> n756; - n756 [label="c - 1", shape=box]; - n756 -> n757; - n757 [label="d", shape=box]; - n757 -> n758; - n758 [label="CALL f", shape=box, style=filled, color=orange]; - n758 -> n712; - n758 -> n760; - n770 -> n772; - n720 -> n735 [label="F"]; - n735 [label="2", shape=box]; - n735 -> n736; - n736 [label="a", shape=box]; - n736 -> n737; - n737 [label="b", shape=box]; - n737 -> n738; - n738 [label="CALL g", shape=box, style=filled, color=orange]; - n738 -> n727; - n738 -> n740; - n764 -> n766; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/side_effect_cfg_after.dot b/Project-02-03-04/mistraltests/after/side_effect_cfg_after.dot deleted file mode 100644 index d9f166c..0000000 --- a/Project-02-03-04/mistraltests/after/side_effect_cfg_after.dot +++ /dev/null @@ -1,40 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n773 [label="START", shape=box]; - n773 -> n792; - n792 [label="1", shape=box]; - n792 -> n793; - n793 [label="2", shape=box]; - n793 -> n794; - n794 [label="CALL f", shape=box, style=filled, color=orange]; - n794 -> n775; - n775 [label="START f(x, y)", shape=box, style=filled, color=green]; - n775 -> n785; - n785 [label="5", shape=box]; - n785 -> n786; - n786 [label="CALL g", shape=box, style=filled, color=orange]; - n786 -> n778; - n778 [label="START g(x)", shape=box, style=filled, color=green]; - n778 -> n781; - n781 [label="x", shape=box]; - n781 -> n782; - n782 [label="7", shape=box]; - n782 -> n783; - n783 [label="x + 7", shape=box]; - n783 -> n784; - n784 [label="y = (x + 7)", shape=box]; - n784 -> n779; - n779 [label="END g(x)", shape=box, style=filled, color=green]; - n779 -> n788; - n788 [label="RET g", shape=box, style=filled, color=orange]; - n788 -> n789; - n789 [label="x = g(5)", shape=box]; - n789 -> n791; - n791 [label="y", shape=box]; - n791 -> n776; - n776 [label="END f(x, y)", shape=box, style=filled, color=green]; - n776 -> n796; - n796 [label="RET f", shape=box, style=filled, color=orange]; - n786 -> n788; - n794 -> n796; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/simpleSequence_cfg_after.dot b/Project-02-03-04/mistraltests/after/simpleSequence_cfg_after.dot deleted file mode 100644 index 06fdcd8..0000000 --- a/Project-02-03-04/mistraltests/after/simpleSequence_cfg_after.dot +++ /dev/null @@ -1,59 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n798 [label="START", shape=box]; - n798 -> n829; - n829 [label="3", shape=box]; - n829 -> n830; - n830 [label="CALL f", shape=box, style=filled, color=orange]; - n830 -> n800; - n800 [label="START f(x)", shape=box, style=filled, color=green]; - n800 -> n803; - n803 [label="2", shape=box]; - n803 -> n804; - n804 [label="x", shape=box]; - n804 -> n805; - n805 [label="2 * x", shape=box]; - n805 -> n806; - n806 [label="x = (2 * x)", shape=box]; - n806 -> n807; - n807 [label="x", shape=box]; - n807 -> n808; - n808 [label="0", shape=box]; - n808 -> n809; - n809 [label="x > 0", shape=box]; - n809 -> n810; - n810 [label="", shape=diamond]; - n810 -> n814 [label="T"]; - n814 [label="x", shape=box]; - n814 -> n815; - n815 [label="1", shape=box]; - n815 -> n816; - n816 [label="x - 1", shape=box]; - n816 -> n817; - n817 [label="x = (x - 1)", shape=box]; - n817 -> n819; - n819 [label="x", shape=box]; - n819 -> n820; - n820 [label="0", shape=box]; - n820 -> n821; - n821 [label="x > 0", shape=box]; - n821 -> n822; - n822 [label="", shape=diamond]; - n822 -> n801 [label="T"]; - n801 [label="END f(x)", shape=box, style=filled, color=green]; - n801 -> n832; - n832 [label="RET f", shape=box, style=filled, color=orange]; - n822 -> n824 [label="F"]; - n824 [label="x", shape=box]; - n824 -> n825; - n825 [label="1", shape=box]; - n825 -> n826; - n826 [label="x - 1", shape=box]; - n826 -> n827; - n827 [label="x = (x - 1)", shape=box]; - n827 -> n819; - n810 -> n818 [label="F"]; - n818 [label="x", shape=box]; - n818 -> n819; - n830 -> n832; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/simple_dfa_cfg_after.dot b/Project-02-03-04/mistraltests/after/simple_dfa_cfg_after.dot deleted file mode 100644 index abc919b..0000000 --- a/Project-02-03-04/mistraltests/after/simple_dfa_cfg_after.dot +++ /dev/null @@ -1,21 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n834 [label="START", shape=box]; - n834 -> n842; - n842 [label="2", shape=box]; - n842 -> n843; - n843 [label="CALL g", shape=box, style=filled, color=orange]; - n843 -> n836; - n836 [label="START g(x, y)", shape=box, style=filled, color=green]; - n836 -> n839; - n839 [label="3", shape=box]; - n839 -> n840; - n840 [label="y = 3", shape=box]; - n840 -> n841; - n841 [label="x", shape=box]; - n841 -> n837; - n837 [label="END g(x, y)", shape=box, style=filled, color=green]; - n837 -> n845; - n845 [label="RET g", shape=box, style=filled, color=orange]; - n843 -> n845; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/simple_if_2_cfg_after.dot b/Project-02-03-04/mistraltests/after/simple_if_2_cfg_after.dot deleted file mode 100644 index 5e5a429..0000000 --- a/Project-02-03-04/mistraltests/after/simple_if_2_cfg_after.dot +++ /dev/null @@ -1,16 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n856 [label="START", shape=box]; - n856 -> n858; - n858 [label="True", shape=box]; - n858 -> n859; - n859 [label="False", shape=box]; - n859 -> n860; - n860 [label="True && False", shape=box]; - n860 -> n861; - n861 [label="", shape=diamond]; - n861 -> n865 [label="T"]; - n865 [label="1", shape=box]; - n861 -> n866 [label="F"]; - n866 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/simple_if_3_cfg_after.dot b/Project-02-03-04/mistraltests/after/simple_if_3_cfg_after.dot deleted file mode 100644 index 0d2f7ff..0000000 --- a/Project-02-03-04/mistraltests/after/simple_if_3_cfg_after.dot +++ /dev/null @@ -1,16 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n867 [label="START", shape=box]; - n867 -> n869; - n869 [label="True", shape=box]; - n869 -> n870; - n870 [label="False", shape=box]; - n870 -> n871; - n871 [label="True || False", shape=box]; - n871 -> n872; - n872 [label="", shape=diamond]; - n872 -> n876 [label="T"]; - n876 [label="1", shape=box]; - n872 -> n877 [label="F"]; - n877 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/simple_if_4_cfg_after.dot b/Project-02-03-04/mistraltests/after/simple_if_4_cfg_after.dot deleted file mode 100644 index f63855d..0000000 --- a/Project-02-03-04/mistraltests/after/simple_if_4_cfg_after.dot +++ /dev/null @@ -1,16 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n878 [label="START", shape=box]; - n878 -> n880; - n880 [label="1", shape=box]; - n880 -> n881; - n881 [label="2", shape=box]; - n881 -> n882; - n882 [label="1 > 2", shape=box]; - n882 -> n883; - n883 [label="", shape=diamond]; - n883 -> n887 [label="T"]; - n887 [label="1", shape=box]; - n883 -> n888 [label="F"]; - n888 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/simple_if_5_cfg_after.dot b/Project-02-03-04/mistraltests/after/simple_if_5_cfg_after.dot deleted file mode 100644 index a6b0aa6..0000000 --- a/Project-02-03-04/mistraltests/after/simple_if_5_cfg_after.dot +++ /dev/null @@ -1,20 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n889 [label="START", shape=box]; - n889 -> n891; - n891 [label="2", shape=box]; - n891 -> n892; - n892 [label="3", shape=box]; - n892 -> n893; - n893 [label="5", shape=box]; - n893 -> n894; - n894 [label="3 + 5", shape=box]; - n894 -> n895; - n895 [label="2 > (3 + 5)", shape=box]; - n895 -> n896; - n896 [label="", shape=diamond]; - n896 -> n900 [label="T"]; - n900 [label="1", shape=box]; - n896 -> n901 [label="F"]; - n901 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/simple_if_6_cfg_after.dot b/Project-02-03-04/mistraltests/after/simple_if_6_cfg_after.dot deleted file mode 100644 index d6791a9..0000000 --- a/Project-02-03-04/mistraltests/after/simple_if_6_cfg_after.dot +++ /dev/null @@ -1,24 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n902 [label="START", shape=box]; - n902 -> n904; - n904 [label="1", shape=box]; - n904 -> n905; - n905 [label="2", shape=box]; - n905 -> n906; - n906 [label="1 > 2", shape=box]; - n906 -> n907; - n907 [label="3", shape=box]; - n907 -> n908; - n908 [label="5", shape=box]; - n908 -> n909; - n909 [label="3 < 5", shape=box]; - n909 -> n910; - n910 [label="(1 > 2) || (3 < 5)", shape=box]; - n910 -> n911; - n911 [label="", shape=diamond]; - n911 -> n915 [label="T"]; - n915 [label="1", shape=box]; - n911 -> n916 [label="F"]; - n916 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/simple_if_7_cfg_after.dot b/Project-02-03-04/mistraltests/after/simple_if_7_cfg_after.dot deleted file mode 100644 index 1de6093..0000000 --- a/Project-02-03-04/mistraltests/after/simple_if_7_cfg_after.dot +++ /dev/null @@ -1,20 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n917 [label="START", shape=box]; - n917 -> n919; - n919 [label="2", shape=box]; - n919 -> n920; - n920 [label="0", shape=box]; - n920 -> n921; - n921 [label="2 == 0", shape=box]; - n921 -> n922; - n922 [label="False", shape=box]; - n922 -> n923; - n923 [label="(2 == 0) == False", shape=box]; - n923 -> n924; - n924 [label="", shape=diamond]; - n924 -> n928 [label="T"]; - n928 [label="1", shape=box]; - n924 -> n929 [label="F"]; - n929 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/simple_if_cfg_after.dot b/Project-02-03-04/mistraltests/after/simple_if_cfg_after.dot deleted file mode 100644 index b8b7222..0000000 --- a/Project-02-03-04/mistraltests/after/simple_if_cfg_after.dot +++ /dev/null @@ -1,12 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n847 [label="START", shape=box]; - n847 -> n849; - n849 [label="True", shape=box]; - n849 -> n850; - n850 [label="", shape=diamond]; - n850 -> n854 [label="T"]; - n854 [label="1", shape=box]; - n850 -> n855 [label="F"]; - n855 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/square_cfg_after.dot b/Project-02-03-04/mistraltests/after/square_cfg_after.dot deleted file mode 100644 index 9048a94..0000000 --- a/Project-02-03-04/mistraltests/after/square_cfg_after.dot +++ /dev/null @@ -1,21 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n930 [label="START", shape=box]; - n930 -> n938; - n938 [label="10", shape=box]; - n938 -> n939; - n939 [label="CALL square", shape=box, style=filled, color=orange]; - n939 -> n932; - n932 [label="START square(x)", shape=box, style=filled, color=green]; - n932 -> n935; - n935 [label="x", shape=box]; - n935 -> n936; - n936 [label="x", shape=box]; - n936 -> n937; - n937 [label="x * x", shape=box]; - n937 -> n933; - n933 [label="END square(x)", shape=box, style=filled, color=green]; - n933 -> n941; - n941 [label="RET square", shape=box, style=filled, color=orange]; - n939 -> n941; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/validProgram_cfg_after.dot b/Project-02-03-04/mistraltests/after/validProgram_cfg_after.dot deleted file mode 100644 index 089243d..0000000 --- a/Project-02-03-04/mistraltests/after/validProgram_cfg_after.dot +++ /dev/null @@ -1,92 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n943 [label="START", shape=box]; - n943 -> n983; - n983 [label="2", shape=box]; - n983 -> n984; - n984 [label="3", shape=box]; - n984 -> n985; - n985 [label="CALL mult", shape=box, style=filled, color=orange]; - n985 -> n945; - n945 [label="START mult(a, b)", shape=box, style=filled, color=green]; - n945 -> n950; - n950 [label="a", shape=box]; - n950 -> n951; - n951 [label="b", shape=box]; - n951 -> n952; - n952 [label="a * b", shape=box]; - n952 -> n946; - n946 [label="END mult(a, b)", shape=box, style=filled, color=green]; - n946 -> n977; - n977 [label="RET mult", shape=box, style=filled, color=orange]; - n977 -> n954; - n954 [label="END inc(a)", shape=box, style=filled, color=green]; - n954 -> n972; - n972 [label="RET inc", shape=box, style=filled, color=orange]; - n972 -> n954; - n954 -> n981; - n981 [label="RET inc", shape=box, style=filled, color=orange]; - n981 -> n948; - n948 [label="END add(a, b)", shape=box, style=filled, color=green]; - n948 -> n992; - n992 [label="RET add", shape=box, style=filled, color=orange]; - n992 -> n993; - n993 [label="CALL add", shape=box, style=filled, color=orange]; - n993 -> n947; - n947 [label="START add(a, b)", shape=box, style=filled, color=green]; - n947 -> n978; - n978 [label="a", shape=box]; - n978 -> n979; - n979 [label="CALL inc", shape=box, style=filled, color=orange]; - n979 -> n953; - n953 [label="START inc(a)", shape=box, style=filled, color=green]; - n953 -> n956; - n956 [label="b", shape=box]; - n956 -> n957; - n957 [label="0", shape=box]; - n957 -> n958; - n958 [label="b != 0", shape=box]; - n958 -> n959; - n959 [label="", shape=diamond]; - n959 -> n963 [label="T"]; - n963 [label="b", shape=box]; - n963 -> n964; - n964 [label="1", shape=box]; - n964 -> n965; - n965 [label="b - 1", shape=box]; - n965 -> n966; - n966 [label="b = (b - 1)", shape=box]; - n966 -> n967; - n967 [label="a", shape=box]; - n967 -> n968; - n968 [label="1", shape=box]; - n968 -> n969; - n969 [label="a + 1", shape=box]; - n969 -> n970; - n970 [label="CALL inc", shape=box, style=filled, color=orange]; - n970 -> n953; - n970 -> n972; - n959 -> n973 [label="F"]; - n973 [label="a", shape=box]; - n973 -> n974; - n974 [label="1", shape=box]; - n974 -> n975; - n975 [label="CALL mult", shape=box, style=filled, color=orange]; - n975 -> n945; - n975 -> n977; - n979 -> n981; - n993 -> n995; - n995 [label="RET add", shape=box, style=filled, color=orange]; - n948 -> n995; - n946 -> n987; - n987 [label="RET mult", shape=box, style=filled, color=orange]; - n987 -> n988; - n988 [label="4", shape=box]; - n988 -> n989; - n989 [label="5", shape=box]; - n989 -> n990; - n990 [label="CALL add", shape=box, style=filled, color=orange]; - n990 -> n947; - n990 -> n992; - n985 -> n987; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/while_2_cfg_after.dot b/Project-02-03-04/mistraltests/after/while_2_cfg_after.dot deleted file mode 100644 index 94838b2..0000000 --- a/Project-02-03-04/mistraltests/after/while_2_cfg_after.dot +++ /dev/null @@ -1,11 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n1026 [label="START", shape=box]; - n1026 -> n1028; - n1028 [label="True", shape=box]; - n1028 -> n1029; - n1029 [label="", shape=diamond]; - n1029 -> n1031 [label="T"]; - n1031 [label="3", shape=box]; - n1031 -> n1026; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/while_cfg_after.dot b/Project-02-03-04/mistraltests/after/while_cfg_after.dot deleted file mode 100644 index 3cf94ac..0000000 --- a/Project-02-03-04/mistraltests/after/while_cfg_after.dot +++ /dev/null @@ -1,50 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n997 [label="START", shape=box]; - n997 -> n1020; - n1020 [label="10", shape=box]; - n1020 -> n1021; - n1021 [label="8", shape=box]; - n1021 -> n1022; - n1022 [label="CALL func", shape=box, style=filled, color=orange]; - n1022 -> n999; - n999 [label="START func(a, b)", shape=box, style=filled, color=green]; - n999 -> n1002; - n1002 [label="a", shape=box]; - n1002 -> n1003; - n1003 [label="0", shape=box]; - n1003 -> n1004; - n1004 [label="a > 0", shape=box]; - n1004 -> n1005; - n1005 [label="b", shape=box]; - n1005 -> n1006; - n1006 [label="a", shape=box]; - n1006 -> n1007; - n1007 [label="b != a", shape=box]; - n1007 -> n1008; - n1008 [label="(a > 0) && (b != a)", shape=box]; - n1008 -> n1009; - n1009 [label="", shape=diamond]; - n1009 -> n1000 [label="T"]; - n1000 [label="END func(a, b)", shape=box, style=filled, color=green]; - n1000 -> n1024; - n1024 [label="RET func", shape=box, style=filled, color=orange]; - n1009 -> n1011 [label="F"]; - n1011 [label="b", shape=box]; - n1011 -> n1012; - n1012 [label="1", shape=box]; - n1012 -> n1013; - n1013 [label="b + 1", shape=box]; - n1013 -> n1014; - n1014 [label="b = (b + 1)", shape=box]; - n1014 -> n1015; - n1015 [label="a", shape=box]; - n1015 -> n1016; - n1016 [label="1", shape=box]; - n1016 -> n1017; - n1017 [label="a - 1", shape=box]; - n1017 -> n1018; - n1018 [label="a = (a - 1)", shape=box]; - n1018 -> n1004; - n1022 -> n1024; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/wrapped-ggT_cfg_after.dot b/Project-02-03-04/mistraltests/after/wrapped-ggT_cfg_after.dot deleted file mode 100644 index bea4728..0000000 --- a/Project-02-03-04/mistraltests/after/wrapped-ggT_cfg_after.dot +++ /dev/null @@ -1,76 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n1033 [label="START", shape=box]; - n1033 -> n1075; - n1075 [label="21", shape=box]; - n1075 -> n1076; - n1076 [label="49", shape=box]; - n1076 -> n1077; - n1077 [label="CALL wrapper", shape=box, style=filled, color=orange]; - n1077 -> n1035; - n1035 [label="START wrapper(a, b)", shape=box, style=filled, color=green]; - n1035 -> n1070; - n1070 [label="0", shape=box]; - n1070 -> n1071; - n1071 [label="CALL ggt", shape=box, style=filled, color=orange]; - n1071 -> n1038; - n1038 [label="START ggt(noneSense)", shape=box, style=filled, color=green]; - n1038 -> n1041; - n1041 [label="a", shape=box]; - n1041 -> n1042; - n1042 [label="b", shape=box]; - n1042 -> n1043; - n1043 [label="a == b", shape=box]; - n1043 -> n1044; - n1044 [label="", shape=diamond]; - n1044 -> n1048 [label="T"]; - n1048 [label="a", shape=box]; - n1048 -> n1039; - n1039 [label="END ggt(noneSense)", shape=box, style=filled, color=green]; - n1039 -> n1073; - n1073 [label="RET ggt", shape=box, style=filled, color=orange]; - n1073 -> n1036; - n1036 [label="END wrapper(a, b)", shape=box, style=filled, color=green]; - n1036 -> n1062; - n1062 [label="RET wrapper", shape=box, style=filled, color=orange]; - n1062 -> n1039; - n1036 -> n1069; - n1069 [label="RET wrapper", shape=box, style=filled, color=orange]; - n1069 -> n1039; - n1036 -> n1079; - n1079 [label="RET wrapper", shape=box, style=filled, color=orange]; - n1044 -> n1049 [label="F"]; - n1049 [label="a", shape=box]; - n1049 -> n1050; - n1050 [label="b", shape=box]; - n1050 -> n1051; - n1051 [label="a > b", shape=box]; - n1051 -> n1052; - n1052 [label="", shape=diamond]; - n1052 -> n1056 [label="T"]; - n1056 [label="a", shape=box]; - n1056 -> n1057; - n1057 [label="b", shape=box]; - n1057 -> n1058; - n1058 [label="a - b", shape=box]; - n1058 -> n1059; - n1059 [label="b", shape=box]; - n1059 -> n1060; - n1060 [label="CALL wrapper", shape=box, style=filled, color=orange]; - n1060 -> n1035; - n1060 -> n1062; - n1052 -> n1063 [label="F"]; - n1063 [label="b", shape=box]; - n1063 -> n1064; - n1064 [label="a", shape=box]; - n1064 -> n1065; - n1065 [label="b - a", shape=box]; - n1065 -> n1066; - n1066 [label="a", shape=box]; - n1066 -> n1067; - n1067 [label="CALL wrapper", shape=box, style=filled, color=orange]; - n1067 -> n1035; - n1067 -> n1069; - n1071 -> n1073; - n1077 -> n1079; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/after/wrapper_cfg_after.dot b/Project-02-03-04/mistraltests/after/wrapper_cfg_after.dot deleted file mode 100644 index 768ee06..0000000 --- a/Project-02-03-04/mistraltests/after/wrapper_cfg_after.dot +++ /dev/null @@ -1,49 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n1081 [label="START", shape=box]; - n1081 -> n1107; - n1107 [label="4", shape=box]; - n1107 -> n1108; - n1108 [label="10", shape=box]; - n1108 -> n1109; - n1109 [label="CALL wrapper", shape=box, style=filled, color=orange]; - n1109 -> n1083; - n1083 [label="START wrapper(number, threshold)", shape=box, style=filled, color=green]; - n1083 -> n1102; - n1102 [label="number", shape=box]; - n1102 -> n1103; - n1103 [label="CALL square", shape=box, style=filled, color=orange]; - n1103 -> n1086; - n1086 [label="START square(x)", shape=box, style=filled, color=green]; - n1086 -> n1089; - n1089 [label="x", shape=box]; - n1089 -> n1090; - n1090 [label="x", shape=box]; - n1090 -> n1091; - n1091 [label="x * x", shape=box]; - n1091 -> n1092; - n1092 [label="threshold", shape=box]; - n1092 -> n1093; - n1093 [label="(x * x) > threshold", shape=box]; - n1093 -> n1094; - n1094 [label="", shape=diamond]; - n1094 -> n1098 [label="T"]; - n1098 [label="x", shape=box]; - n1098 -> n1087; - n1087 [label="END square(x)", shape=box, style=filled, color=green]; - n1087 -> n1105; - n1105 [label="RET square", shape=box, style=filled, color=orange]; - n1105 -> n1084; - n1084 [label="END wrapper(number, threshold)", shape=box, style=filled, color=green]; - n1084 -> n1111; - n1111 [label="RET wrapper", shape=box, style=filled, color=orange]; - n1094 -> n1099 [label="F"]; - n1099 [label="x", shape=box]; - n1099 -> n1100; - n1100 [label="x", shape=box]; - n1100 -> n1101; - n1101 [label="x * x", shape=box]; - n1101 -> n1087; - n1103 -> n1105; - n1109 -> n1111; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/argsParamsExample_cfg_before.dot b/Project-02-03-04/mistraltests/before/argsParamsExample_cfg_before.dot deleted file mode 100644 index cd1446c..0000000 --- a/Project-02-03-04/mistraltests/before/argsParamsExample_cfg_before.dot +++ /dev/null @@ -1,19 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n7 [label="1", shape=box]; - n7 -> n8; - n8 [label="2", shape=box]; - n8 -> n9; - n9 [label="3", shape=box]; - n9 -> n10; - n10 [label="CALL a", shape=box, style=filled, color=orange]; - n10 -> n3; - n3 [label="START a(x, y, z)", shape=box, style=filled, color=green]; - n3 -> n6; - n6 [label="x", shape=box]; - n6 -> n4; - n4 [label="END a(x, y, z)", shape=box, style=filled, color=green]; - n4 -> n12; - n12 [label="RET a", shape=box, style=filled, color=orange]; - n10 -> n12; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/complex_cfg_before.dot b/Project-02-03-04/mistraltests/before/complex_cfg_before.dot deleted file mode 100644 index 0d795b3..0000000 --- a/Project-02-03-04/mistraltests/before/complex_cfg_before.dot +++ /dev/null @@ -1,123 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n65 [label="10", shape=box]; - n65 -> n66; - n66 [label="CALL f1", shape=box, style=filled, color=orange]; - n66 -> n16; - n16 [label="START f1(b)", shape=box, style=filled, color=green]; - n16 -> n21; - n21 [label="b", shape=box]; - n21 -> n22; - n22 [label="0", shape=box]; - n22 -> n23; - n23 [label="b == 0", shape=box]; - n23 -> n24; - n24 [label="", shape=diamond]; - n24 -> n28 [label="T"]; - n28 [label="0", shape=box]; - n28 -> n17; - n17 [label="END f1(b)", shape=box, style=filled, color=green]; - n17 -> n34; - n34 [label="RET f1", shape=box, style=filled, color=orange]; - n34 -> n17; - n17 -> n45; - n45 [label="RET f1", shape=box, style=filled, color=orange]; - n45 -> n58; - n58 [label="a", shape=box]; - n58 -> n59; - n59 [label="b", shape=box]; - n59 -> n60; - n60 [label="a * b", shape=box]; - n60 -> n61; - n61 [label="CALL g", shape=box, style=filled, color=orange]; - n61 -> n50; - n50 [label="START g(c)", shape=box, style=filled, color=green]; - n50 -> n53; - n53 [label="a", shape=box]; - n53 -> n54; - n54 [label="b", shape=box]; - n54 -> n55; - n55 [label="a * b", shape=box]; - n55 -> n56; - n56 [label="c", shape=box]; - n56 -> n57; - n57 [label="(a * b) * c", shape=box]; - n57 -> n51; - n51 [label="END g(c)", shape=box, style=filled, color=green]; - n51 -> n63; - n63 [label="RET g", shape=box, style=filled, color=orange]; - n63 -> n19; - n19 [label="END f2(a, b)", shape=box, style=filled, color=green]; - n19 -> n91; - n91 [label="RET f2", shape=box, style=filled, color=orange]; - n61 -> n63; - n17 -> n49; - n49 [label="RET f1", shape=box, style=filled, color=orange]; - n49 -> n58; - n17 -> n68; - n68 [label="RET f1", shape=box, style=filled, color=orange]; - n68 -> n70; - n70 [label="10", shape=box]; - n70 -> n83; - n83 [label="20", shape=box]; - n83 -> n84; - n84 [label="30", shape=box]; - n84 -> n85; - n85 [label="CALL max", shape=box, style=filled, color=orange]; - n85 -> n71; - n71 [label="START max(a, b)", shape=box, style=filled, color=green]; - n71 -> n74; - n74 [label="a", shape=box]; - n74 -> n75; - n75 [label="b", shape=box]; - n75 -> n76; - n76 [label="a > b", shape=box]; - n76 -> n77; - n77 [label="", shape=diamond]; - n77 -> n81 [label="T"]; - n81 [label="a", shape=box]; - n81 -> n72; - n72 [label="END max(a, b)", shape=box, style=filled, color=green]; - n72 -> n87; - n87 [label="RET max", shape=box, style=filled, color=orange]; - n87 -> n89; - n89 [label="CALL f2", shape=box, style=filled, color=orange]; - n89 -> n18; - n18 [label="START f2(a, b)", shape=box, style=filled, color=green]; - n18 -> n35; - n35 [label="a", shape=box]; - n35 -> n36; - n36 [label="b", shape=box]; - n36 -> n37; - n37 [label="a > b", shape=box]; - n37 -> n38; - n38 [label="", shape=diamond]; - n38 -> n42 [label="T"]; - n42 [label="a", shape=box]; - n42 -> n43; - n43 [label="CALL f1", shape=box, style=filled, color=orange]; - n43 -> n16; - n43 -> n45; - n38 -> n46 [label="F"]; - n46 [label="b", shape=box]; - n46 -> n47; - n47 [label="CALL f1", shape=box, style=filled, color=orange]; - n47 -> n16; - n47 -> n49; - n89 -> n91; - n77 -> n82 [label="F"]; - n82 [label="b", shape=box]; - n82 -> n72; - n85 -> n87; - n24 -> n29 [label="F"]; - n29 [label="b", shape=box]; - n29 -> n30; - n30 [label="1", shape=box]; - n30 -> n31; - n31 [label="b - 1", shape=box]; - n31 -> n32; - n32 [label="CALL f1", shape=box, style=filled, color=orange]; - n32 -> n16; - n32 -> n34; - n66 -> n68; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/condition_cfg_before.dot b/Project-02-03-04/mistraltests/before/condition_cfg_before.dot deleted file mode 100644 index bde78d7..0000000 --- a/Project-02-03-04/mistraltests/before/condition_cfg_before.dot +++ /dev/null @@ -1,22 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n94 [label="2", shape=box]; - n94 -> n95; - n95 [label="x", shape=box]; - n95 -> n96; - n96 [label="2 < x", shape=box]; - n96 -> n97; - n97 [label="x", shape=box]; - n97 -> n98; - n98 [label="9", shape=box]; - n98 -> n99; - n99 [label="x > 9", shape=box]; - n99 -> n100; - n100 [label="(2 < x) && (x > 9)", shape=box]; - n100 -> n101; - n101 [label="", shape=diamond]; - n101 -> n105 [label="T"]; - n105 [label="1", shape=box]; - n101 -> n106 [label="F"]; - n106 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/defSemiExample_cfg_before.dot b/Project-02-03-04/mistraltests/before/defSemiExample_cfg_before.dot deleted file mode 100644 index ee8067f..0000000 --- a/Project-02-03-04/mistraltests/before/defSemiExample_cfg_before.dot +++ /dev/null @@ -1,41 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n119 [label="1", shape=box]; - n119 -> n120; - n120 [label="CALL a", shape=box, style=filled, color=orange]; - n120 -> n109; - n109 [label="START a(x)", shape=box, style=filled, color=green]; - n109 -> n116; - n116 [label="x", shape=box]; - n116 -> n110; - n110 [label="END a(x)", shape=box, style=filled, color=green]; - n110 -> n122; - n122 [label="RET a", shape=box, style=filled, color=orange]; - n122 -> n124; - n124 [label="2", shape=box]; - n124 -> n125; - n125 [label="CALL b", shape=box, style=filled, color=orange]; - n125 -> n111; - n111 [label="START b(y)", shape=box, style=filled, color=green]; - n111 -> n117; - n117 [label="y", shape=box]; - n117 -> n112; - n112 [label="END b(y)", shape=box, style=filled, color=green]; - n112 -> n127; - n127 [label="RET b", shape=box, style=filled, color=orange]; - n127 -> n128; - n128 [label="3", shape=box]; - n128 -> n129; - n129 [label="CALL c", shape=box, style=filled, color=orange]; - n129 -> n113; - n113 [label="START c(z)", shape=box, style=filled, color=green]; - n113 -> n118; - n118 [label="z", shape=box]; - n118 -> n114; - n114 [label="END c(z)", shape=box, style=filled, color=green]; - n114 -> n131; - n131 [label="RET c", shape=box, style=filled, color=orange]; - n129 -> n131; - n125 -> n127; - n120 -> n122; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/example_cfg_before.dot b/Project-02-03-04/mistraltests/before/example_cfg_before.dot deleted file mode 100644 index 66d71b9..0000000 --- a/Project-02-03-04/mistraltests/before/example_cfg_before.dot +++ /dev/null @@ -1,66 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n167 [label="2", shape=box]; - n167 -> n168; - n168 [label="3", shape=box]; - n168 -> n169; - n169 [label="CALL f", shape=box, style=filled, color=orange]; - n169 -> n134; - n134 [label="START f(x, y, z)", shape=box, style=filled, color=green]; - n134 -> n137; - n137 [label="2", shape=box]; - n137 -> n138; - n138 [label="y = 2", shape=box]; - n138 -> n139; - n139 [label="3", shape=box]; - n139 -> n140; - n140 [label="z = 3", shape=box]; - n140 -> n160; - n160 [label="x", shape=box]; - n160 -> n161; - n161 [label="CALL g", shape=box, style=filled, color=orange]; - n161 -> n141; - n141 [label="START g(x)", shape=box, style=filled, color=green]; - n141 -> n144; - n144 [label="7", shape=box]; - n144 -> n145; - n145 [label="x = 7", shape=box]; - n145 -> n146; - n146 [label="y", shape=box]; - n146 -> n147; - n147 [label="0", shape=box]; - n147 -> n148; - n148 [label="y > 0", shape=box]; - n148 -> n149; - n149 [label="", shape=diamond]; - n149 -> n153 [label="T"]; - n153 [label="y", shape=box]; - n153 -> n154; - n154 [label="CALL g", shape=box, style=filled, color=orange]; - n154 -> n141; - n154 -> n156; - n156 [label="RET g", shape=box, style=filled, color=orange]; - n156 -> n159; - n159 [label="x", shape=box]; - n159 -> n142; - n142 [label="END g(x)", shape=box, style=filled, color=green]; - n142 -> n156; - n142 -> n163; - n163 [label="RET g", shape=box, style=filled, color=orange]; - n163 -> n164; - n164 [label="x", shape=box]; - n164 -> n165; - n165 [label="g(x) + x", shape=box]; - n165 -> n135; - n135 [label="END f(x, y, z)", shape=box, style=filled, color=green]; - n135 -> n171; - n171 [label="RET f", shape=box, style=filled, color=orange]; - n165 -> n135; - n149 -> n157 [label="F"]; - n157 [label="8", shape=box]; - n157 -> n158; - n158 [label="x = 8", shape=box]; - n158 -> n159; - n161 -> n163; - n169 -> n171; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/factorial_cfg_before.dot b/Project-02-03-04/mistraltests/before/factorial_cfg_before.dot deleted file mode 100644 index 0aeb4d9..0000000 --- a/Project-02-03-04/mistraltests/before/factorial_cfg_before.dot +++ /dev/null @@ -1,264 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n338 [label="3", shape=box]; - n338 -> n339; - n339 [label="CALL fac", shape=box, style=filled, color=orange]; - n339 -> n191; - n191 [label="START fac(x)", shape=box, style=filled, color=green]; - n191 -> n194; - n194 [label="x", shape=box]; - n194 -> n195; - n195 [label="1", shape=box]; - n195 -> n196; - n196 [label="x == 1", shape=box]; - n196 -> n197; - n197 [label="", shape=diamond]; - n197 -> n201 [label="T"]; - n201 [label="1", shape=box]; - n201 -> n192; - n192 [label="END fac(x)", shape=box, style=filled, color=green]; - n192 -> n207; - n207 [label="RET fac", shape=box, style=filled, color=orange]; - n207 -> n208; - n208 [label="x", shape=box]; - n208 -> n209; - n209 [label="fac((x - 1)) * x", shape=box]; - n209 -> n192; - n192 -> n223; - n223 [label="RET fac", shape=box, style=filled, color=orange]; - n223 -> n224; - n224 [label="x", shape=box]; - n224 -> n225; - n225 [label="fac((x - 1)) * x", shape=box]; - n225 -> n192; - n192 -> n239; - n239 [label="RET fac", shape=box, style=filled, color=orange]; - n239 -> n240; - n240 [label="x", shape=box]; - n240 -> n241; - n241 [label="fac((x - 1)) * x", shape=box]; - n241 -> n192; - n192 -> n255; - n255 [label="RET fac", shape=box, style=filled, color=orange]; - n255 -> n256; - n256 [label="x", shape=box]; - n256 -> n257; - n257 [label="fac((x - 1)) * x", shape=box]; - n257 -> n192; - n192 -> n271; - n271 [label="RET fac", shape=box, style=filled, color=orange]; - n271 -> n272; - n272 [label="x", shape=box]; - n272 -> n273; - n273 [label="fac((x - 1)) * x", shape=box]; - n273 -> n192; - n192 -> n287; - n287 [label="RET fac", shape=box, style=filled, color=orange]; - n287 -> n288; - n288 [label="x", shape=box]; - n288 -> n289; - n289 [label="fac((x - 1)) * x", shape=box]; - n289 -> n192; - n192 -> n303; - n303 [label="RET fac", shape=box, style=filled, color=orange]; - n303 -> n304; - n304 [label="x", shape=box]; - n304 -> n305; - n305 [label="fac((x - 1)) * x", shape=box]; - n305 -> n192; - n192 -> n319; - n319 [label="RET fac", shape=box, style=filled, color=orange]; - n319 -> n320; - n320 [label="x", shape=box]; - n320 -> n321; - n321 [label="fac((x - 1)) * x", shape=box]; - n321 -> n192; - n192 -> n335; - n335 [label="RET fac", shape=box, style=filled, color=orange]; - n335 -> n336; - n336 [label="x", shape=box]; - n336 -> n337; - n337 [label="fac((x - 1)) * x", shape=box]; - n337 -> n192; - n192 -> n341; - n341 [label="RET fac", shape=box, style=filled, color=orange]; - n197 -> n202 [label="F"]; - n202 [label="x", shape=box]; - n202 -> n203; - n203 [label="1", shape=box]; - n203 -> n204; - n204 [label="x - 1", shape=box]; - n204 -> n205; - n205 [label="CALL fac", shape=box, style=filled, color=orange]; - n205 -> n191; - n205 -> n207; - n191 -> n210; - n210 [label="x", shape=box]; - n210 -> n211; - n211 [label="1", shape=box]; - n211 -> n212; - n212 [label="x == 1", shape=box]; - n212 -> n213; - n213 [label="", shape=diamond]; - n213 -> n217 [label="T"]; - n217 [label="1", shape=box]; - n217 -> n192; - n213 -> n218 [label="F"]; - n218 [label="x", shape=box]; - n218 -> n219; - n219 [label="1", shape=box]; - n219 -> n220; - n220 [label="x - 1", shape=box]; - n220 -> n221; - n221 [label="CALL fac", shape=box, style=filled, color=orange]; - n221 -> n191; - n221 -> n223; - n191 -> n226; - n226 [label="x", shape=box]; - n226 -> n227; - n227 [label="1", shape=box]; - n227 -> n228; - n228 [label="x == 1", shape=box]; - n228 -> n229; - n229 [label="", shape=diamond]; - n229 -> n233 [label="T"]; - n233 [label="1", shape=box]; - n233 -> n192; - n229 -> n234 [label="F"]; - n234 [label="x", shape=box]; - n234 -> n235; - n235 [label="1", shape=box]; - n235 -> n236; - n236 [label="x - 1", shape=box]; - n236 -> n237; - n237 [label="CALL fac", shape=box, style=filled, color=orange]; - n237 -> n191; - n237 -> n239; - n191 -> n242; - n242 [label="x", shape=box]; - n242 -> n243; - n243 [label="1", shape=box]; - n243 -> n244; - n244 [label="x == 1", shape=box]; - n244 -> n245; - n245 [label="", shape=diamond]; - n245 -> n249 [label="T"]; - n249 [label="1", shape=box]; - n249 -> n192; - n245 -> n250 [label="F"]; - n250 [label="x", shape=box]; - n250 -> n251; - n251 [label="1", shape=box]; - n251 -> n252; - n252 [label="x - 1", shape=box]; - n252 -> n253; - n253 [label="CALL fac", shape=box, style=filled, color=orange]; - n253 -> n191; - n253 -> n255; - n191 -> n258; - n258 [label="x", shape=box]; - n258 -> n259; - n259 [label="1", shape=box]; - n259 -> n260; - n260 [label="x == 1", shape=box]; - n260 -> n261; - n261 [label="", shape=diamond]; - n261 -> n265 [label="T"]; - n265 [label="1", shape=box]; - n265 -> n192; - n261 -> n266 [label="F"]; - n266 [label="x", shape=box]; - n266 -> n267; - n267 [label="1", shape=box]; - n267 -> n268; - n268 [label="x - 1", shape=box]; - n268 -> n269; - n269 [label="CALL fac", shape=box, style=filled, color=orange]; - n269 -> n191; - n269 -> n271; - n191 -> n274; - n274 [label="x", shape=box]; - n274 -> n275; - n275 [label="1", shape=box]; - n275 -> n276; - n276 [label="x == 1", shape=box]; - n276 -> n277; - n277 [label="", shape=diamond]; - n277 -> n281 [label="T"]; - n281 [label="1", shape=box]; - n281 -> n192; - n277 -> n282 [label="F"]; - n282 [label="x", shape=box]; - n282 -> n283; - n283 [label="1", shape=box]; - n283 -> n284; - n284 [label="x - 1", shape=box]; - n284 -> n285; - n285 [label="CALL fac", shape=box, style=filled, color=orange]; - n285 -> n191; - n285 -> n287; - n191 -> n290; - n290 [label="x", shape=box]; - n290 -> n291; - n291 [label="1", shape=box]; - n291 -> n292; - n292 [label="x == 1", shape=box]; - n292 -> n293; - n293 [label="", shape=diamond]; - n293 -> n297 [label="T"]; - n297 [label="1", shape=box]; - n297 -> n192; - n293 -> n298 [label="F"]; - n298 [label="x", shape=box]; - n298 -> n299; - n299 [label="1", shape=box]; - n299 -> n300; - n300 [label="x - 1", shape=box]; - n300 -> n301; - n301 [label="CALL fac", shape=box, style=filled, color=orange]; - n301 -> n191; - n301 -> n303; - n191 -> n306; - n306 [label="x", shape=box]; - n306 -> n307; - n307 [label="1", shape=box]; - n307 -> n308; - n308 [label="x == 1", shape=box]; - n308 -> n309; - n309 [label="", shape=diamond]; - n309 -> n313 [label="T"]; - n313 [label="1", shape=box]; - n313 -> n192; - n309 -> n314 [label="F"]; - n314 [label="x", shape=box]; - n314 -> n315; - n315 [label="1", shape=box]; - n315 -> n316; - n316 [label="x - 1", shape=box]; - n316 -> n317; - n317 [label="CALL fac", shape=box, style=filled, color=orange]; - n317 -> n191; - n317 -> n319; - n191 -> n322; - n322 [label="x", shape=box]; - n322 -> n323; - n323 [label="1", shape=box]; - n323 -> n324; - n324 [label="x == 1", shape=box]; - n324 -> n325; - n325 [label="", shape=diamond]; - n325 -> n329 [label="T"]; - n329 [label="1", shape=box]; - n329 -> n192; - n325 -> n330 [label="F"]; - n330 [label="x", shape=box]; - n330 -> n331; - n331 [label="1", shape=box]; - n331 -> n332; - n332 [label="x - 1", shape=box]; - n332 -> n333; - n333 [label="CALL fac", shape=box, style=filled, color=orange]; - n333 -> n191; - n333 -> n335; - n339 -> n341; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/faulty_if_cfg_before.dot b/Project-02-03-04/mistraltests/before/faulty_if_cfg_before.dot deleted file mode 100644 index f7f9a82..0000000 --- a/Project-02-03-04/mistraltests/before/faulty_if_cfg_before.dot +++ /dev/null @@ -1,4 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n358 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/func_cfg_before.dot b/Project-02-03-04/mistraltests/before/func_cfg_before.dot deleted file mode 100644 index 11ffd24..0000000 --- a/Project-02-03-04/mistraltests/before/func_cfg_before.dot +++ /dev/null @@ -1,48 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n382 [label="10", shape=box]; - n382 -> n383; - n383 [label="8", shape=box]; - n383 -> n384; - n384 [label="CALL func", shape=box, style=filled, color=orange]; - n384 -> n361; - n361 [label="START func(a, b)", shape=box, style=filled, color=green]; - n361 -> n364; - n364 [label="a", shape=box]; - n364 -> n365; - n365 [label="0", shape=box]; - n365 -> n366; - n366 [label="a > 0", shape=box]; - n366 -> n367; - n367 [label="b", shape=box]; - n367 -> n368; - n368 [label="a", shape=box]; - n368 -> n369; - n369 [label="b != a", shape=box]; - n369 -> n370; - n370 [label="(a > 0) && (b != a)", shape=box]; - n370 -> n371; - n371 [label="", shape=diamond]; - n371 -> n373 [label="T"]; - n373 [label="b", shape=box]; - n373 -> n374; - n374 [label="1", shape=box]; - n374 -> n375; - n375 [label="b + 1", shape=box]; - n375 -> n376; - n376 [label="b = (b + 1)", shape=box]; - n376 -> n377; - n377 [label="a", shape=box]; - n377 -> n378; - n378 [label="1", shape=box]; - n378 -> n379; - n379 [label="a - 1", shape=box]; - n379 -> n380; - n380 [label="a = (a - 1)", shape=box]; - n380 -> n366; - n371 -> n362 [label="F"]; - n362 [label="END func(a, b)", shape=box, style=filled, color=green]; - n362 -> n386; - n386 [label="RET func", shape=box, style=filled, color=orange]; - n384 -> n386; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/geq_cfg_before.dot b/Project-02-03-04/mistraltests/before/geq_cfg_before.dot deleted file mode 100644 index 20d9ff9..0000000 --- a/Project-02-03-04/mistraltests/before/geq_cfg_before.dot +++ /dev/null @@ -1,14 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n390 [label="1", shape=box]; - n390 -> n391; - n391 [label="0", shape=box]; - n391 -> n392; - n392 [label="1 >= 0", shape=box]; - n392 -> n393; - n393 [label="", shape=diamond]; - n393 -> n397 [label="T"]; - n397 [label="1", shape=box]; - n393 -> n398 [label="F"]; - n398 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/ggT_euclid_rec_cfg_before.dot b/Project-02-03-04/mistraltests/before/ggT_euclid_rec_cfg_before.dot deleted file mode 100644 index 2aec34e..0000000 --- a/Project-02-03-04/mistraltests/before/ggT_euclid_rec_cfg_before.dot +++ /dev/null @@ -1,63 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n439 [label="3528", shape=box]; - n439 -> n440; - n440 [label="3780", shape=box]; - n440 -> n441; - n441 [label="CALL ggT", shape=box, style=filled, color=orange]; - n441 -> n407; - n407 [label="START ggT(a, b)", shape=box, style=filled, color=green]; - n407 -> n410; - n410 [label="a", shape=box]; - n410 -> n411; - n411 [label="b", shape=box]; - n411 -> n412; - n412 [label="a == b", shape=box]; - n412 -> n413; - n413 [label="", shape=diamond]; - n413 -> n417 [label="T"]; - n417 [label="a", shape=box]; - n417 -> n408; - n408 [label="END ggT(a, b)", shape=box, style=filled, color=green]; - n408 -> n431; - n431 [label="RET ggT", shape=box, style=filled, color=orange]; - n431 -> n408; - n408 -> n438; - n438 [label="RET ggT", shape=box, style=filled, color=orange]; - n438 -> n408; - n408 -> n443; - n443 [label="RET ggT", shape=box, style=filled, color=orange]; - n413 -> n418 [label="F"]; - n418 [label="a", shape=box]; - n418 -> n419; - n419 [label="b", shape=box]; - n419 -> n420; - n420 [label="a > b", shape=box]; - n420 -> n421; - n421 [label="", shape=diamond]; - n421 -> n425 [label="T"]; - n425 [label="a", shape=box]; - n425 -> n426; - n426 [label="b", shape=box]; - n426 -> n427; - n427 [label="a - b", shape=box]; - n427 -> n428; - n428 [label="b", shape=box]; - n428 -> n429; - n429 [label="CALL ggT", shape=box, style=filled, color=orange]; - n429 -> n407; - n429 -> n431; - n421 -> n432 [label="F"]; - n432 [label="b", shape=box]; - n432 -> n433; - n433 [label="a", shape=box]; - n433 -> n434; - n434 [label="b - a", shape=box]; - n434 -> n435; - n435 [label="a", shape=box]; - n435 -> n436; - n436 [label="CALL ggT", shape=box, style=filled, color=orange]; - n436 -> n407; - n436 -> n438; - n441 -> n443; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/homework_cfg_before.dot b/Project-02-03-04/mistraltests/before/homework_cfg_before.dot deleted file mode 100644 index 7597a44..0000000 --- a/Project-02-03-04/mistraltests/before/homework_cfg_before.dot +++ /dev/null @@ -1,108 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n499 [label="1", shape=box]; - n499 -> n500; - n500 [label="2", shape=box]; - n500 -> n501; - n501 [label="CALL f", shape=box, style=filled, color=orange]; - n501 -> n447; - n447 [label="START f(x, y)", shape=box, style=filled, color=green]; - n447 -> n452; - n452 [label="x", shape=box]; - n452 -> n453; - n453 [label="0", shape=box]; - n453 -> n454; - n454 [label="x == 0", shape=box]; - n454 -> n455; - n455 [label="", shape=diamond]; - n455 -> n467 [label="T"]; - n467 [label="2", shape=box]; - n467 -> n468; - n468 [label="y", shape=box]; - n468 -> n469; - n469 [label="2 * y", shape=box]; - n469 -> n470; - n470 [label="x", shape=box]; - n470 -> n471; - n471 [label="CALL g", shape=box, style=filled, color=orange]; - n471 -> n459; - n459 [label="START g(x, z)", shape=box, style=filled, color=green]; - n459 -> n462; - n462 [label="x", shape=box]; - n462 -> n463; - n463 [label="y", shape=box]; - n463 -> n464; - n464 [label="x * y", shape=box]; - n464 -> n465; - n465 [label="z", shape=box]; - n465 -> n466; - n466 [label="(x * y) + z", shape=box]; - n466 -> n460; - n460 [label="END g(x, z)", shape=box, style=filled, color=green]; - n460 -> n473; - n473 [label="RET g", shape=box, style=filled, color=orange]; - n473 -> n448; - n448 [label="END f(x, y)", shape=box, style=filled, color=green]; - n448 -> n488; - n488 [label="RET f", shape=box, style=filled, color=orange]; - n488 -> n489; - n489 [label="a * f(a,i)", shape=box]; - n489 -> n490; - n490 [label="a = (a * f(a,i))", shape=box]; - n490 -> n491; - n491 [label="i", shape=box]; - n491 -> n492; - n492 [label="1", shape=box]; - n492 -> n493; - n493 [label="i - 1", shape=box]; - n493 -> n494; - n494 [label="i = (i - 1)", shape=box]; - n494 -> n478; - n478 [label="i", shape=box]; - n478 -> n479; - n479 [label="0", shape=box]; - n479 -> n480; - n480 [label="i > 0", shape=box]; - n480 -> n481; - n481 [label="", shape=diamond]; - n481 -> n483 [label="T"]; - n483 [label="a", shape=box]; - n483 -> n484; - n484 [label="a", shape=box]; - n484 -> n485; - n485 [label="i", shape=box]; - n485 -> n486; - n486 [label="CALL f", shape=box, style=filled, color=orange]; - n486 -> n447; - n486 -> n488; - n481 -> n496 [label="F"]; - n496 [label="a", shape=box]; - n496 -> n497; - n497 [label="42", shape=box]; - n497 -> n498; - n498 [label="a + 42", shape=box]; - n498 -> n460; - n448 -> n503; - n503 [label="RET f", shape=box, style=filled, color=orange]; - n503 -> n505; - n505 [label="3", shape=box]; - n505 -> n506; - n506 [label="3", shape=box]; - n506 -> n507; - n507 [label="CALL g", shape=box, style=filled, color=orange]; - n507 -> n459; - n507 -> n509; - n509 [label="RET g", shape=box, style=filled, color=orange]; - n473 -> n448; - n460 -> n509; - n459 -> n478; - n471 -> n473; - n455 -> n475 [label="F"]; - n475 [label="x", shape=box]; - n475 -> n476; - n476 [label="1", shape=box]; - n476 -> n477; - n477 [label="x + 1", shape=box]; - n477 -> n448; - n501 -> n503; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/multiple-let-with-same-func-name_cfg_before.dot b/Project-02-03-04/mistraltests/before/multiple-let-with-same-func-name_cfg_before.dot deleted file mode 100644 index 2721f8f..0000000 --- a/Project-02-03-04/mistraltests/before/multiple-let-with-same-func-name_cfg_before.dot +++ /dev/null @@ -1,32 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n518 [label="5", shape=box]; - n518 -> n519; - n519 [label="CALL m", shape=box, style=filled, color=orange]; - n519 -> n514; - n514 [label="START m(a)", shape=box, style=filled, color=green]; - n514 -> n517; - n517 [label="a", shape=box]; - n517 -> n515; - n515 [label="END m(a)", shape=box, style=filled, color=green]; - n515 -> n521; - n521 [label="RET m", shape=box, style=filled, color=orange]; - n521 -> n529; - n529 [label="5", shape=box]; - n529 -> n530; - n530 [label="CALL m", shape=box, style=filled, color=orange]; - n530 -> n523; - n523 [label="START m(b)", shape=box, style=filled, color=green]; - n523 -> n526; - n526 [label="b", shape=box]; - n526 -> n527; - n527 [label="1", shape=box]; - n527 -> n528; - n528 [label="b + 1", shape=box]; - n528 -> n524; - n524 [label="END m(b)", shape=box, style=filled, color=green]; - n524 -> n532; - n532 [label="RET m", shape=box, style=filled, color=orange]; - n530 -> n532; - n519 -> n521; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/multiple-let_cfg_before.dot b/Project-02-03-04/mistraltests/before/multiple-let_cfg_before.dot deleted file mode 100644 index f9fa565..0000000 --- a/Project-02-03-04/mistraltests/before/multiple-let_cfg_before.dot +++ /dev/null @@ -1,42 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n540 [label="5", shape=box]; - n540 -> n541; - n541 [label="CALL n", shape=box, style=filled, color=orange]; - n541 -> n536; - n536 [label="START n(a)", shape=box, style=filled, color=green]; - n536 -> n539; - n539 [label="a", shape=box]; - n539 -> n537; - n537 [label="END n(a)", shape=box, style=filled, color=green]; - n537 -> n543; - n543 [label="RET n", shape=box, style=filled, color=orange]; - n543 -> n551; - n551 [label="5", shape=box]; - n551 -> n552; - n552 [label="CALL n", shape=box, style=filled, color=orange]; - n552 -> n536; - n552 -> n554; - n554 [label="RET n", shape=box, style=filled, color=orange]; - n554 -> n555; - n555 [label="5", shape=box]; - n555 -> n556; - n556 [label="CALL m", shape=box, style=filled, color=orange]; - n556 -> n545; - n545 [label="START m(a)", shape=box, style=filled, color=green]; - n545 -> n548; - n548 [label="a", shape=box]; - n548 -> n549; - n549 [label="1", shape=box]; - n549 -> n550; - n550 [label="a + 1", shape=box]; - n550 -> n546; - n546 [label="END m(a)", shape=box, style=filled, color=green]; - n546 -> n558; - n558 [label="RET m", shape=box, style=filled, color=orange]; - n558 -> n559; - n559 [label="n(5) + m(5)", shape=box]; - n556 -> n558; - n537 -> n554; - n541 -> n543; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/or_cfg_before.dot b/Project-02-03-04/mistraltests/before/or_cfg_before.dot deleted file mode 100644 index fdb47a7..0000000 --- a/Project-02-03-04/mistraltests/before/or_cfg_before.dot +++ /dev/null @@ -1,18 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n563 [label="True", shape=box]; - n563 -> n564; - n564 [label="True", shape=box]; - n564 -> n565; - n565 [label="True", shape=box]; - n565 -> n566; - n566 [label="True == True", shape=box]; - n566 -> n567; - n567 [label="True || (True == True)", shape=box]; - n567 -> n568; - n568 [label="", shape=diamond]; - n568 -> n572 [label="T"]; - n572 [label="1", shape=box]; - n568 -> n573 [label="F"]; - n573 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/p1_cfg_before.dot b/Project-02-03-04/mistraltests/before/p1_cfg_before.dot deleted file mode 100644 index 0d70588..0000000 --- a/Project-02-03-04/mistraltests/before/p1_cfg_before.dot +++ /dev/null @@ -1,19 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n582 [label="5", shape=box]; - n582 -> n583; - n583 [label="CALL g", shape=box, style=filled, color=orange]; - n583 -> n576; - n576 [label="START g(a)", shape=box, style=filled, color=green]; - n576 -> n579; - n579 [label="a", shape=box]; - n579 -> n580; - n580 [label="a", shape=box]; - n580 -> n581; - n581 [label="a * a", shape=box]; - n581 -> n577; - n577 [label="END g(a)", shape=box, style=filled, color=green]; - n577 -> n585; - n585 [label="RET g", shape=box, style=filled, color=orange]; - n583 -> n585; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/p2_cfg_before.dot b/Project-02-03-04/mistraltests/before/p2_cfg_before.dot deleted file mode 100644 index 8a13933..0000000 --- a/Project-02-03-04/mistraltests/before/p2_cfg_before.dot +++ /dev/null @@ -1,36 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n606 [label="10", shape=box]; - n606 -> n607; - n607 [label="CALL f1", shape=box, style=filled, color=orange]; - n607 -> n589; - n589 [label="START f1(b)", shape=box, style=filled, color=green]; - n589 -> n592; - n592 [label="b", shape=box]; - n592 -> n593; - n593 [label="0", shape=box]; - n593 -> n594; - n594 [label="b == 0", shape=box]; - n594 -> n595; - n595 [label="", shape=diamond]; - n595 -> n599 [label="T"]; - n599 [label="0", shape=box]; - n599 -> n590; - n590 [label="END f1(b)", shape=box, style=filled, color=green]; - n590 -> n605; - n605 [label="RET f1", shape=box, style=filled, color=orange]; - n605 -> n590; - n590 -> n609; - n609 [label="RET f1", shape=box, style=filled, color=orange]; - n595 -> n600 [label="F"]; - n600 [label="b", shape=box]; - n600 -> n601; - n601 [label="1", shape=box]; - n601 -> n602; - n602 [label="b - 1", shape=box]; - n602 -> n603; - n603 [label="CALL f1", shape=box, style=filled, color=orange]; - n603 -> n589; - n603 -> n605; - n607 -> n609; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/p3_cfg_before.dot b/Project-02-03-04/mistraltests/before/p3_cfg_before.dot deleted file mode 100644 index aca2b20..0000000 --- a/Project-02-03-04/mistraltests/before/p3_cfg_before.dot +++ /dev/null @@ -1,123 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n662 [label="10", shape=box]; - n662 -> n663; - n663 [label="CALL f1", shape=box, style=filled, color=orange]; - n663 -> n613; - n613 [label="START f1(b)", shape=box, style=filled, color=green]; - n613 -> n618; - n618 [label="b", shape=box]; - n618 -> n619; - n619 [label="0", shape=box]; - n619 -> n620; - n620 [label="b == 0", shape=box]; - n620 -> n621; - n621 [label="", shape=diamond]; - n621 -> n625 [label="T"]; - n625 [label="0", shape=box]; - n625 -> n614; - n614 [label="END f1(b)", shape=box, style=filled, color=green]; - n614 -> n631; - n631 [label="RET f1", shape=box, style=filled, color=orange]; - n631 -> n614; - n614 -> n642; - n642 [label="RET f1", shape=box, style=filled, color=orange]; - n642 -> n655; - n655 [label="a", shape=box]; - n655 -> n656; - n656 [label="b", shape=box]; - n656 -> n657; - n657 [label="a * b", shape=box]; - n657 -> n658; - n658 [label="CALL g", shape=box, style=filled, color=orange]; - n658 -> n647; - n647 [label="START g(c)", shape=box, style=filled, color=green]; - n647 -> n650; - n650 [label="a", shape=box]; - n650 -> n651; - n651 [label="b", shape=box]; - n651 -> n652; - n652 [label="a * b", shape=box]; - n652 -> n653; - n653 [label="c", shape=box]; - n653 -> n654; - n654 [label="(a * b) * c", shape=box]; - n654 -> n648; - n648 [label="END g(c)", shape=box, style=filled, color=green]; - n648 -> n660; - n660 [label="RET g", shape=box, style=filled, color=orange]; - n660 -> n616; - n616 [label="END f2(a, b)", shape=box, style=filled, color=green]; - n616 -> n688; - n688 [label="RET f2", shape=box, style=filled, color=orange]; - n658 -> n660; - n614 -> n646; - n646 [label="RET f1", shape=box, style=filled, color=orange]; - n646 -> n655; - n614 -> n665; - n665 [label="RET f1", shape=box, style=filled, color=orange]; - n665 -> n667; - n667 [label="10", shape=box]; - n667 -> n680; - n680 [label="20", shape=box]; - n680 -> n681; - n681 [label="30", shape=box]; - n681 -> n682; - n682 [label="CALL max", shape=box, style=filled, color=orange]; - n682 -> n668; - n668 [label="START max(a, b)", shape=box, style=filled, color=green]; - n668 -> n671; - n671 [label="a", shape=box]; - n671 -> n672; - n672 [label="b", shape=box]; - n672 -> n673; - n673 [label="a > b", shape=box]; - n673 -> n674; - n674 [label="", shape=diamond]; - n674 -> n678 [label="T"]; - n678 [label="a", shape=box]; - n678 -> n669; - n669 [label="END max(a, b)", shape=box, style=filled, color=green]; - n669 -> n684; - n684 [label="RET max", shape=box, style=filled, color=orange]; - n684 -> n686; - n686 [label="CALL f2", shape=box, style=filled, color=orange]; - n686 -> n615; - n615 [label="START f2(a, b)", shape=box, style=filled, color=green]; - n615 -> n632; - n632 [label="a", shape=box]; - n632 -> n633; - n633 [label="b", shape=box]; - n633 -> n634; - n634 [label="a > b", shape=box]; - n634 -> n635; - n635 [label="", shape=diamond]; - n635 -> n639 [label="T"]; - n639 [label="a", shape=box]; - n639 -> n640; - n640 [label="CALL f1", shape=box, style=filled, color=orange]; - n640 -> n613; - n640 -> n642; - n635 -> n643 [label="F"]; - n643 [label="b", shape=box]; - n643 -> n644; - n644 [label="CALL f1", shape=box, style=filled, color=orange]; - n644 -> n613; - n644 -> n646; - n686 -> n688; - n674 -> n679 [label="F"]; - n679 [label="b", shape=box]; - n679 -> n669; - n682 -> n684; - n621 -> n626 [label="F"]; - n626 [label="b", shape=box]; - n626 -> n627; - n627 [label="1", shape=box]; - n627 -> n628; - n628 [label="b - 1", shape=box]; - n628 -> n629; - n629 [label="CALL f1", shape=box, style=filled, color=orange]; - n629 -> n613; - n629 -> n631; - n663 -> n665; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/p4_cfg_before.dot b/Project-02-03-04/mistraltests/before/p4_cfg_before.dot deleted file mode 100644 index 7b0bba4..0000000 --- a/Project-02-03-04/mistraltests/before/p4_cfg_before.dot +++ /dev/null @@ -1,23 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n698 [label="10", shape=box]; - n698 -> n699; - n699 [label="8", shape=box]; - n699 -> n700; - n700 [label="CALL func", shape=box, style=filled, color=orange]; - n700 -> n691; - n691 [label="START func(a, b)", shape=box, style=filled, color=green]; - n691 -> n694; - n694 [label="b", shape=box]; - n694 -> n695; - n695 [label="1", shape=box]; - n695 -> n696; - n696 [label="b + 1", shape=box]; - n696 -> n697; - n697 [label="a = (b + 1)", shape=box]; - n697 -> n692; - n692 [label="END func(a, b)", shape=box, style=filled, color=green]; - n692 -> n702; - n702 [label="RET func", shape=box, style=filled, color=orange]; - n700 -> n702; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/p6_cfg_before.dot b/Project-02-03-04/mistraltests/before/p6_cfg_before.dot deleted file mode 100644 index 47befda..0000000 --- a/Project-02-03-04/mistraltests/before/p6_cfg_before.dot +++ /dev/null @@ -1,101 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n762 [label="2", shape=box]; - n762 -> n763; - n763 [label="3", shape=box]; - n763 -> n764; - n764 [label="CALL f", shape=box, style=filled, color=orange]; - n764 -> n712; - n712 [label="START f(a, b)", shape=box, style=filled, color=green]; - n712 -> n717; - n717 [label="a", shape=box]; - n717 -> n718; - n718 [label="0", shape=box]; - n718 -> n719; - n719 [label="a == 0", shape=box]; - n719 -> n720; - n720 [label="", shape=diamond]; - n720 -> n724 [label="T"]; - n724 [label="2", shape=box]; - n724 -> n725; - n725 [label="b", shape=box]; - n725 -> n726; - n726 [label="2 + b", shape=box]; - n726 -> n713; - n713 [label="END f(a, b)", shape=box, style=filled, color=green]; - n713 -> n760; - n760 [label="RET f", shape=box, style=filled, color=orange]; - n760 -> n761; - n761 [label="c * f((c - 1),d)", shape=box]; - n761 -> n728; - n728 [label="END g(a, c)", shape=box, style=filled, color=green]; - n728 -> n740; - n740 [label="RET g", shape=box, style=filled, color=orange]; - n740 -> n741; - n741 [label="2 + g(a,b)", shape=box]; - n741 -> n713; - n728 -> n772; - n772 [label="RET g", shape=box, style=filled, color=orange]; - n713 -> n766; - n766 [label="RET f", shape=box, style=filled, color=orange]; - n766 -> n768; - n768 [label="3", shape=box]; - n768 -> n769; - n769 [label="2", shape=box]; - n769 -> n770; - n770 [label="CALL g", shape=box, style=filled, color=orange]; - n770 -> n727; - n727 [label="START g(a, c)", shape=box, style=filled, color=green]; - n727 -> n730; - n730 [label="a", shape=box]; - n730 -> n731; - n731 [label="c", shape=box]; - n731 -> n732; - n732 [label="a + c", shape=box]; - n732 -> n733; - n733 [label="b", shape=box]; - n733 -> n734; - n734 [label="(a + c) + b", shape=box]; - n734 -> n728; - n727 -> n743; - n743 [label="c", shape=box]; - n743 -> n744; - n744 [label="0", shape=box]; - n744 -> n745; - n745 [label="c == 0", shape=box]; - n745 -> n746; - n746 [label="", shape=diamond]; - n746 -> n750 [label="T"]; - n750 [label="1", shape=box]; - n750 -> n751; - n751 [label="d", shape=box]; - n751 -> n752; - n752 [label="1 + d", shape=box]; - n752 -> n728; - n746 -> n753 [label="F"]; - n753 [label="c", shape=box]; - n753 -> n754; - n754 [label="c", shape=box]; - n754 -> n755; - n755 [label="1", shape=box]; - n755 -> n756; - n756 [label="c - 1", shape=box]; - n756 -> n757; - n757 [label="d", shape=box]; - n757 -> n758; - n758 [label="CALL f", shape=box, style=filled, color=orange]; - n758 -> n712; - n758 -> n760; - n770 -> n772; - n720 -> n735 [label="F"]; - n735 [label="2", shape=box]; - n735 -> n736; - n736 [label="a", shape=box]; - n736 -> n737; - n737 [label="b", shape=box]; - n737 -> n738; - n738 [label="CALL g", shape=box, style=filled, color=orange]; - n738 -> n727; - n738 -> n740; - n764 -> n766; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/side_effect_cfg_before.dot b/Project-02-03-04/mistraltests/before/side_effect_cfg_before.dot deleted file mode 100644 index 992d749..0000000 --- a/Project-02-03-04/mistraltests/before/side_effect_cfg_before.dot +++ /dev/null @@ -1,38 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n792 [label="1", shape=box]; - n792 -> n793; - n793 [label="2", shape=box]; - n793 -> n794; - n794 [label="CALL f", shape=box, style=filled, color=orange]; - n794 -> n775; - n775 [label="START f(x, y)", shape=box, style=filled, color=green]; - n775 -> n785; - n785 [label="5", shape=box]; - n785 -> n786; - n786 [label="CALL g", shape=box, style=filled, color=orange]; - n786 -> n778; - n778 [label="START g(x)", shape=box, style=filled, color=green]; - n778 -> n781; - n781 [label="x", shape=box]; - n781 -> n782; - n782 [label="7", shape=box]; - n782 -> n783; - n783 [label="x + 7", shape=box]; - n783 -> n784; - n784 [label="y = (x + 7)", shape=box]; - n784 -> n779; - n779 [label="END g(x)", shape=box, style=filled, color=green]; - n779 -> n788; - n788 [label="RET g", shape=box, style=filled, color=orange]; - n788 -> n789; - n789 [label="x = g(5)", shape=box]; - n789 -> n791; - n791 [label="y", shape=box]; - n791 -> n776; - n776 [label="END f(x, y)", shape=box, style=filled, color=green]; - n776 -> n796; - n796 [label="RET f", shape=box, style=filled, color=orange]; - n786 -> n788; - n794 -> n796; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/simpleSequence_cfg_before.dot b/Project-02-03-04/mistraltests/before/simpleSequence_cfg_before.dot deleted file mode 100644 index 08a3eb6..0000000 --- a/Project-02-03-04/mistraltests/before/simpleSequence_cfg_before.dot +++ /dev/null @@ -1,57 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n829 [label="3", shape=box]; - n829 -> n830; - n830 [label="CALL f", shape=box, style=filled, color=orange]; - n830 -> n800; - n800 [label="START f(x)", shape=box, style=filled, color=green]; - n800 -> n803; - n803 [label="2", shape=box]; - n803 -> n804; - n804 [label="x", shape=box]; - n804 -> n805; - n805 [label="2 * x", shape=box]; - n805 -> n806; - n806 [label="x = (2 * x)", shape=box]; - n806 -> n807; - n807 [label="x", shape=box]; - n807 -> n808; - n808 [label="0", shape=box]; - n808 -> n809; - n809 [label="x > 0", shape=box]; - n809 -> n810; - n810 [label="", shape=diamond]; - n810 -> n814 [label="T"]; - n814 [label="x", shape=box]; - n814 -> n815; - n815 [label="1", shape=box]; - n815 -> n816; - n816 [label="x - 1", shape=box]; - n816 -> n817; - n817 [label="x = (x - 1)", shape=box]; - n817 -> n819; - n819 [label="x", shape=box]; - n819 -> n820; - n820 [label="0", shape=box]; - n820 -> n821; - n821 [label="x > 0", shape=box]; - n821 -> n822; - n822 [label="", shape=diamond]; - n822 -> n824 [label="T"]; - n824 [label="x", shape=box]; - n824 -> n825; - n825 [label="1", shape=box]; - n825 -> n826; - n826 [label="x - 1", shape=box]; - n826 -> n827; - n827 [label="x = (x - 1)", shape=box]; - n827 -> n819; - n822 -> n801 [label="F"]; - n801 [label="END f(x)", shape=box, style=filled, color=green]; - n801 -> n832; - n832 [label="RET f", shape=box, style=filled, color=orange]; - n810 -> n818 [label="F"]; - n818 [label="x", shape=box]; - n818 -> n819; - n830 -> n832; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/simple_dfa_cfg_before.dot b/Project-02-03-04/mistraltests/before/simple_dfa_cfg_before.dot deleted file mode 100644 index e286ef2..0000000 --- a/Project-02-03-04/mistraltests/before/simple_dfa_cfg_before.dot +++ /dev/null @@ -1,19 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n842 [label="2", shape=box]; - n842 -> n843; - n843 [label="CALL g", shape=box, style=filled, color=orange]; - n843 -> n836; - n836 [label="START g(x, y)", shape=box, style=filled, color=green]; - n836 -> n839; - n839 [label="3", shape=box]; - n839 -> n840; - n840 [label="y = 3", shape=box]; - n840 -> n841; - n841 [label="x", shape=box]; - n841 -> n837; - n837 [label="END g(x, y)", shape=box, style=filled, color=green]; - n837 -> n845; - n845 [label="RET g", shape=box, style=filled, color=orange]; - n843 -> n845; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/simple_if_2_cfg_before.dot b/Project-02-03-04/mistraltests/before/simple_if_2_cfg_before.dot deleted file mode 100644 index 6101c67..0000000 --- a/Project-02-03-04/mistraltests/before/simple_if_2_cfg_before.dot +++ /dev/null @@ -1,14 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n858 [label="True", shape=box]; - n858 -> n859; - n859 [label="False", shape=box]; - n859 -> n860; - n860 [label="True && False", shape=box]; - n860 -> n861; - n861 [label="", shape=diamond]; - n861 -> n865 [label="T"]; - n865 [label="1", shape=box]; - n861 -> n866 [label="F"]; - n866 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/simple_if_3_cfg_before.dot b/Project-02-03-04/mistraltests/before/simple_if_3_cfg_before.dot deleted file mode 100644 index c9e2241..0000000 --- a/Project-02-03-04/mistraltests/before/simple_if_3_cfg_before.dot +++ /dev/null @@ -1,14 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n869 [label="True", shape=box]; - n869 -> n870; - n870 [label="False", shape=box]; - n870 -> n871; - n871 [label="True || False", shape=box]; - n871 -> n872; - n872 [label="", shape=diamond]; - n872 -> n876 [label="T"]; - n876 [label="1", shape=box]; - n872 -> n877 [label="F"]; - n877 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/simple_if_4_cfg_before.dot b/Project-02-03-04/mistraltests/before/simple_if_4_cfg_before.dot deleted file mode 100644 index e5bfdce..0000000 --- a/Project-02-03-04/mistraltests/before/simple_if_4_cfg_before.dot +++ /dev/null @@ -1,14 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n880 [label="1", shape=box]; - n880 -> n881; - n881 [label="2", shape=box]; - n881 -> n882; - n882 [label="1 > 2", shape=box]; - n882 -> n883; - n883 [label="", shape=diamond]; - n883 -> n887 [label="T"]; - n887 [label="1", shape=box]; - n883 -> n888 [label="F"]; - n888 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/simple_if_5_cfg_before.dot b/Project-02-03-04/mistraltests/before/simple_if_5_cfg_before.dot deleted file mode 100644 index db30339..0000000 --- a/Project-02-03-04/mistraltests/before/simple_if_5_cfg_before.dot +++ /dev/null @@ -1,18 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n891 [label="2", shape=box]; - n891 -> n892; - n892 [label="3", shape=box]; - n892 -> n893; - n893 [label="5", shape=box]; - n893 -> n894; - n894 [label="3 + 5", shape=box]; - n894 -> n895; - n895 [label="2 > (3 + 5)", shape=box]; - n895 -> n896; - n896 [label="", shape=diamond]; - n896 -> n900 [label="T"]; - n900 [label="1", shape=box]; - n896 -> n901 [label="F"]; - n901 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/simple_if_6_cfg_before.dot b/Project-02-03-04/mistraltests/before/simple_if_6_cfg_before.dot deleted file mode 100644 index baa632e..0000000 --- a/Project-02-03-04/mistraltests/before/simple_if_6_cfg_before.dot +++ /dev/null @@ -1,22 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n904 [label="1", shape=box]; - n904 -> n905; - n905 [label="2", shape=box]; - n905 -> n906; - n906 [label="1 > 2", shape=box]; - n906 -> n907; - n907 [label="3", shape=box]; - n907 -> n908; - n908 [label="5", shape=box]; - n908 -> n909; - n909 [label="3 < 5", shape=box]; - n909 -> n910; - n910 [label="(1 > 2) || (3 < 5)", shape=box]; - n910 -> n911; - n911 [label="", shape=diamond]; - n911 -> n915 [label="T"]; - n915 [label="1", shape=box]; - n911 -> n916 [label="F"]; - n916 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/simple_if_7_cfg_before.dot b/Project-02-03-04/mistraltests/before/simple_if_7_cfg_before.dot deleted file mode 100644 index f77dcec..0000000 --- a/Project-02-03-04/mistraltests/before/simple_if_7_cfg_before.dot +++ /dev/null @@ -1,18 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n919 [label="2", shape=box]; - n919 -> n920; - n920 [label="0", shape=box]; - n920 -> n921; - n921 [label="2 == 0", shape=box]; - n921 -> n922; - n922 [label="False", shape=box]; - n922 -> n923; - n923 [label="(2 == 0) == False", shape=box]; - n923 -> n924; - n924 [label="", shape=diamond]; - n924 -> n928 [label="T"]; - n928 [label="1", shape=box]; - n924 -> n929 [label="F"]; - n929 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/simple_if_cfg_before.dot b/Project-02-03-04/mistraltests/before/simple_if_cfg_before.dot deleted file mode 100644 index 1973e77..0000000 --- a/Project-02-03-04/mistraltests/before/simple_if_cfg_before.dot +++ /dev/null @@ -1,10 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n849 [label="True", shape=box]; - n849 -> n850; - n850 [label="", shape=diamond]; - n850 -> n854 [label="T"]; - n854 [label="1", shape=box]; - n850 -> n855 [label="F"]; - n855 [label="0", shape=box]; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/square_cfg_before.dot b/Project-02-03-04/mistraltests/before/square_cfg_before.dot deleted file mode 100644 index 563c2da..0000000 --- a/Project-02-03-04/mistraltests/before/square_cfg_before.dot +++ /dev/null @@ -1,19 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n938 [label="10", shape=box]; - n938 -> n939; - n939 [label="CALL square", shape=box, style=filled, color=orange]; - n939 -> n932; - n932 [label="START square(x)", shape=box, style=filled, color=green]; - n932 -> n935; - n935 [label="x", shape=box]; - n935 -> n936; - n936 [label="x", shape=box]; - n936 -> n937; - n937 [label="x * x", shape=box]; - n937 -> n933; - n933 [label="END square(x)", shape=box, style=filled, color=green]; - n933 -> n941; - n941 [label="RET square", shape=box, style=filled, color=orange]; - n939 -> n941; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/validProgram_cfg_before.dot b/Project-02-03-04/mistraltests/before/validProgram_cfg_before.dot deleted file mode 100644 index fc5fa21..0000000 --- a/Project-02-03-04/mistraltests/before/validProgram_cfg_before.dot +++ /dev/null @@ -1,90 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n983 [label="2", shape=box]; - n983 -> n984; - n984 [label="3", shape=box]; - n984 -> n985; - n985 [label="CALL mult", shape=box, style=filled, color=orange]; - n985 -> n945; - n945 [label="START mult(a, b)", shape=box, style=filled, color=green]; - n945 -> n950; - n950 [label="a", shape=box]; - n950 -> n951; - n951 [label="b", shape=box]; - n951 -> n952; - n952 [label="a * b", shape=box]; - n952 -> n946; - n946 [label="END mult(a, b)", shape=box, style=filled, color=green]; - n946 -> n977; - n977 [label="RET mult", shape=box, style=filled, color=orange]; - n977 -> n954; - n954 [label="END inc(a)", shape=box, style=filled, color=green]; - n954 -> n972; - n972 [label="RET inc", shape=box, style=filled, color=orange]; - n972 -> n954; - n954 -> n981; - n981 [label="RET inc", shape=box, style=filled, color=orange]; - n981 -> n948; - n948 [label="END add(a, b)", shape=box, style=filled, color=green]; - n948 -> n992; - n992 [label="RET add", shape=box, style=filled, color=orange]; - n992 -> n993; - n993 [label="CALL add", shape=box, style=filled, color=orange]; - n993 -> n947; - n947 [label="START add(a, b)", shape=box, style=filled, color=green]; - n947 -> n978; - n978 [label="a", shape=box]; - n978 -> n979; - n979 [label="CALL inc", shape=box, style=filled, color=orange]; - n979 -> n953; - n953 [label="START inc(a)", shape=box, style=filled, color=green]; - n953 -> n956; - n956 [label="b", shape=box]; - n956 -> n957; - n957 [label="0", shape=box]; - n957 -> n958; - n958 [label="b != 0", shape=box]; - n958 -> n959; - n959 [label="", shape=diamond]; - n959 -> n963 [label="T"]; - n963 [label="b", shape=box]; - n963 -> n964; - n964 [label="1", shape=box]; - n964 -> n965; - n965 [label="b - 1", shape=box]; - n965 -> n966; - n966 [label="b = (b - 1)", shape=box]; - n966 -> n967; - n967 [label="a", shape=box]; - n967 -> n968; - n968 [label="1", shape=box]; - n968 -> n969; - n969 [label="a + 1", shape=box]; - n969 -> n970; - n970 [label="CALL inc", shape=box, style=filled, color=orange]; - n970 -> n953; - n970 -> n972; - n959 -> n973 [label="F"]; - n973 [label="a", shape=box]; - n973 -> n974; - n974 [label="1", shape=box]; - n974 -> n975; - n975 [label="CALL mult", shape=box, style=filled, color=orange]; - n975 -> n945; - n975 -> n977; - n979 -> n981; - n993 -> n995; - n995 [label="RET add", shape=box, style=filled, color=orange]; - n948 -> n995; - n946 -> n987; - n987 [label="RET mult", shape=box, style=filled, color=orange]; - n987 -> n988; - n988 [label="4", shape=box]; - n988 -> n989; - n989 [label="5", shape=box]; - n989 -> n990; - n990 [label="CALL add", shape=box, style=filled, color=orange]; - n990 -> n947; - n990 -> n992; - n985 -> n987; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/while_2_cfg_before.dot b/Project-02-03-04/mistraltests/before/while_2_cfg_before.dot deleted file mode 100644 index 912d5a3..0000000 --- a/Project-02-03-04/mistraltests/before/while_2_cfg_before.dot +++ /dev/null @@ -1,9 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n1028 [label="True", shape=box]; - n1028 -> n1029; - n1029 [label="", shape=diamond]; - n1029 -> n1031 [label="T"]; - n1031 [label="3", shape=box]; - n1031 -> n1028; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/while_cfg_before.dot b/Project-02-03-04/mistraltests/before/while_cfg_before.dot deleted file mode 100644 index 6d0e4ff..0000000 --- a/Project-02-03-04/mistraltests/before/while_cfg_before.dot +++ /dev/null @@ -1,48 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n1020 [label="10", shape=box]; - n1020 -> n1021; - n1021 [label="8", shape=box]; - n1021 -> n1022; - n1022 [label="CALL func", shape=box, style=filled, color=orange]; - n1022 -> n999; - n999 [label="START func(a, b)", shape=box, style=filled, color=green]; - n999 -> n1002; - n1002 [label="a", shape=box]; - n1002 -> n1003; - n1003 [label="0", shape=box]; - n1003 -> n1004; - n1004 [label="a > 0", shape=box]; - n1004 -> n1005; - n1005 [label="b", shape=box]; - n1005 -> n1006; - n1006 [label="a", shape=box]; - n1006 -> n1007; - n1007 [label="b != a", shape=box]; - n1007 -> n1008; - n1008 [label="(a > 0) && (b != a)", shape=box]; - n1008 -> n1009; - n1009 [label="", shape=diamond]; - n1009 -> n1011 [label="T"]; - n1011 [label="b", shape=box]; - n1011 -> n1012; - n1012 [label="1", shape=box]; - n1012 -> n1013; - n1013 [label="b + 1", shape=box]; - n1013 -> n1014; - n1014 [label="b = (b + 1)", shape=box]; - n1014 -> n1015; - n1015 [label="a", shape=box]; - n1015 -> n1016; - n1016 [label="1", shape=box]; - n1016 -> n1017; - n1017 [label="a - 1", shape=box]; - n1017 -> n1018; - n1018 [label="a = (a - 1)", shape=box]; - n1018 -> n1004; - n1009 -> n1000 [label="F"]; - n1000 [label="END func(a, b)", shape=box, style=filled, color=green]; - n1000 -> n1024; - n1024 [label="RET func", shape=box, style=filled, color=orange]; - n1022 -> n1024; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/wrapped-ggT_cfg_before.dot b/Project-02-03-04/mistraltests/before/wrapped-ggT_cfg_before.dot deleted file mode 100644 index 528bd8e..0000000 --- a/Project-02-03-04/mistraltests/before/wrapped-ggT_cfg_before.dot +++ /dev/null @@ -1,74 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n1075 [label="21", shape=box]; - n1075 -> n1076; - n1076 [label="49", shape=box]; - n1076 -> n1077; - n1077 [label="CALL wrapper", shape=box, style=filled, color=orange]; - n1077 -> n1035; - n1035 [label="START wrapper(a, b)", shape=box, style=filled, color=green]; - n1035 -> n1070; - n1070 [label="0", shape=box]; - n1070 -> n1071; - n1071 [label="CALL ggt", shape=box, style=filled, color=orange]; - n1071 -> n1038; - n1038 [label="START ggt(noneSense)", shape=box, style=filled, color=green]; - n1038 -> n1041; - n1041 [label="a", shape=box]; - n1041 -> n1042; - n1042 [label="b", shape=box]; - n1042 -> n1043; - n1043 [label="a == b", shape=box]; - n1043 -> n1044; - n1044 [label="", shape=diamond]; - n1044 -> n1048 [label="T"]; - n1048 [label="a", shape=box]; - n1048 -> n1039; - n1039 [label="END ggt(noneSense)", shape=box, style=filled, color=green]; - n1039 -> n1073; - n1073 [label="RET ggt", shape=box, style=filled, color=orange]; - n1073 -> n1036; - n1036 [label="END wrapper(a, b)", shape=box, style=filled, color=green]; - n1036 -> n1062; - n1062 [label="RET wrapper", shape=box, style=filled, color=orange]; - n1062 -> n1039; - n1036 -> n1069; - n1069 [label="RET wrapper", shape=box, style=filled, color=orange]; - n1069 -> n1039; - n1036 -> n1079; - n1079 [label="RET wrapper", shape=box, style=filled, color=orange]; - n1044 -> n1049 [label="F"]; - n1049 [label="a", shape=box]; - n1049 -> n1050; - n1050 [label="b", shape=box]; - n1050 -> n1051; - n1051 [label="a > b", shape=box]; - n1051 -> n1052; - n1052 [label="", shape=diamond]; - n1052 -> n1056 [label="T"]; - n1056 [label="a", shape=box]; - n1056 -> n1057; - n1057 [label="b", shape=box]; - n1057 -> n1058; - n1058 [label="a - b", shape=box]; - n1058 -> n1059; - n1059 [label="b", shape=box]; - n1059 -> n1060; - n1060 [label="CALL wrapper", shape=box, style=filled, color=orange]; - n1060 -> n1035; - n1060 -> n1062; - n1052 -> n1063 [label="F"]; - n1063 [label="b", shape=box]; - n1063 -> n1064; - n1064 [label="a", shape=box]; - n1064 -> n1065; - n1065 [label="b - a", shape=box]; - n1065 -> n1066; - n1066 [label="a", shape=box]; - n1066 -> n1067; - n1067 [label="CALL wrapper", shape=box, style=filled, color=orange]; - n1067 -> n1035; - n1067 -> n1069; - n1071 -> n1073; - n1077 -> n1079; -} \ No newline at end of file diff --git a/Project-02-03-04/mistraltests/before/wrapper_cfg_before.dot b/Project-02-03-04/mistraltests/before/wrapper_cfg_before.dot deleted file mode 100644 index 81af31d..0000000 --- a/Project-02-03-04/mistraltests/before/wrapper_cfg_before.dot +++ /dev/null @@ -1,47 +0,0 @@ -digraph CFG { - node [fontname="Helvetica"]; - n1107 [label="4", shape=box]; - n1107 -> n1108; - n1108 [label="10", shape=box]; - n1108 -> n1109; - n1109 [label="CALL wrapper", shape=box, style=filled, color=orange]; - n1109 -> n1083; - n1083 [label="START wrapper(number, threshold)", shape=box, style=filled, color=green]; - n1083 -> n1102; - n1102 [label="number", shape=box]; - n1102 -> n1103; - n1103 [label="CALL square", shape=box, style=filled, color=orange]; - n1103 -> n1086; - n1086 [label="START square(x)", shape=box, style=filled, color=green]; - n1086 -> n1089; - n1089 [label="x", shape=box]; - n1089 -> n1090; - n1090 [label="x", shape=box]; - n1090 -> n1091; - n1091 [label="x * x", shape=box]; - n1091 -> n1092; - n1092 [label="threshold", shape=box]; - n1092 -> n1093; - n1093 [label="(x * x) > threshold", shape=box]; - n1093 -> n1094; - n1094 [label="", shape=diamond]; - n1094 -> n1098 [label="T"]; - n1098 [label="x", shape=box]; - n1098 -> n1087; - n1087 [label="END square(x)", shape=box, style=filled, color=green]; - n1087 -> n1105; - n1105 [label="RET square", shape=box, style=filled, color=orange]; - n1105 -> n1084; - n1084 [label="END wrapper(number, threshold)", shape=box, style=filled, color=green]; - n1084 -> n1111; - n1111 [label="RET wrapper", shape=box, style=filled, color=orange]; - n1094 -> n1099 [label="F"]; - n1099 [label="x", shape=box]; - n1099 -> n1100; - n1100 [label="x", shape=box]; - n1100 -> n1101; - n1101 [label="x * x", shape=box]; - n1101 -> n1087; - n1103 -> n1105; - n1109 -> n1111; -} \ No newline at end of file diff --git a/Project-02-03-04/test_cfg_refactoring.py b/Project-02-03-04/test_cfg_refactoring.py deleted file mode 100644 index 40d7250..0000000 --- a/Project-02-03-04/test_cfg_refactoring.py +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import os -from pathlib import Path - -# Add the current directory to Python path so we can import our modules -sys.path.insert(0, '/home/janniclas/Projekte/Construction-of-Compilers/Project-02-03-04') - -import triplayacc as yacc -import cfg_build -from cfg.CFG import CFG -from cfg.CFG_Node import (CFG_START, CFG_END) - -def test_cfg_refactoring(): - """Test that the CFG refactoring works correctly""" - - test_files = [ - 'example.tripla', - 'simpleSequence.tripla', - 'condition.tripla', - 'factorial.tripla' - ] - - print("Testing CFG refactoring...") - print("=" * 50) - - for filename in test_files: - print(f"\nTesting {filename}...") - - try: - # Reset the global FUNCTIONS registry - cfg_build.FUNCTIONS.clear() - - source = Path(f'triplaprograms/{filename}').read_text() - ast = yacc.parser.parse(source) - - # Create CFG the old way (without AST parameter) - start1 = CFG_START() - end1 = CFG_END() - last1 = ast.cfa(start1, end1) - if last1 is not None: - last1.add_child(end1) - cfg_old = CFG(start1, end1) # Old constructor - dot_old = cfg_old.to_dot() - - # Create CFG the new way (with AST parameter) - cfg_build.FUNCTIONS.clear() - start2 = CFG_START() - end2 = CFG_END() - last2 = ast.cfa(start2, end2) - if last2 is not None: - last2.add_child(end2) - cfg_new = CFG(start2, end2, ast) # New constructor - dot_new = cfg_new.to_dot() - - # Compare the outputs - if dot_old == dot_new: - print(f" ✓ PASS: DOT outputs are identical") - else: - print(f" ✗ FAIL: DOT outputs differ") - print(f" Old length: {len(dot_old)}") - print(f" New length: {len(dot_new)}") - return False - - # Verify basic structure - if 'digraph CFG' not in dot_new: - print(f" ✗ FAIL: Missing graph declaration") - return False - - if '->' not in dot_new: - print(f" ✗ FAIL: Missing edges") - return False - - print(f" ✓ PASS: Basic structure verified") - print(f" ✓ Generated DOT with {len(dot_new)} characters") - - except Exception as e: - print(f" ✗ FAIL: Exception occurred: {e}") - return False - - print("\n" + "=" * 50) - print("✓ All tests passed! CFG refactoring is working correctly.") - return True - -if __name__ == "__main__": - success = test_cfg_refactoring() - sys.exit(0 if success else 1) \ No newline at end of file diff --git a/Project-02-03-04/tramcodes/example.tram b/Project-02-03-04/tramcodes/example.tram new file mode 100644 index 0000000..defb037 --- /dev/null +++ b/Project-02-03-04/tramcodes/example.tram @@ -0,0 +1,42 @@ + GOTO L1 +L2: NOP + CONST 2 + STORE 1 0 + LOAD 1 0 + POP + CONST 3 + STORE 2 0 + LOAD 2 0 + POP + GOTO L3 +L4: NOP + CONST 7 + STORE 0 0 + LOAD 0 0 + POP + LOAD 1 1 + CONST 0 + GT + IFZERO L5 + LOAD 1 1 + INVOKE 1 L4 1 + GOTO L6 +L5: NOP + CONST 8 + STORE 0 0 + LOAD 0 0 +L6: NOP + POP + LOAD 0 0 + RETURN +L3: NOP + LOAD 0 0 + INVOKE 1 L4 0 + LOAD 0 0 + ADD + RETURN +L1: NOP + CONST 2 + CONST 3 + INVOKE 2 L2 0 + HALT