{"id":23163127,"url":"https://github.com/chivenzhang/plang-release","last_synced_at":"2026-07-15T23:31:07.476Z","repository":{"id":153918242,"uuid":"326956904","full_name":"ChivenZhang/plang-release","owner":"ChivenZhang","description":"Plang Programming Language for Game Design","archived":false,"fork":false,"pushed_at":"2021-09-17T12:12:50.000Z","size":14362,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-25T08:22:17.990Z","etag":null,"topics":["3d-engine","cpp","game","game-development","game-engine","language","plang","script"],"latest_commit_sha":null,"homepage":"","language":"PostScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChivenZhang.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}},"created_at":"2021-01-05T09:59:47.000Z","updated_at":"2022-08-26T18:35:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"848ffdbb-7548-4a66-bd81-9a978923ff69","html_url":"https://github.com/ChivenZhang/plang-release","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ChivenZhang/plang-release","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChivenZhang%2Fplang-release","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChivenZhang%2Fplang-release/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChivenZhang%2Fplang-release/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChivenZhang%2Fplang-release/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChivenZhang","download_url":"https://codeload.github.com/ChivenZhang/plang-release/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChivenZhang%2Fplang-release/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35524897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-15T02:00:06.706Z","response_time":131,"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":["3d-engine","cpp","game","game-development","game-engine","language","plang","script"],"created_at":"2024-12-18T00:16:25.248Z","updated_at":"2026-07-15T23:31:07.455Z","avatar_url":"https://github.com/ChivenZhang.png","language":"PostScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Plang Programming Language for Game Design\r\n\r\nlast update：2021/4/18\r\n#### Current Version\r\n1.4.6\r\n\r\n\r\n\r\n#### Code Preview\r\n\r\n```\r\nimport std::IO;\r\n\r\npublic class Foo\r\n{\r\n    // Program Entry\r\n\tpublic static main()\r\n\t{\r\n\t\tIO.printf(\"Hello,world!\");\r\n\t}\r\n}\r\n```\r\n\r\n\r\n\r\n#### Software Introduction\r\n\r\n\ta) Plang语言为支持面向对象的计算机编程语言;\r\n\tb) bin目录下的x64/plang.exe、 x86/plang32.exe是 Windows10 x64 平台下支持良好的Plang语言编译、解释程序;\r\n\tc) bin目录下的x64/pdb.exe、 x86/pdb32.exe是 Windows10 x64 平台下支持良好的Plang语言调试程序;\r\n\r\n\r\n\r\n#### Design Goal\r\n\r\n\ta) 嵌入C/C++系统的脚本语言；\r\n\tb) 游戏脚本系统；\r\n\r\n\r\n\r\n#### Syntax Feature\r\n\r\n\ta) 采用面向对象的程序设计思想；\r\n\tb) 支持继承、多态、抽象、封装；\r\n\tc) 支持本地方法调用（Plang Native Interface）；\r\n\td) 支持协程语句（co_start/co_yield/co_await）；\r\n\te) 语法借鉴C++、Java；\r\n\tf) 提供基本工具库，包含输入输出、集合、文件读写、XML解析、时间工具等\r\n\r\n\r\n\r\n#### Script Grammar\r\n\r\n\t《Plang用户文档》 for reference；\r\n\r\n\r\n\r\n#### How to Start\r\n\r\n\ta)\r\n\t\t1、将 bin/x64 或 bin/x86 目录添加到Path环境变量中；\r\n\t\t2、打开命令行（cmd.exe）；\r\n\t\t3、输入cd命令进入工作目录；\r\n\t\t4、输入plang/plang32 命令即可完成编译、执行、调试等操作；\r\n\t\r\n\tb) 双击run_??.bat文件即可运行测试类；\r\n\r\n\r\n\r\n#### Command Specification\r\n\r\n\ta) plang [-s SourceFilePath] [-o OutputFilePath] [-i ImportClassPath] [-c MainClassName]\r\n\t\r\n\t\t-s：指定源文件编译目录；\r\n\t\t-o：指定编译输出目录，默认为 ./output；\r\n\t\t-i：指定外部类导入目录，默认为 ./library；\r\n\t\t-c：指定运行的 “static main()” 方法的所在类名；\r\n\t\t注：以上开关自由组合，每个开关仅携带单个参数；\r\n\t\r\n\tb) pdb [-s SourceFilePath] [-o OutputFilePath] [-i ImportClassPath] [-c MainClassName] [-d [yes|no]]\r\n\t\r\n\t\t-s：指定源文件编译目录；\r\n\t\t-o：指定编译输出目录，默认为 ./output；\r\n\t\t-i：指定外部类导入目录，默认为 ./library；\r\n\t\t-c：指定运行的 “static main()” 方法的所在类名；\r\n\t\t-d：指定是否开启调试模式，默认为 no；\r\n\t\t注：以上开关自由组合，每个开关仅携带单个参数；\r\n\t\r\n\t\t调试命令：\r\n\t    n(ext) -- debug next code;\r\n\t    i(n) -- jump into deeper context;\r\n\t    o(ut) -- jump out of current context;\r\n\t    g(o) [[Class:Method:]Line] -- jump to next break point;\r\n\t    b(reak) [Class:Method:]Line -- setup break point;\r\n\t    d(elete) [Class:Method:]Line -- delete break point;\r\n\t    c(lear) -- clear all break points;\r\n\t    s(et) Name:Scope:Value -- assign value to local variable;\r\n\t    p(rint) Name:Scope -- show value of local variable;\r\n\t    l(ist) Name:From:Num -- show table like break(point),code and local(variable);\r\n\t    t(race) -- show call stack;\r\n\t    q(uit)/e(xit) -- terminate debug process;\r\n\t\r\n\t\t调试命令说明：\r\n\t\tnext：逐过程调试模式；\r\n\t\tin：逐语句调试模式；\r\n\t\tout：跳出调试模式；\r\n\t\tgo：若不带参数，则运行至下一断点；否则运行至指定临时断点；例如：g basic/Test:main():10，跳转到序号为10的指令；\r\n\t\tbreak：设置非临时断点，其后指定中断位置；例如：b basic/Test:main():10；\r\n\t\tdelete：删除存在的非临时断点，其后指定中断位置；格式参考break；\r\n\t\tclear：清楚所有非临时断点；\r\n\t\tset：局部变量赋值；例如：set num:2=333；\r\n\t\tprint：打印局部变量；例如：p num:2；\r\n\t\tlist：打印数据表，支持断点表(break)、指令表(code)、局部变量表(local)；例如：list break:0，打印前50个断点信息；\r\n\t\ttrace：打印调用堆栈；\r\n\t\tquit/exit：退出调试；\r\n\r\n\r\n\r\n#### For Example\r\n\r\n\ta) plang -s src -o output\r\n\t编译当前src目录所包含的所有源文件（.ps)，并将字节码文件（.p）导入 output 目录中；\r\n\t\r\n\tb) plang -o output -c basic/Test\r\n\t运行output目录下的basic::Test类中名为“main()-\u003eint”的公共静态方法。\r\n\t\r\n\tc) pdb -o output -c basic/Test -d yes\r\n\t调试output目录下的basic/Test类中名为“main()-\u003eint”的公共静态方法，程序将在首条指令处中断；\r\n\r\n\r\n\r\n#### Notice\r\n\r\n\ta) 建议在Sublime text.exe中，使用GBK编码进行ps源文件编辑（防止中文乱码）；另外将ps文件的配色方案统一设置成Groovy，可改善用户编程体验；\r\n\t\r\n\tb) 调试程序pdb.exe是解释/执行程序plang.exe的功能超集，存在执行效率问题；\r\n\t\r\n\tc) pdb调试对象为字节码指令，非源代码语句；此设计考虑了：a）绝大部分指令为jvm指令，有一定推广度；b）降低开发难度；\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchivenzhang%2Fplang-release","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchivenzhang%2Fplang-release","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchivenzhang%2Fplang-release/lists"}