scrall


Namescrall JSON
Version 0.6.0 PyPI version JSON
download
home_page
SummaryStarr's Concise Relational Action Language - For Shlaer-Mellor Executable UML
upload_time2023-11-10 18:52:42
maintainer
docs_urlNone
author
requires_python>=3.10
licenseMIT 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.
keywords action language executable uml mbse xuml xtuml platform independent sysml
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Scrall Action Language
Scrall = Starr's Concise Relational Action Language

### Why you need this

You are building or exploring Executable UML models using the Shlaer-Mellor methodology and you need a text language
for specifying actions that:

* perform computations
* access and traverse the class model
* synchronize states
* communicate internally and with external entities

With these qualities:
* platorm independent action sequencing
* platform independent data types
* ability to manipulate both instances and attributres as well as relations (tables)
* conforms to Date and Darwen's formulation of relational and type theory

Scroll down for more about these qualities.

### Installation

Create or use a python 3.10+ environment. Then

% pip install scrall

At this point you can invoke the parser via the command line or from your python script.

#### From your python script

You need this import statement at a minimum:

    from scrall.parse.parser import ScrallParser

You can then either specify a path or a text variable using the appropriate method:

    result = ScrallParser.parse_text(scrall_text=action_text, debug=False)

OR

    result = ScrallParser.parse_file(file_input=path_to_file, debug=False)

Check the code in `parser.py` to verify I haven't changed these parameters on you wihtout updating the readme.

In either case, `result` will be a list of parsed scrall statements. You may find the header of the `visitor.py`
file helpful in interpreting these results.

#### From the command line

This is not the intended usage scenario, but may be helpful for testing or exploration. Since scrall may generate
some diagnostic info you may want to create a fresh working directory and cd into it first. From there...

    % scrall -f somefile.scrall

The .scrall extension is not necessary, but the file must contain scrall text. See this repository's wiki for
more about the scrall language. The grammar is defined in the [scrall.peg](https://github.com/modelint/scrall/blob/master/src/scrall/scrall.peg) file. (if the link breaks after I do some update to the code, 
just browse through the code looking for the scrall.peg file, and let me know so I can fix it)

You can also specify a debug option like this:

    % scrall -f somefile.scrall -D

This will create a scrall-diagnostics folder in your current working directory and deposite a coupel of PDFs defining
the parse of both the scrall grammar: `scrall_parse_tree.pdf` and your supplied text: `scrall_model.pdf`.

You should also see a file named `scrall.log`

### Compatibility

