{"id":13782852,"url":"https://github.com/knordman/esstee","last_synced_at":"2025-05-11T16:33:10.637Z","repository":{"id":14884006,"uuid":"17607632","full_name":"knordman/esstee","owner":"knordman","description":"Structured Text (ST) Interpreter","archived":false,"fork":false,"pushed_at":"2024-12-18T20:33:01.000Z","size":635,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-18T21:30:36.851Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/knordman.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":"2014-03-10T20:38:33.000Z","updated_at":"2024-12-18T20:33:06.000Z","dependencies_parsed_at":"2022-08-03T04:06:34.956Z","dependency_job_id":null,"html_url":"https://github.com/knordman/esstee","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knordman%2Fesstee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knordman%2Fesstee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knordman%2Fesstee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knordman%2Fesstee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/knordman","download_url":"https://codeload.github.com/knordman/esstee/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253595973,"owners_count":21933484,"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","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":[],"created_at":"2024-08-03T18:01:46.278Z","updated_at":"2025-05-11T16:33:10.622Z","avatar_url":"https://github.com/knordman.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# esstee\n\nesstee is an interpreter written in C (GNU C99), currently under work, for the\nStructured Text (ST) programming language. Structured Text is one of the five\nlanguages defined in the IEC-61131-3 standard, and used a lot in the automation\nindustry.\n\nThe aim of esstee is to provide a, \"free as in freedom\", platform for building\nbetter testing and debug tools for ST applications.\n\nesstee is licensed under GPLv3. Besides Bison and Flex, esstee has no external\ndependencies besides the header libraries included in the source. Compiling has\nso far only been tested under Debian, but should work without problems in any\nLinux distro.\n\n## Quick Start\n\nThe first milestone of esstee is to provide a library that allows ST syntax to\nbe parsed into a representation which can be stepped/run. The public interface\nto the library is defined in `src/esstee/esstee.h`.\n\nCurrently, the parsing step of the library is complete (Flex and Bison grammar).\nIn addition there is support for types (elementary, derived and complex), all\nstatements and expressions, however it is not yet properly tested (automatic\nintegration tests not ready), and should be considered as **under work**.\n\nA simple test program using the library interface (and building all the current\ncode) can be built by;\n\n```\nmake build/program-tester\n```\n\nThe program parses ST syntax from a file, then executes possible \"pre\" queries\non the runnable representation, runs N cycles and finally executes possible\n\"post\" queries. A query is either a variable reference or an assignment. The\nprogram takes the following options:\n\n- **file** the file to parse\n- **program** the `PROGRAM` in the file that is to be run (a file may contain multiple programs)\n- **pre-run-queries** the queries to run right after parsing\n- **run-cycles** number of cycles to run (default 1)\n- **post-run-queries** the queries to run after the cycles have been run\n\nIn pre and post queries, access the program variables by prefixing with `[name-of-program]`.\n\nAn example:\n\n```\n./build/program-tester --file=\"src/tests/programs/example.ST\" --program=\"testprgm\" --pre-run-queries=\"[testprgm].a:=10*5+1\" --post-run-queries=\"[testprgm].a\"\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknordman%2Fesstee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fknordman%2Fesstee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknordman%2Fesstee/lists"}