经过一段时间的密集开发,如梦令编程语言(RML)主页正式上线了!

www.rml-lang.top

RML主页提供了较为详尽的语言文档,有助于快速掌握RML的语法。

另外,RML的主页服务器完全使用RML编写完成,目前稳定提供服务中。

这一定程度上验证了RML已具备一定的可用性。

 

一个简单的基于TCP的服务器示例

server: open tcp://:8384

server/awake: [

    conn/awake: copy [
        write this-port "HTTP/1.1 200 OK^M^/Content-Type:text/html; charset=utf8^M^/Content-Length:14^M^/^M^/<h1>HELLO</h1>"      
    ]
    conn/read-timeout: 30
    conn/on-close: []
    fork [listen conn]
]

print "start listen"
fork [listen server]

 

RML主页使用的服务器支持动态页面,其实现原理是将rsp文件解析成RML中的collect代码,通过parse方言能够很轻松实现这个功能,下面是rsp文件的解析代码

rsp-complier: func [inp] [
    rst: copy ""

    parse copy inp [
        opt [
            copy start-str to "<?" ( if start-str [reppend* rst [" keep "  format start-str " " ]] )
            |
            copy start-str to end ( print start-str if start-str [reppend* rst [" keep " format start-str " " ]] )
        ]
        
        some [
            thru "<?" copy code to "?>"
            (append* rst code)
            [
                thru "?>" copy str to "<?"
                (reppend* rst [" keep " format str])
                |
                thru "?>" copy str to end
                (reppend* rst [" keep " format str])  
                |
                thru "?>" end         ]
        ]
    ]

    rst: append "collect [ " rst
    append* rst "]"
    
    return rst
]

主页文档提供了较为完整的parse方言教程,快来了解一下这个文本解析神器吧!

版权声明:本文为NjinN原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/NjinN/p/12242993.html