{"id":23879524,"url":"https://github.com/perceptronv/scierra","last_synced_at":"2026-05-13T23:36:20.068Z","repository":{"id":55624754,"uuid":"318576287","full_name":"PerceptronV/scierra","owner":"PerceptronV","description":"A Simulated C++ Interpreter with Recurrent Adaptation","archived":false,"fork":false,"pushed_at":"2023-11-01T06:10:28.000Z","size":400,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-11T13:54:40.455Z","etag":null,"topics":["cpp","cpp-interpreter","gcc-complier","interpreter"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/scierra/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PerceptronV.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-04T16:40:09.000Z","updated_at":"2023-11-01T04:58:23.000Z","dependencies_parsed_at":"2022-08-15T04:50:11.659Z","dependency_job_id":null,"html_url":"https://github.com/PerceptronV/scierra","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/PerceptronV/scierra","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerceptronV%2Fscierra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerceptronV%2Fscierra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerceptronV%2Fscierra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerceptronV%2Fscierra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PerceptronV","download_url":"https://codeload.github.com/PerceptronV/scierra/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerceptronV%2Fscierra/sbom","scorecard":{"id":109113,"data":{"date":"2025-08-11","repo":{"name":"github.com/PerceptronV/scierra","commit":"59bb7997389b2975843625603f3d2ce690a8d137"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/12 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":8,"reason":"binaries present in source code","details":["Warn: binary detected: dist/scierra-0.6.1-py3-none-any.whl:1","Warn: binary detected: scierra/__pycache__/scierra.cpython-37.pyc:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.6.1-beta not signed: https://api.github.com/repos/PerceptronV/scierra/releases/36373435","Warn: release artifact v0.6-beta not signed: https://api.github.com/repos/PerceptronV/scierra/releases/36373032","Warn: release artifact v0.5-beta not signed: https://api.github.com/repos/PerceptronV/scierra/releases/35409631","Warn: release artifact v0.1-beta not signed: https://api.github.com/repos/PerceptronV/scierra/releases/35277036","Warn: release artifact v0.6.1-beta does not have provenance: https://api.github.com/repos/PerceptronV/scierra/releases/36373435","Warn: release artifact v0.6-beta does not have provenance: https://api.github.com/repos/PerceptronV/scierra/releases/36373032","Warn: release artifact v0.5-beta does not have provenance: https://api.github.com/repos/PerceptronV/scierra/releases/35409631","Warn: release artifact v0.1-beta does not have provenance: https://api.github.com/repos/PerceptronV/scierra/releases/35277036"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T11:41:23.197Z","repository_id":55624754,"created_at":"2025-08-15T11:41:23.197Z","updated_at":"2025-08-15T11:41:23.197Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279016887,"owners_count":26085884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","cpp-interpreter","gcc-complier","interpreter"],"created_at":"2025-01-03T23:17:33.692Z","updated_at":"2025-10-13T19:15:15.808Z","avatar_url":"https://github.com/PerceptronV.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Scierra\n\nScierra [_see-eh-rah_] is a **S**imulated **C**++ **I**nt**er**preter with **R**ecurrent **A**daptation.\n\nIn human words, it's an interactive interpreter for C++, which allows you to run and debug your program immediately as you type. Well, basically. But the implementation is slightly trickier. You can read about it more in my [blog post](https://perceptronv.github.io/scierra/langs/2021/01/14/Introducing-Scierra.html).\n\nTo get a quick start, simply launch Scierra on the terminal and type `cout \u003c\u003c \"Hello, World!\";`. Yes, that's a complete C++ program in Scierra!\n\n**WARNING:** Scierra is still under development. Even though many vital aspects of C++ (e.g. function definition, templates, classes) are already supported, Scierra does not handle input statements very well. This is unfortunately keeping Scierra in Beta...\n\n## Navigation\n\n* [Example](#Example)\n* [Installation](#Installation)\n   * [Prerequisites](#Prerequisites)\n   * [Install with PIP](#Install-with-PIP)\n* [Usage](#Usage)\n   * [Quick Start](#Quick-Start)\n   * [Keywords](#Keywords)\n* [Docs](#Docs)\n   * [Anatomy of a C++ Program in Scierra](#Anatomy-of-a-C-Program-in-Scierra)\n   * [Unsupported features](#Unsupported-features)\n* [LICENSE](#LICENSE)\n\n## Example\n\n***A sample program running on the Scierra interpreter:***\n\n```c++\n++\u003e cout \u003c\u003c \"Hello, World!\";\nHello, World!\n++\u003e int factorial(int n){\n\n--\u003e     if (n==1 || n==0)\n\n--\u003e         return 1;\n\n--\u003e     else return n * factorial(n-1);\n\n--\u003e }\n\n++\u003e cout \u003c\u003c \"10 factorial is: \" \u003c\u003c factorial(10);\n10 factorial is: 3628800\n```\n\n## Installation\n\n### Prerequisites:\n\n* **Python** must be **installed** and **added to PATH**.\n   \n   The key ideas of Scierra and it's CLI have been implemented in Python.\n\n* **GCC** (GNU Compiler Collection) must be **installed** and **added to PATH**.\n   \n   This allows Python to access `g++` through the command line. If you're a Linux user, there's a good chance that GCC tools are already included in your distro. Users of other operating systems like Windows or MacOS may need to make additional installations. MinGW has been tested to work with Scierra on Windows.\n\n### Install with PIP\n\nInstall Scierra with PIP using:\n\n    $ pip install scierra\n  \nAfter installation, run Scierra on your terminal using:\n\n    $ scierra\n\n## Usage\n\n### Quick Start\n\nLaunch `scierra` in your terminal, and try pasting in the full sample program below.\n\nNote Scierra's ability to automatically categorise whether the block of code you've just typed belongs to the `main` function section, global declarations section, or preprocessors section (refer to the [anatomy of a C++ program in Scierra](#Anatomy-of-a-C-Program-in-Scierra)). The `\u003cesc\u003e` command closes the interpreter.\n\n```c++\ncout \u003c\u003c \"Hello, World!\\n\";\n#define CYAN \"\\033[36m\"\n#define GREEN \"\\033[32m\"\n#define DEFAULT \"\\033[0m\"\ncout \u003c\u003c GREEN \u003c\u003c \"I am SCIERRA\" \u003c\u003c DEFAULT \u003c\u003c endl;\n\nint factorial(int n){\n    if (n==1 || n==0)\n        return 1;\n    else return n * factorial(n-1);\n}\ncout \u003c\u003c CYAN \u003c\u003c \"10 factorial is: \" \u003c\u003c factorial(10) \u003c\u003c DEFAULT \u003c\u003c endl;\n\n\u003cesc\u003e\n```\n\nBelow is a demo of the above program running in a terminal with Scierra:\n\n![Basic Scierra Demo](static/basic_demo.png \"Scierra Basic Demo\")\n\n### Keywords\n\nType these special keywords at any stage when writing your code to perform special functions.\n\n* `\u003cprint\u003e`: Prints out the code you've written so far.\n\n* `\u003crestart\u003e`: Restarts another interpreter session and forgets all local variables.\n\n* `\u003cesc\u003e`: Terminates Scierra.\n\n#### Code keywords\n\nPut the following keywords at the start of each block of your code for special operations.\n\n* `\u003c`: Using this keyword before a single-lined statement without any semicolons (e.g. `\u003c10+23` or `\u003c\"Hey!\"`) makes Scierra automatically output the evaluated value of the statement. It works with all data types, variables and classes that supports `cout` statements. You can even join multiple outputs together! E.g.\n\n    ```c++\n    ++\u003e int x = 132;\n    \n    ++\u003e \u003c x*7\n    924\n    ++\u003e \u003c x%127 \u003c\u003c x%12 \u003c\u003c \"COOL!\"\n    50COOL!\n    ++\u003e \n    ```\n   \n* `\u003cprep\u003e`: Forcefully specifies that the block of code that you type belongs to the 'preprocessor' section of the program. E.g.\n   \n    ```c++\n    ++\u003e \u003cprep\u003e\n    \n    --\u003e const int Answer_to_Ultimate_Question_of_Life = 42;\n    \n    ++\u003e \n    ```\n    \n   This puts `const int Answer_to_Ultimate_Question_of_Life = 42;` in the 'preprocessors' section. Without the `\u003cprep\u003e` keyword, this statement would be automatically placed in the `main` function by Scierra.\n      \n   Refer to: [Anatomy of a C++ Program in Scierra](#Anatomy-of-a-C-Program-in-Scierra).\n   \n* `\u003cglob\u003e`: Forcefully specifies that the block of code that you type belongs to the 'globals' section of the program.\n      \n   Refer to: [Anatomy of a C++ Program in Scierra](#Anatomy-of-a-C-Program-in-Scierra).\n   \n* `\u003cmain\u003e`: Forcefully specifies that the block of code that you type belongs to the `main` function in the program.\n   \n   Refer to: [Anatomy of a C++ Program in Scierra](#Anatomy-of-a-C-Program-in-Scierra).\n\n## Docs\n\n### Anatomy of a C++ Program in Scierra\n\nScierra divides a C++ program into three distinct sections: the 'preprocessor' section, the 'globals' section, and the 'main' section. Please refer to the [keywords and expressions table](#Keywords-and-Expressions-Table) for the full list of keywords and expressions that Scierra uses to categorise a block of code. However, here is a quick overview:\n\nThe 'preprocessor' section comes at the top of the program. This is where libraries are imported and namespaces are defined. By default in Scierra, the libraries `iostream`, `sstream`, `fstream`, `vector` and `string` are already imported, and the namespace `std` is under use. The 'globals' section is reserved for global class and function declarations, while the 'main' section goes into the `main` function of your C++ program.\n\nWhen you enter a block of code in Scierra, it automatically categorises it into one of these three sections based on syntactical keywords and expressions. You can override this automatic behaviour by using one of the [code keywords](#Code-Keywords).\n\n#### Keywords and Expressions Table\n\nHere is a table showing the different keywords and expressions that Scierra uses to categorise your block of code.\n\n| Preprocessor Section | Globals Section | Main Section |\n| :---: | :---: | :---: |\n| `#include` statement | `class` keyword | _Anything that doesn't fit into the former two sections_ |\n| `#define` statement | `struct` keyword |  |\n| `typedef` keyword | `return` keyword |  |\n| `using` keyword | `void` keyword |  |\n|  | `template` keyword |  |\n|  | `typename` keyword |  |\n\n### Unsupported features\n\nScierra supports most features that come with your installed version of GCC.\n\nHowever, unfortunately the following features are not yet supported by Scierra:\n\n* any expression involving inputs\n\n* lambda expressions\n\n* range-based for loops\n\n## LICENSE\n[Apache License 2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperceptronv%2Fscierra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperceptronv%2Fscierra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperceptronv%2Fscierra/lists"}