This language is consistent with the [Shlaer Mellor Metamodel](https://github.com/modelint/shlaer-mellor-metamodel),
 another [repository](https://github.com/modelint/class-model-dsl/wiki) on this site. In that repository the metamodel
is used to define a schema for a database where user models can be stored and accessed.

### Older documentation

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.

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "scrall",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "",
    "keywords": "action language,executable uml,mbse,xuml,xtuml,platform independent,sysml",
    "author": "",
    "author_email": "Leon Starr <leon_starr@modelint.com>",
    "download_url": "https://files.pythonhosted.org/packages/29/99/191a891c3dac7f9f68a685d6a5c8c0281dc3681a0be5495bbe5ccbe3c8f7/scrall-0.6.0.tar.gz",
    "platform": null,
    "description": "# Scrall Action Language\nScrall = Starr's Concise Relational Action Language\n\n### Why you need this\n\nYou are building or exploring Executable UML models using the Shlaer-Mellor methodology and you need a text language\nfor specifying actions that:\n\n* perform computations\n* access and traverse the class model\n* synchronize states\n* communicate internally and with external entities\n\nWith these qualities:\n* platorm independent action sequencing\n* platform independent data types\n* ability to manipulate both instances and attributres as well as relations (tables)\n* conforms to Date and Darwen's formulation of relational and type theory\n\nScroll down for more about these qualities.\n\n### Installation\n\nCreate or use a python 3.10+ environment. Then\n\n% pip install scrall\n\nAt this point you can invoke the parser via the command line or from your python script.\n\n#### From your python script\n\nYou need this import statement at a minimum:\n\n    from scrall.parse.parser import ScrallParser\n\nYou can then either specify a path or a text variable using the appropriate method:\n\n    result = ScrallParser.parse_text(scrall_text=action_text, debug=False)\n\nOR\n\n    result = ScrallParser.parse_file(file_input=path_to_file, debug=False)\n\nCheck the code in `parser.py` to verify I haven't changed these parameters on you wihtout updating the readme.\n\nIn either case, `result` will be a list of parsed scrall statements. You may find the header of the `visitor.py`\nfile helpful in interpreting these results.\n\n#### From the command line\n\nThis is not the intended usage scenario, but may be helpful for testing or exploration. Since scrall may generate\nsome diagnostic info you may want to create a fresh working directory and cd into it first. From there...\n\n    % scrall -f somefile.scrall\n\nThe .scrall extension is not necessary, but the file must contain scrall text. See this repository's wiki for\nmore about the scrall language. The grammar is defined in the [scrall.peg](https://github.com/modelint/scrall/blob/master/src/scrall/scrall.peg) file. (if the link breaks after I do some update to the code, \njust browse through the code looking for the scrall.peg file, and let me know so I can fix it)\n\nYou can also specify a debug option like this:\n\n    % scrall -f somefile.scrall -D\n\nThis will create a scrall-diagnostics folder in your current working directory and deposite a coupel of PDFs defining\nthe parse of both the scrall grammar: `scrall_parse_tree.pdf` and your supplied text: `scrall_model.pdf`.\n\nYou should also see a file named `scrall.log`\n\n### Compatibility\n\nThis language is consistent with the [Shlaer Mellor Metamodel](https://github.com/modelint/shlaer-mellor-metamodel),\n another [repository](https://github.com/modelint/class-model-dsl/wiki) on this site. In that repository the metamodel\nis used to define a schema for a database where user models can be stored and accessed.\n\n### Older documentation\n\nNOTE: 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.\n\n### Platform independent action sequencing\n\nThis language is designed to support data flow execution, so that there is no arbitrary sequencing built in. You can transform\nany chunk of action language (a method, operation, or state activity) into a data flow graph where each action may execute\nas soon as all of its inputs are satisfied. So the only sequencing is that demanded by the application, independent of any\nparticular target platform.\n\n### Relational operations supported\nYou can manipulate both instances of classes and relations (tables) interchangeably. Data access is decidely NOT Sql-like. Instead\nC.J. Date's Tutorial D semantics are supported. This means that relational operations are closed under the algebra such that any given\noperation yields a relation, so you can readily nest expressions to specify powerful data manipulation.\n\nClass instances may be converted to relations and vice versa.\n\nSee the wiki on this repository for a full description of the language features.\n\n### UPDATE 2023-7-04\n\nFor the last couple of years all of the primary scrall development has been managed in the class-model-dsl\n(metamodel db) repository. I had it there as a matter of convenience while populating action semantics into the\nShlaer-Mellor metamodel. But the time has come to refactor what is becoming a bit of a monolith over there and\ntoday, I am permanently moving all the latest scrall code back here to its proper home.\n\nWhen the migration is complete, you will be able to grab the latest Scrall parser from PyPI without having to\ndownload the whole Shlaer-Mellor metamodel database populator. This separation is essential since you might want\nto define your own action language and parser to use with the metamodel, or just play with Scrall on its own.\n\nI will post another update when it's ready here and on PyPI. The parser is currently in decent shape, so it's just\na matter of putting a command line interface on it and a bit of packaging.\n",
    "bugtrack_url": null,
    "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. ",
    "summary": "Starr's Concise Relational Action Language - For Shlaer-Mellor Executable UML",
    "version": "0.6.0",
    "project_urls": {
        "documentation": "https://github.com/modelint/scrall/wiki",
        "repository": "https://github.com/modelint/scrall"
    },
    "split_keywords": [
        "action language",
        "executable uml",
        "mbse",
        "xuml",
        "xtuml",
        "platform independent",
        "sysml"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9e1048049f7e0e75cdc0f415b1d28f88773199facbe3c6502b551f3cb8f56a92",
                "md5": "c30c15983a8118d8e0f43ba6be8f3bf6",
                "sha256": "b3fe60da790cebdcb8e78a158efe458c543167b90867ecfb10688bdef4a59b9b"
            },
            "downloads": -1,
            "filename": "scrall-0.6.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c30c15983a8118d8e0f43ba6be8f3bf6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 22674,
            "upload_time": "2023-11-10T18:52:40",
            "upload_time_iso_8601": "2023-11-10T18:52:40.444518Z",
            "url": "https://files.pythonhosted.org/packages/9e/10/48049f7e0e75cdc0f415b1d28f88773199facbe3c6502b551f3cb8f56a92/scrall-0.6.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2999191a891c3dac7f9f68a685d6a5c8c0281dc3681a0be5495bbe5ccbe3c8f7",
                "md5": "48be2d183bcb24c0b2ae6e0593175166",
                "sha256": "d7e3a5d0bbad2cee1d2078d5af2bed9a314b335afd5b55b95ca89c40f845a924"
            },
            "downloads": -1,
            "filename": "scrall-0.6.0.tar.gz",
            "has_sig": false,
            "md5_digest": "48be2d183bcb24c0b2ae6e0593175166",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 25765,
            "upload_time": "2023-11-10T18:52:42",
            "upload_time_iso_8601": "2023-11-10T18:52:42.259254Z",
            "url": "https://files.pythonhosted.org/packages/29/99/191a891c3dac7f9f68a685d6a5c8c0281dc3681a0be5495bbe5ccbe3c8f7/scrall-0.6.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-10 18:52:42",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "modelint",
    "github_project": "scrall",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "scrall"
}
        
Elapsed time: 0.13583s