diff --git a/docs/images/README.md b/docs/images/README.md new file mode 100644 index 00000000..f5bd9f64 --- /dev/null +++ b/docs/images/README.md @@ -0,0 +1,49 @@ +# Project Architecture Components + +This document describes the components of our project architecture as depicted in the block diagram. + +## Element API + +The Element API is the main interface for interacting with the system. It provides a way to override signals, declare elements, handle queries, and manage states. The API allows users to define custom signals that can be triggered by events in the system. It also provides a way to declare new elements, which can be used to define the system's behavior. The API supports queries, which allow users to retrieve information about the system's state. Finally, the API provides a way to manage the system's states, which represent the different modes of operation that the system can be in. + +## Specification + +The Specification component defines the structure and behavior of the elements in the system. It includes the specification table, which stores information about the elements and their states. The specification table is a data structure that contains information about the elements, such as their names, types, and properties. It also stores the current state of each element, as well as any historical state information. The arrows in and out of the Specification box represent the flow of data and state information between the Specification component and the other components in the system. + +## Warehouse + +The Warehouse is responsible for storing and managing the element instances and their statistics. It provides methods for querying and updating the element instances. The Warehouse component maintains a database of element instances, along with their associated statistics and metadata. The arrows in and out of the Warehouse box represent the flow of data and commands between the Warehouse and the other components in the system. + +## Tree + +The Tree component manages the hierarchy of element instances and their relationships. It provides methods for adding, removing, and querying element instances in the tree. The Tree component maintains a hierarchical structure of the element instances, representing their relationships and dependencies. The arrows in and out of the Tree box represent the flow of data and commands between the Tree and the other components in the system. + +## Library Elements + +The Library Elements component provides a set of predefined element classes that can be used in the system. These element classes can be extended or customized as needed. The Library Elements component provides a set of pre-built element classes that can be used to create new element instances in the system. These element classes define the structure and behavior of the elements, as well as any default values or settings. The arrows in and out of the Library Elements box represent the flow of data and element classes between the Library Elements and the other components in the system. + +## Plugin Elements + +The Plugin Elements component allows for the integration of third-party elements into the system. These elements can be used alongside the library elements to extend the functionality of the system. The Plugin Elements component provides a way to integrate external elements into the system, allowing for the addition of new functionality or features. The arrows in and out of the Plugin Elements box represent the flow of data and commands between the Plugin Elements and the other components in the system. + +## Symbol Table + +The Symbol Table component provides a mapping of element instance IDs to their corresponding element instances. It allows for quick lookup and identification of element instances in the system. The Symbol Table component maintains a mapping of element instance IDs to their corresponding element instances, allowing for efficient lookup and identification of element instances in the system. The arrows in and out of the Symbol Table box represent the flow of data and ID mappings between the Symbol Table and the other components in the system. + + +## Scheduler +The Scheduler component manages the execution of commands and tasks in the system. It provides methods for scheduling and executing commands in a timely manner. The Scheduler component manages the execution of commands and tasks in the system, ensuring that they are executed in the correct order and at the right time. The arrows in and out of the Scheduler box represent the flow of commands and task information between the Scheduler and the other components in the system. + +## Parser + +The Parser component is responsible for parsing and interpreting the syntax tree nodes in the system. It provides methods for building and analyzing syntax trees. The Parser component takes in syntax tree nodes and converts them into a format that can be interpreted and executed by the system. The arrows in and out of the Parser box represent the flow of syntax tree nodes and parsed data between the Parser and the other components in the system. + +## Interpreter + +The Interpreter component manages the system's call stack and executes the syntax tree generated by the Parser. The interpreter provides methods for executing syntax tree nodes and managing the call stack. It also provides a way to handle exceptions and errors that may occur during execution. + +## Monitor +The Monitor component provides status signals and monitors the system's performance. It also provides a way to monitor the system's performance and identify bottlenecks or other issues. + + +The arrows in the diagram represent the flow of data and control between the components. For example, the Element API sends commands to the Scheduler, which then executes them in the context of the system. Similarly, the Parser sends a syntax tree to the Interpreter, which then executes it. The Warehouse and Tree components interact with various other components to store and retrieve element instances and their associated information. \ No newline at end of file