Metadata-Version: 2.1
Name: scrall
Version: 0.2.7
Summary: Starr's Concise Relational Action Language - For Shlaer-Mellor Executable UML
Author-email: Leon Starr <leon_starr@modelint.com>
License: MIT License
        
        Copyright (c) 2019-2023 Leon Starr
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: repository, https://github.com/modelint/scrall
Project-URL: documentation, https://github.com/modelint/scrall/wiki
Keywords: action language,executable uml,mbse,xuml,xtuml,platform independent,sysml
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Provides-Extra: build
Provides-Extra: dev
License-File: LICENSE

# Scrall Action Language
Scrall = Starr's Concise Relational Action Language

This is an action language that supports Shlaer-Mellor executable UML. It allows you to specify computation
inside states, methods, and external entity operations.

This language is consistent with the [Shlaer Mellor Metamodel](https://github.com/modelint/shlaer-mellor-metamodel),
 another repository on this site.

NOTE: If you have the Scrall version 1.0.0 PDF, consider it superceded by the wiki on this site where the language spec is now maintained and updated.

### Platform independent action sequencing

This language is designed to support data flow execution, so that there is no arbitrary sequencing built in. You can transform
any chunk of action language (a method, operation, or state activity) into a data flow graph where each action may execute
as soon as all of its inputs are satisfied. So the only sequencing is that demanded by the application, independent of any
particular target platform.

### Relational operations supported
You can manipulate both instances of classes and relations (tables) interchangeably. Data access is decidely NOT Sql-like. Instead
C.J. Date's Tutorial D semantics are supported. This means that relational operations are closed under the algebra such that any given
operation yields a relation, so you can readily nest expressions to specify powerful data manipulation.

Class instances may be converted to relations and vice versa.

See the wiki on this repository for a full description of the language features.

### UPDATE 2023-7-04

For the last couple of years all of the primary scrall development has been managed in the class-model-dsl
(metamodel db) repository. I had it there as a matter of convenience while populating action semantics into the
Shlaer-Mellor metamodel. But the time has come to refactor what is becoming a bit of a monolith over there and
today, I am permanently moving all the latest scrall code back here to its proper home.

When the migration is complete, you will be able to grab the latest Scrall parser from PyPI without having to
download the whole Shlaer-Mellor metamodel database populator. This separation is essential since you might want
to define your own action language and parser to use with the metamodel, or just play with Scrall on its own.

I will post another update when it's ready here and on PyPI. The parser is currently in decent shape, so it's just
a matter of putting a command line interface on it and a bit of packaging.
