编辑“︁
Falcon
”︁(章节)
跳转到导航
跳转到搜索
Template:Editnotice load/content
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== 特性 == 随着多范式编程,'''Falcon'''为编程人员呈现多种多样的特色。 === 模板文件 === 通过预处理符号'''<? .. ?>'''或者'''<?fal .. ?>''','''Falcon'''允许脚本成为文本文档的一部分,、。保存为".ftd"的脚本被作为一个文本文件来处理并且在遇到其中一个预处理符号之前简单输出。下面的''.ftd''例子里包含其中的脚本被执行: You called this script with <? print( args.len() ) ?> parameters. FTD文件能通过标准Falcon脚本被整合到各式应用,在动态模板(FTD文件)中的是表现逻辑,应用逻辑被储存在Falcon模块。 FTD文件能被用来驱动动态网站,一些流行的网页服务器(当前的[[Apache HTTP Server|Apache 2]]),拥有直接分析和执行".fal"和".ftd"脚本的模块,提供整合到网页服务器引擎的一个API。用CGI脚本也能使用动态FTD页面。 === 异常 === '''Falcon'''由''raise'', ''try''和''catch''语句支持错误处理。raise语句能抛出任何Falcon元素,包括Nil,numbers, strings, objects等等。库函数和扩展模块将通常引发错误类的实例,或者派生自他的实例。 catch语句能捕获任何类型的元素,一个某种类型(如string(字串)或interger(整數)),或者某种类的实例。捕获的类被按层次组织,所以它能像下面的例子一样支持更多一般性错误处理(''TypeError''是一个派生自''Error''类库): try ... code that can raise ... catch TypeError in error ... if we mixed up types ... catch Error in error ... another generic error ... catch StringType in error ... an explicit raise "something" was issued ... catch in error ... no idea of what has been raised. end catch语句中的''in''子句是可选的(这意味着错误可以忽略自身)。 ''catch''语句模仿''select''语句,能被用一个给出的类型或者类转向。 === 可嵌入运行时 === 使用可链接运行时库''libfalcon'','''Falcon'''被设计成可嵌入和可扩展其他系统的。 === 文档生成器 === '''Falcon'''装载着一个整合的文档系统,叫做''faldoc'',是特别设计来提供可维护的文档的Falcon基础库(是原生C++代码或者用Falcon编写的模块)。 === 虚拟文件系统 === 所有发生在引擎或者虚拟机(脚本执行器)等级的I/O操作被委派给一个中央虚拟文件系统组件(centralized Virtual Filesystem Provider),外部模块或者可嵌入的应用设备被允许动态注册。订阅的虚拟文件系统抽象I/O操作如目录读取,创建文件和打开流,通过URI能在脚本内部寻址。这使得他能从任何VFS(如网络资源或者压缩加密的文件)读取模块或者打开资源,通过第三方模块且或通过嵌入引擎的应用程序可以包含特殊的虚拟位置的支持。 === 并发支持 === 在更新到0.8.x版本,''Threading''模块提供脚本完整多线程。线程模型是''面向代理(agent oriented)'',跨线程数据必须通过几种可行共享机制明确地共享。每一个线程运行一个不同的虚拟机,分离的运行发生在其内部任何操作(如垃圾回收)。这允许有效的并行处理和在脚本开发者控制之外的0竞争。 === 协同处理 === '''Falcon'''支持准并发协同处理。协同处理是指通过虚拟机在同一时间片或者在空闲时间里执行代码。它们支持一个接近于完整线程模块的更轻量级的并发处理,通过不同的协同处理允许程序的全局数据完全可见。除了每个协同处理的合作,(如在调度读取之前每个协同处理必须检查数据可用性)。 === 元编译器 === '''Falcon''编译器有一个支持宏展开的元编译器,在一个标准编译器中元编译器由Falcon虚拟机驱动;自元编译器生成的输出被发送到语言的语法分析器就像他是原始代码的一部分。使用'''\[ ...\]'''退出序列,通过打印他能动态记录被编译的程序内容。 \[ printl( "printl( 'Hello world' )" ) \] ''macro''关键字提供一个简单的转到编译时元编程的''语法糖果(candy-grammar)''接口。 === 原生国际化 === 用一个前缀'i'的字符串被认为是一个输出(国际化)字符串。在一个模块中通过使用''directive''语句声明使用的语言,它能指示哪个字符串用什么自然语言编写,如下面的例子: directive lang=fr_FR // uses 5 characters ISO language code > i"Bonjour à tout le monde!" 一个命令行工具''fallc''被用来输出'i'字符串到XML定义文件,能被作为模板来支持翻译到不同的语言。 在读取模块的时候一个已翻译的字符表被应用到模块。
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息