回 帖 发 新 帖 刷新版面

主题:[原创]最简单的编程语言【MYS语言】语法精髓


[b]MYS是MYL的脚本形式[/b]

[b]本人现在以编写Myl为主[/b]

【Myl语言】同样非常简单
【Myl语言】是编译执行的
【Myl语言】还可以使用中文编程
【Myl语言】现阶段只能使用微软的 .Net 库
【Myl语言】下载地址:[url=http://dubixia.51.net/myl/]http://dubixia.51.net/myl/[/url]

[b]以下语法精髓将以【Myl语言】为主[/b]


回复列表 (共14个回复)

沙发

 【Myl语言总是:以最自然最明了的方式来表达程序代码】

[b]本节介绍Myl语言常量字符的引用[/b]

Myl语言不再支持转义符“\” ,而是用一种非常自然明了的方式来表述那些无法键入的字符,具体如下表



    字符         Myl语言的引用方法     c,c++,java,C#等语言引用方法 

    回车符(Return)    'Return'              '\r' 
    换行符(Enter)     'Enter'               '\n' 
    制表符(Tab)         'Tab'               '\t' 
    垂直制表符(Vtab)     'Vtab'             '\v' 
    后退符(Back)         'Back'             '\b' 
    \                      '\'                '\\' 
    '                     '''                 '\'' 
    "                     '"'                 '\"' 
    ...                   ...                 ... 

    UNI字符的表示     

    0000                '0000'                 '\u0000' 
    0001                '0001'                 '\u0001' 
    ...                  ...                 ... 
      

  

板凳

【Myl语言总是:以最自然最明了的方式来表达程序代码】

[b]本节介绍Myl语言常量字符串的引用[/b]

Myl语言不是使用“""”(引号)来引用字符串,而是使用“[]”(中括号)来引用字符串。

如:str=[this is a string]

1、多行字符串。Myl语言的多行字符串的引用也非常自然明了,使用如下:

    str=[
        这是第一行,
        这是第二行,
        这是第三行,
    ]

2、字符串的插入运算。Myl语言不再支持字符串的加法运算,而是使用了一种更为灵活更为直观的表达方式,插入运算,即可直接在常量字符串中插入变量或常量的值,使用如下: 

    s1=3
    s2=[我有[s1]本书]     //其实s2的值就是“我有3本书”
    s3=[s1=[s1]]          //其实s3的值就是“s1=3”
    s4=[s1的值为:[s1]]   //其实s4的值就是“s1的值为:3”

3、Myl语言在调用方法的时候,可以把常量字符串参数与其它参数分离开来。使用如下:        
    drawString([a string],x,y)
可写成
    drawString[a string](x,y)
    //在指定位置(x,y)打印字符串“a string”
           
    Page[a title](w,h)
    //创建一个页面,该页面的标题为“a title”,宽度为w,高度为h。
    
    P[some message]
    //象Html中的<p>some message</p>一样。
 

3 楼

【Myl语言总是:以最自然最明了的方式来表达程序代码】

[b]本节介绍Myl语言对象的进一步初始化[/b]

1、Myl语言在一个对象表达式后面可以用“{}”对该对象进一步初始化,使用如下:

    form1=
    Form(){         
      //创建一个Form对象 ***Myl创建新的对象不需要“new”关键字

        FormBorderStyle= FixedDialog
        Text=[My Dialog]    //相当于 form1.Text=[My Dialog]
        Width=400        //相当于 form1.Width=400
        Height=300        //相当于 form1.Height=300
    }    
    
2、而且,如果该对象为容器对象,那么在“{}”中的“一些对象”将被自动加入该容器对象中。使用如下


    Form(){          
        FormBorderStyle=FixedDialog
        Text=[My Dialog]
        width=400
        height=300

        TextBox()        
          //相当于 Controls.Add(new TextBox()) 
        Button(){Text=[OK]}    
          //相当于 Controls.Add(new Button(){Text=[OK]})
        Button(){Text=[Cancel]}    
          //相当于 Controls.Add(new Button(){Text=[Cancel]})

    }    

通过这些特殊语法,使得Myl语言可以对结构数据进行清晰的描述,而且描述的同时也在处理数据。如,我们还可以象下面这样来创建一个页面:
    
    我的页面[这是我的第一个页面]{
        内容[这是第一要点]{
             分内容[......]
             分内容[......]
             分内容[......]
             //...... 
        }
         内容[这是第二要点]{ 
            //...... 
        } 
        内容[这是第三要点]{
             //......
         }
    } 

4 楼

非常震撼,非常不解,非常好奇,非常佩服,非常非常。

5 楼

现在是21世纪,请不把上个世纪已经发明过无数次的东西贴上一个前无古人后无来者的标签.

谦逊永远是科学家的美德.
商业宣传请参考微软的.Net

6 楼

非常好   非常喜欢   我想购买源码研究下  谢谢  qq:297503653

7 楼



[b]扩展名字空间[/b]

Myl编程语言可以使用Using扩展名字空间。


如:Using System.Window.Form;这个我们再熟悉不过了,就不在熬述。

语法1:Using 类名

如:Using Math;该语句把空间扩展到Math的成员。

我们可以这样编写代码:

    Using Math
    float x=-3.1
    float y=Abs(x)       //等价于 Math.Abs(x)

语法2:Using 对象名

如:Using Form1;该语句把空间扩展到Form1的成员。

我们可以这样编写代码:
    
    Using Form1
    
    Width=200;Height=300;   //等价于Form1.Width=200;Form1.Height=300


再如:{} 也可以扩展名字空间

我们可以这样编写代码:

    Form1{
        Width=200
        Height=300
    }



8 楼


[b]向前访问[/b]

有时候我们会遇到这种情况:

    Form(){
        TextBox(){
            .Width=Width*2            

        }

    }

这个“.Width”是什么意思呢?

因为只使用“Width”只能访问TextBox的Width,不会访问Form的Width,所以“.Width”就是向前访问的意思,用“.Width”就可以访问Form的Width。

在代码中,我们还可以用“..Width” 以及 “...Width”等等,都是向前访问的意思。

9 楼

[b]对象是如何“自动加入”到容器的[/b]


我们在定义类的时候可以加入这样的三个方法:

void AutoOpen();
void AutoClose();
<T> AutoAdd(<T> o);

如果我们在Setting类中定义了这三个方法,当编译器遇到下面的这些代码时会自动的调用这些方法:


    Setting[我的设置]{        //自动调用  AutoOpen()


        Item[第一页]      //自动调用  AutoAdd(Item[第一页])
                          //***解释一下
                          //***该行语句不能有赋值运算
                          //***而且表达式的值的类型
                          //与AutoAdd的参数类型相同或继承


    }                     //自动调用  AutoClose()



如此这般,对象就可进入到容器中了。

10 楼


[b] //如果用法演示.中文.Myl[/b]


使用 [标准界面引用.中文.Myl]

说[演示 如果用法]

整数 a,b,c

向导[请输入一些值]{
    @a
    @b
    @c
}.显示()


如果(a=1)说[a=[a]]
再如果(b=4)说[b=[b]]
再如果(c=0)说[c=[c]]
否则 说[否则]


如果(b)
=1 { 说[b=1] }
=2 { 说[b=2] } 
=3,4,5 { 说[b为3,4,5中的一个] }
否则 说[b不等于1,2,3,4,5]

文件{
    删除[x.txt]
    流读入者[x.txt](编码器.默认值)

    如果(IO异常){ 说[IO异常的信息为:[ex.Message]] }
    如果(除数为零异常){ 说[除数为零异常的信息为:[异常参数.消息]] }
    否则{ 说[异常的信息为:[异常参数.消息][异常参数.获取类型().名字] ] }

    c=0
    b=a/c

    如果(IO异常){ 说[IO异常的信息为:[ex.Message]] }
    如果(除数为零异常){ 说[除数为零异常的信息为:[异常参数.消息]] }
    否则{ 说[异常的信息为:[异常参数.消息][异常参数.获取类型().名字] ] }

    窗口 d=null
    d.宽度=300

    如果(IO异常){ 说[IO异常的信息为:[ex.Message]] }
    如果(除数为零异常){ 说[除数为零异常的信息为:[异常参数.消息]] }
    否则{ 说[异常的信息为:[异常参数.消息][异常参数.获取类型().名字] ] }


}

说[演示 结束]

我来回复

您尚未登录,请登录后再回复。点此登录或注册