xp-lang / compiler
此包已被废弃,不再维护。未建议替代包。
XP 编译器
v7.1.1
2016-10-03 10:18 UTC
Requires
- php: >=5.5.0
- xp-framework/collections: ^7.0 | ^6.5
- xp-framework/core: ^8.0 | ^7.0 | ^6.11
- xp-framework/io-collections: ^7.0 | ^6.5
- xp-framework/logging: ^7.0 | ^6.5
- xp-framework/parser: ^7.0 | ^6.0
- xp-framework/patterns: ^7.0 | ^6.6
- xp-framework/tokenize: ^7.0 | ^6.6
Requires (Dev)
- xp-framework/http: ^7.0 | ^6.0
- xp-framework/rdbms: ^7.0 | ^6.0
- xp-framework/unittest: ^7.0 | ^6.5
- xp-framework/xml: ^7.0 | ^6.0
README
XP 语言是一种功能丰富的、类型化和编译的编程语言,基于流行的 PHP 语言,旨在在语法上支持 XP 框架的特性。您使用它编写的源代码可以利用 XP 框架的基础类。因为语言本身是用 XP 框架编写的,所以不需要任何二进制或专有扩展!
入门
与 XP 框架一样,入口始终是一个类。在它们最简单的形式中,这些类有一个静态的 main() 方法。要尝试一下,创建一个名为 HelloWorld.xp
的文件,并包含以下内容
public class HelloWorld { public static void main(string[] $args) { util.cmd.Console::writeLine('Hello World!'); } }
然后编译并运行它!
$ xp HelloWorld
Hello World!
差异
您可能已经注意到以下内容:
- 类也可以有修饰符。
extends Object
是可选的,如果省略则由编译器添加。- 关键字
function
已被移除,并由返回类型替换。因为 main() 方法不返回任何内容,所以我们使用 void。 - 数组类型写作 component[]
- 变量仍然有美元符号。这使得很容易找到它们,这就是我们决定保留它的原因!
- 完全限定的类名使用点来编写。
- 对象操作符也是一个点(同时,字符串连接操作符现在是波浪号,
~
)。
特性
XP 语言特性包括以下内容——
- 命名空间(称为包)
- 导入、静态导入和“按需”导入(
import util.*;
) - Varargs 语法
- 区分数组和映射的类型
- 类文字
::class
和finally
——也适用于 PHP < 5.5! - 具有
get
和set
的属性,以及索引器 - 对以下 XP 框架特性的语法支持:类型安全的枚举、注解、泛型、
with
语句和抛出子句
进一步阅读
要了解 XP 语言的特性概述,以下是一些好的阅读材料:
开发
要更改 XP 语言和/或编译器本身,您需要克隆此仓库,例如使用 Git 只读。
$ cd [path]
$ git clone git://github.com/xp-lang/compiler.git
目录结构
[path]/compiler
|- ChangeLog.md # Version log
|- README.md # This file
|- module.pth # Module classpath
`- src # Sourcecode, by Maven conventions
|- main
| `- php
`- test
|- php
`- config # Unittest configuration
使用方法
在您的 xp.ini
文件中,在全局模块路径之前将此路径添加到您的 use
设置中,例如:
use=~/devel/xp-framework/core:~/devel/xp-lang/compiler
^^^^^^^^^^^^^^^^^^^^^^^^
在 Windows 系统上,使用 ;
作为分隔符
享受吧!
贡献
要贡献,请使用 GitHub 的方式——分支、修改并提交拉取请求!