{"id":13782993,"url":"https://github.com/zurl/MUA","last_synced_at":"2025-05-11T17:30:35.770Z","repository":{"id":68820082,"uuid":"59126109","full_name":"zurl/MUA","owner":"zurl","description":"An interpreter as the homework of Advance C Programming","archived":false,"fork":false,"pushed_at":"2017-06-25T17:06:39.000Z","size":126,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-03T18:18:04.881Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zurl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-05-18T15:03:02.000Z","updated_at":"2020-09-23T02:43:22.000Z","dependencies_parsed_at":"2023-06-11T13:45:30.616Z","dependency_job_id":null,"html_url":"https://github.com/zurl/MUA","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/zurl%2FMUA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zurl%2FMUA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zurl%2FMUA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zurl%2FMUA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zurl","download_url":"https://codeload.github.com/zurl/MUA/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253604382,"owners_count":21934851,"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:50.410Z","updated_at":"2025-05-11T17:30:35.527Z","avatar_url":"https://github.com/zurl.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# MakeUp Programming Language  \n作者 : 张程易  浙江大学 求是科学班(计算机) 1501\n\n本项目是翁恺老师的课程“C程序设计专题”的作业，在MIT协议下开源。  \n本项目全部使用C语言完成，开发环境是Visual Studio 2015 community edition.\n\u003e \u003cdel\u003e未来将会提供Makefile文件\u003c/del\u003e 已经提供\n这个项目是完全跨平台的~！！    \n\n[实验报告](Report.md)\n\n未完成的操作\n============================\n\n由于平台相关：暂不完成。\n* `wait \u003cnumber\u003e`：等待number个ms\n\n下面是原题目\n============================\n\n# MakeUp Programming Language\n\n## 基本数据类型value\n\n数字number，单词word，列表list，布尔bool\n\n* 数字：以[0~9]或'-'开头，不区分整数，浮点数\n* 单词：以双引号\"开头，不含空格，采用Unicode编码\n* 列表：以方括号[]包含，其中的元素以空格分隔；元素可是任意类型；元素类型可不一致\n\n## 基本操作\n\n基本形式：操作名 参数\n\n操作名是一个不含空格的词，与参数间以空格分隔。参数可以有多个，多个参数间以空格分隔。每个操作所需的参数数量是确定的，所以不需要括号或语句结束符号\n\n基本操作\n\n* `//`：注释\n* `make \u003cword\u003e \u003cvalue\u003e`： 将value绑定到word上。基本操作的单词不能用做这里的word。绑定后的word称作名字，位于命名空间\n* `thing \u003cword\u003e`：返回word所绑定的值\n* `: \u003cword\u003e`：与thing相同\n* `erase \u003cword\u003e`：清除word所绑定的值\n* `isname \u003cword\u003e`：返回word是否是一个名字\n* `print \u003cvalue\u003e`：输出value\n* `read`：返回一个从标准输入读取的数字或单词\n* `readlinst`：返回一个从标准输入读取的一行，构成一个列表，行中每个以空格分隔的部分是list的一个元素\n* 运算符operator\n\t* `add`, `sub`, `mul`, `div`, `mod`：`\u003coperator\u003e \u003cnumber\u003e \u003cnumber\u003e`\n\t* `eq`, `gt`, `lt`：`\u003coperator\u003e \u003cnumber|word\u003e \u003cnumber|word\u003e`\n\t* `and`, `or`：`\u003coperator\u003e \u003cbool\u003e \u003cbool\u003e`\n\t* `not`：`not \u003cbool\u003e`\n* `random \u003cnumber\u003e`：返回[0,number\u003e的一个随机数\n* `sqrt \u003cnumber\u003e`：返回number的平方根\n* `isnumber \u003cvalue\u003e`：返回value是否是数字 \n* `isword \u003cvalue\u003e`：返回value是否是单词\n* `islist \u003cvalue\u003e`：返回value是否是列表 \n* `isbool \u003cvalue\u003e`：返回value是否是布尔量 \n* `isempty \u003cword|list\u003e`: 返回word或list是否是空\n* `test \u003cvalue\u003e`：测试value是真是假\n* `iftrue \u003clist\u003e`：如果之前最后一次test是真，则执行list\n* `iffalse \u003clist\u003e`：如果之前最后一次test是假，则执行list\n* `word \u003cword\u003e \u003cword|number|bool\u003e`：将两个word合并为一个word，第二个值可以是word、number或bool\n* `list \u003clist1\u003e \u003clist2\u003e`：将list1和list2合并成一个列表，两个列表的元素并列，list1的在list2的前面\n* `join \u003clist\u003e \u003cvalue\u003e`：将value作为list的最后一个元素加入到list中（如果value是列表，则整个value成为列表的最后一个元素）\n* `first \u003cword|list\u003e`：返回word的第一个字符，或list的第一个元素\n* `last \u003cword|list\u003e`：返回word的最后一个字符，list的最后一个元素\n* `butfirst \u003cword|list\u003e`：返回除第一个元素外剩下的列表，或除第一个字符外剩下的单词\n* `butlast \u003cword|list\u003e`：返回除最后一个元素外剩下的列表，或除最后一个字符外剩下的单词\n* `item \u003cnumber\u003e \u003cword|list\u003e`：返回word或列表中的第number项字符或元素\n* `repeat \u003cnumber\u003e \u003clist\u003e`：运行list中的代码number次\n* `stop`：停止当前代码的执行。当前代码可能是run、repeat、if或函数中的代码\n* `wait \u003cnumber\u003e`：等待number个ms\n* `save \u003cword\u003e`：保存当前命名空间在word文件中\n* `load \u003cword\u003e`：从word文件中装载内容，加入当前命名空间\n* `erall`：清除当前命名空间的全部内容\n* `poall`：列出当前命名空间的全部名字\n\n## 函数定义和调用\n\n### 定义\n\n\t\tmake \u003cword\u003e [\u003clist1\u003e \u003clist2\u003e]\n\t\t\tword为函数名\n\t\t\tlist1为参数列表\n\t\t\tlist2为操作列表\n\n### 调用\n\n\t\t\u003cfunctionName\u003e \u003carglist\u003e\n\t\t\t\u003cfunctionName\u003e为make中定义的函数名，不需要双引号\"\n\t\t\t\u003carglist\u003e是参数列表，\u003carglist\u003e中的值和函数定义时的\u003clist1\u003e中名字进行一一对应绑定\n\n### 函数相关的操作\n\t\t\t\n* `output \u003cvalue\u003e`：设定value为返回给调用者的值，但是不停止执行\n* `stop`：停止执行\n* `local \u003cword\u003e`：设定该word为本地名字。参数也是本地名字\n\n## 既有名字\n\n系统提供了一些常用的量，或可以由其他操作实现但是常用的操作，作为固有的名字。这些名字是可以被删除（erase）的。\n\n* `pi`：3.14159\n* `if \u003cbool\u003e \u003clist1\u003e \u003clist2\u003e`：如果bool为真，则执行list1，否则执行list2。list均可以为空表\n* `run \u003clist\u003e`：运行list中的代码\n\n# LICENSE\n\nTHIS PROJECT IS OPEN SOURCE UNDER MIT LICENSE, BUT WITH A LIMITATION\n\nWITH THE \"HONEST RULE\" REQUIRED BY Prof. Chen Yue, Zhejiang University \n\nANYONE CANNOT USE ANY PART IN THIS PROJECT IN \"Advance C Programming\" COURSE IN ZJU.\n\n根据浙江大学学术诚信守则。\n\n任何人不可以使用本项目中的任何一部分代码作为“C程序设计专题”的大程序的组成部分。\n\n违反本条例的任何后果, 本人不承担任何责任。\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzurl%2FMUA","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzurl%2FMUA","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzurl%2FMUA/lists"}