{"id":26895887,"url":"https://github.com/mittelmark/yeti","last_synced_at":"2026-02-07T09:32:25.858Z","repository":{"id":141948972,"uuid":"412700023","full_name":"mittelmark/yeti","owner":"mittelmark","description":"Yeti - parser and scanner generator for Tcl","archived":false,"fork":false,"pushed_at":"2023-02-02T15:33:34.000Z","size":260,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-04T01:49:58.764Z","etag":null,"topics":["parser","parser-generator","scanner","scanner-generator","tcl"],"latest_commit_sha":null,"homepage":"","language":"Tcl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mittelmark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2021-10-02T05:30:51.000Z","updated_at":"2024-11-16T19:36:45.000Z","dependencies_parsed_at":"2023-03-13T09:15:13.852Z","dependency_job_id":null,"html_url":"https://github.com/mittelmark/yeti","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mittelmark/yeti","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mittelmark%2Fyeti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mittelmark%2Fyeti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mittelmark%2Fyeti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mittelmark%2Fyeti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mittelmark","download_url":"https://codeload.github.com/mittelmark/yeti/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mittelmark%2Fyeti/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29191405,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T07:37:03.739Z","status":"ssl_error","status_checked_at":"2026-02-07T07:37:03.029Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","parser-generator","scanner","scanner-generator","tcl"],"created_at":"2025-04-01T02:58:58.829Z","updated_at":"2026-02-07T09:32:25.845Z","avatar_url":"https://github.com/mittelmark.png","language":"Tcl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Yeti - parser and scanner generator for Tcl\n\n\nThis is a fork of the yeti package of Frank Pilhofer. The package has vanished\nfrom the internet. See the [Tcl Wiki](https://wiki.tcl-lang.org/page/Yeti) for\nmore details. I added a few bugfixes, removed the tcl++ support and bumpbed\nthe package version to 0.5 to distinguish it clearly from the Frank Pilhofer's\nversion. The Copyright stays at it is, a BSD License. Then the code was backported\nusing a version from Steve Havelka which fixed an issue in yeti.tcl and who removed\ntcl++ support. So the version is now 0.4.2 - the same which is available in LUCK.\n\nThe itcl++ compatible code generation was now removed but you can your self\nadd the catch below your self on top if you need this.\n\n```tcl\nif {[catch {package require Itcl}]} {\n    if {[file exists [file join [file dirname [info script]] .. tcl++]]} {\n        lappend auto_path [file join [file dirname [info script]] ..]\n    } elseif {[file exists [file join [file dirname [info script]] tcl++]]} {\n        lappend auto_path [file dirname [info script]]\n    }\n    package require tcl++\n    interp alias {} itcl::class {} tcl++::class\n}\n```\n\nThe tools _yeti_ and _ylex_ do not work, in contrast to their counterparts [taccle](https://github.com/devnull42/taccle)  and\n[fickle](https://github.com/devnull42/fickle), on straight text files as inputs but on procedure calls,\nand that it requires Itcl or tcl++ to be present. The advantgage of yeti and\nylex is that they can create lexers and parsers on the fly without the need to\nhave this text file processing. Furthermore, yeti and ylex read as input just strings and not file handles.\n\n\n2021-10-02 - The direct support for tcl++ will be added later if I upload tcl++ version 2.3\nand have checked if it still works with Tcl 8.6 and Tcl 8.7.\n\n2021-10-03 - The cutdown version of tcl++ can be already used as alternative to Itcl in the generated\nscanner or parser if the following lines are used to replace the `package require Itcl` call on top:\n\n```\nif {[catch {package require Itcl}]} {\n    lappend auto_path [file dirname [info script]]\n    package require tcl++\n    interp alias {} itcl::class {} tcl++::class\n    package provide Itcl 3.0\n} \n```\n\nYou just have to place the tcl++ folder directly below of your scanner/parser.\nThe scanner should then run even when Itcl is not not available.\n\n## Manual pages\n\n* [yeti.html](https://htmlpreview.github.io/?https://github.com/mittelmark/yeti/blob/master/yeti/yeti.html)\n* [ylex.html](https://htmlpreview.github.io/?https://github.com/mittelmark/yeti/blob/master/yeti/ylex.html)\n\n## Demos\n\n* [wc implementation using ylex](https://github.com/mittelmark/yeti/blob/main/demo/scan-wc.tcl)\n* [PgnReader demo](https://github.com/mittelmark/yeti/blob/main/demo/PgnReader.tcl)\n* [PgnReader output](https://github.com/mittelmark/yeti/blob/main/demo/PgnReader-0.1.tm)\n* [PgnReader HTML manual](https://htmlpreview.github.io/?https://github.com/mittelmark/yeti/blob/master/demo/PgnReader.html)\n* [sample.pgn - sample games for PgnReader demo](https://github.com/mittelmark/yeti/blob/main/demo/sample.pgn)\n* [cscanner demo](https://github.com/mittelmark/yeti/blob/main/demo/cscanner.tcl)\n* [cparser demo](https://github.com/mittelmark/yeti/blob/main/demo/cparser.tcl)\n\n## Links\n\n* [tcl-json](https://github.com/bef/tcl-json) - ylex/yeti based json parser with type support\n* [yeti-wikipage](https://wiki.tcl-lang.org/page/Yeti)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmittelmark%2Fyeti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmittelmark%2Fyeti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmittelmark%2Fyeti/lists"}