xp-lang/compiler

此包已被废弃,不再维护。未建议替代包。

XP 编译器

v7.1.1 2016-10-03 10:18 UTC

README

Build Status XP Framework Module BSD Licence Required PHP 5.5+ Supports PHP 7.0+ Supports HHVM 3.5+ Latest Stable Version

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 语法
  • 区分数组和映射的类型
  • 类文字 ::classfinally ——也适用于 PHP < 5.5!
  • 具有 getset 的属性,以及索引器
  • 对以下 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 的方式——分支、修改并提交拉取请求!