{"id":17263815,"url":"https://github.com/thetasinner/echelon-unicode-parser","last_synced_at":"2025-10-13T20:07:07.503Z","repository":{"id":98834564,"uuid":"128999859","full_name":"ThetaSinner/echelon-unicode-parser","owner":"ThetaSinner","description":"Experimental parser which can process unicode input","archived":false,"fork":false,"pushed_at":"2018-08-12T13:59:09.000Z","size":548,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-26T10:48:21.071Z","etag":null,"topics":["parser","parsing","unicode"],"latest_commit_sha":null,"homepage":"http://echelon-lang.org/","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/ThetaSinner.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-10T22:00:06.000Z","updated_at":"2018-08-12T13:59:10.000Z","dependencies_parsed_at":"2023-03-13T15:54:18.593Z","dependency_job_id":null,"html_url":"https://github.com/ThetaSinner/echelon-unicode-parser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ThetaSinner/echelon-unicode-parser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThetaSinner%2Fechelon-unicode-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThetaSinner%2Fechelon-unicode-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThetaSinner%2Fechelon-unicode-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThetaSinner%2Fechelon-unicode-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ThetaSinner","download_url":"https://codeload.github.com/ThetaSinner/echelon-unicode-parser/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThetaSinner%2Fechelon-unicode-parser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279016929,"owners_count":26085905,"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":["parser","parsing","unicode"],"created_at":"2024-10-15T07:57:39.732Z","updated_at":"2025-10-13T20:07:07.469Z","avatar_url":"https://github.com/ThetaSinner.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# echelon-unicode-parser\n\nThe unicode specification can be found [here](http://www.unicode.org/versions/latest/)\n\n#### Building the project in the development environtment (eupenv)\nThe develoment environment needs to be built first. See instructions below.\n\nRun the (PowerShell) command\n```cmd\ndocker run -it -v ${pwd}:/development --name myeupenv eupenv:latest\n```\nThis launches a terminal. You're now in the latest Debian docker image with Gradle and GCC 7.3.0 configured.\n\nNow, inside the environment, the project can be build by running\n```cmd\n/opt/gradle/gradle-4.9/bin/gradle assemble\n```\n\nIf you're going to use GDB inside the container you'll need to add some extra flags when you create the container.\nThese will give the container extra privileges to allow GDB to work\n```cmd\ndocker run -it -v ${pwd}:/development --name myeupenv --cap-add=SYS_PTRACE --security-opt seccomp=unconfined eupenv:latest\n```\n\n#### Building the development environment\n\u003ePlease be aware that the image contains the Oracle JDK (java is needed for Gradle). In order to build the image without user intervention it automatically accepts the Oracle JDK license agreement. So by building the image you are effectively accepting the license agreement. If you wish to review it, you can find it [here](http://www.oracle.com/technetwork/java/javase/terms/license/index.html).\n\nOpen a terminal in the ```env``` directory and run\n```cmd\ndocker build . -t eupenv --cpuset-cpus=\"0-3\"\n```\nThis will build the development machine image from the dockerfile. It will be called eupenv and attempt to use 4 CPUs.\n\nThe image should now be ready to use.\n\n#### Developing in VSCode\n\nIf you want the annoying squigly green lines under your system headers includes to go away. Or just want intelliSense to work! Then the simplest way to do that is to install the VC++ build tools, reboot and just do what VSCode asks.\nThis does mean you're coding against the Visual C++ headers and building against the GCC headers but let's hope that the ISO standard behind C++ works out. You're also welcome to ignore the docker environment and just build against VC++, but any issues you run into you'll have to figure out for yourself.\n\n#### Developing in Visual Studio\n\nThis is currently the only way the project can be debugged graphically. If you've got a simple problem then GDB is available in the linux docker container.\n\nInstalling the Community edition of Visual Studio will result in Gradle being unable to locate VS tools. You need to include the C++ desktop development package from the VS installer. Gradle will actually use a tool in the installer to locate the tools it needs.\n\nIf you have problems building on VC++ then enable debug mode for Gradle using `gradle build --debug`. Looking through the logs should help to identify what Gradle is actually doing and lead you to a solution, or at least help from the internet.\n\nNone of the tests or benchmarks can be used on Windows at the moment. The Google tools they depend on need to be built with CMake and I've had no need to put myself through that yet, hence - no example or instructions for doing this are provided. This means that the test and benchmark binaries are not built when Gradle is running on Windows.\n\n#### Benchmarking\n\nWhen you build the project a benchmark executable is built. It uses Google's C++ [benchmark](https://github.com/google/benchmark) tool to do the timing.\n\nInside the bench directory you'll find 3 shell scripts.\n\n| Name             | Description                                                                                  |\n|------------------|----------------------------------------------------------------------------------------------|\n| run-bench.sh     | Runs the benchmark executable and captures results into a results file ending in `_dev.json` |\n| compare-bench.sh | Compares the `_dev.json` to the accepted results and prints the results for comparison       |\n| save-bench.sh    | To update the accepted results this copies the `_dev.json` results to the accepted results   |\n\nThe dev results are ignored, and the accepted results are version controlled.\n\n#### Things to fix\n- The PATH variable in the eupenv is only set in the build session. Which means you have to reference ```/opt/gradle/gradle-4.6/bin/gradle``` when using the image.\n- VSCode runs outside the eupenv, so it can't use the header files from in there for intelliSense. Possibly I can map the directory containing the headers from the image.\n- Get Gradle to use gcc-7.3.0 rather than the default system gcc in the eupenv. It works perfectly with the default, but throws a fit when you ask it to use the custom build. One possibility is that I uninstall the default gcc before installing the new one - configured without a prefix.\n- Build google test into the docker image so it doesn't need to be checked in.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthetasinner%2Fechelon-unicode-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthetasinner%2Fechelon-unicode-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthetasinner%2Fechelon-unicode-parser/lists"}