标签:文件 server 编写 wak span copy art target 原理
经过一段时间的密集开发,如梦令编程语言(RML)主页正式上线了!
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方言教程,快来了解一下这个文本解析神器吧!
标签:文件 server 编写 wak span copy art target 原理
原文地址:https://www.cnblogs.com/NjinN/p/12242993.html