首页 > 其他分享 >试着设计一个自己的语言

试着设计一个自己的语言

时间:2023-12-02 11:23:21浏览次数:27  
标签:end 变量 java round 关键字 设计 试着 loop 语言

1.最重要的一点是一致性(初版本先用自然语言的形式设计语法)

2.优雅(先实现一版,后续改进)

3.静态类型

4.自然语言的语法,且容易转换为中文表述

大概设想:

注释和java的保持一致,但是支持
/*
 * 这种方式的注释,即非方法/字段/类上的文档注释,是方法里面的多行描述的注释
 */

变量和方法都用小驼峰;
类名/接口名用大驼峰
还支持一个any关键字用于联合任意类型(因为这里不准备设计为一切皆对象),但是any类型不是动态类型,必须主动as转换后使用;
关键字如果是多个单词构成用-来连接;至于a-b即a变量减去b变量不用担心,一来是一开始要求中间必须有空格,即a - b,所以不会和关键字有冲突;二来
如果用户定义了end变量和loop变量,也确实要执行它们的减法,语法检查也是能检查它到底是关键字还是两个变量相减;
而且它们编译成字节码后,是会变成其他的形式从而加速ast的构建,比如next-round可能会变成##next_round##【感觉我应该先设计字节码。。】

一:循环(类似java的for循环)
loop define var a = 1, if a > outList.length, ne\
xt-round a++
// logic code
// 支持break和continue
end-loop

描述:上面的ne\的\和C++里的换行拼接一样,这里要求\后面不能有任意字符,
然后\的下一行以行首第一个字符拼接到上一行\前面一个字符的后面,这个是编译期间的事情
这里define表示在loop所在的作用域里定义了一个a变量初始化为1,类型是isize(自动整型),如果要手动指出是什么类型可以用var a: i32 = 1
if就是如果的意思,在loop里表示循环成立的条件,而next-round下一轮;

二:循环2(类似java的while循环)
loop if outVar > 0
end-loop

三:循环3(类似do-while)
loop
end-loop if a > 9

四:开启作用于(类似java的{。。。})
scope
end-scope

五:如果定义的变量或方法和关键字冲突,可以用#开头
var #loop: isize = 9【但是如果后面支持反射,反射获取字段名#loop是只需要类似type.getField("loop"),因为#loop只是编译层面的处理】

 

标签:end,变量,java,round,关键字,设计,试着,loop,语言
From: https://www.cnblogs.com/silentdoer/p/17871379.html

相关文章

  • 2023-2024-1 20231419 《计算机基础与程序设计》第十周学习总结
    2023-2024-120231419《计算机基础与程序设计》第十周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10这个作业的目标自学《计算机科学概......
  • 『Postgres.Live 技术沙龙回顾』揭秘 PieCloudDB Database eMPP 架构设计
    2月1日,拓数派参与了由开源软件联盟PostgreSQL分会组织的Postgres.Live线上系列沙龙活动。拓数派产品及推广总监吴疆发表主题演讲《PieCloudDB:eMPP云原生数据库》。相关视频回放欢迎访问拓数派B站链接,PPT欢迎前往官网链接获取。本文由演讲内容整理而成。随着计算机技术的发展,”云......
  • 『坚如磐石的 PieCloudDB』:透明加密模块的设计与实现
    导读:2月17日,由中国开源软件推进联盟PostgreSQL分会&中科院软件所&CSDN联合举办的“中国PostgreSQL数据库生态大会”盛大召开。拓数派(OpenPie)作为冉冉升起的新一代云原生分布式数据库厂商,受邀参加本届大会。 本文为演讲的文字版摘要,主要内容包括: 透明加密的设计思路 透明......
  • 软件设计8
    [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:1. 画出对应的类图;  2. 提交源代码;packagetest8; publicclassAdapterimplementsCat,Dog{    privateCatcat=newRealcat();    privateDogdog=newRealdog......
  • 代码随想录算法训练营第三天 | 203.移除链表元素 707.设计链表 206.反转链表
    LeetCode 203.移除链表元素视频链接:LeetCode203思路:根据链表的性质,将目标值对应的节点保存在一个临时节点中,再重新设置cur下一个节点,再将临时节点进行删除classSolution{public:ListNode*removeElements(ListNode*head,intval){//删除头节点......
  • PTA|C语言|数组练习题
    --------------------------------------------------------------------------------求最大值及其下标本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。输入格式:输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。输出格式:在一行......
  • 2023-2024-1 20231424《计算机基础与程序设计》第10周学习总结
    2023-2024-120231424《计算机基础与程序设计》第10周学习总结作业信息作业属于的课程<班级链接>(2022-2023-1-计算机基础与程序设计)作业要求<作业要求>(2022-2023-1计算机基础与程序设计第一周作业)作业目标《计算机科学概论》第12,13,14章和《C语言程序设计》第9......
  • 2023-2024 20231313《计算机基础与程序设计》第十周学习总结
    2023-202420231313《计算机基础与程序设计》第十周学习总结作业速达作业课程班级链接作业要求计算机基础与程序设计第十周学习总结作业内容计算机科学概论第12,13,14章《C语言程序设计》第9章并完成云班课测试,信息系统、数据库与SQL、人工智能与专家系统、人工神经......
  • 软件设计实验 24:模板方法模式
      实验24:模板方法模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解模板方法模式的动机,掌握该模式的结构;2、能够利用模板方法模式解决实际问题。 [实验任务一]:数据库连接对数据库的操作一般包括连接、打开、使用、关闭等步骤,在数据库操作模板类中我......
  • 《信息安全系统设计与实现》学习笔记12
    《信息安全系统设计与实现》学习笔记12第十四章MySQL数据库系统MySQL简介MySQL(MySQL2018)是一个关系数据库系统(Codd1970)。在关系数据库中,数据存储在表中。每个表由多个行和列组成。表中的数据相互关联。表也可能与其他表有关联。关系结构使得可在表上运行查询来检索信息......