kylekatarnls/coffeescript

将CoffeeScript编译器移植到PHP。 (参见http://github.com/alxlit/coffeescript-php,这是一个精确的分叉以修复最后发布版本中的最小稳定性问题)

1.3.4 2016-11-17 10:06 UTC

This package is auto-updated.

Last update: 2024-09-17 16:30:05 UTC


README

CoffeeScript编译器移植到PHP。

状态

CoffeeScript版本 1.3.1 已完全移植(参见标签)。移植后的编译代码与参考代码之间有一些无害的差异(例如#11),否则它们匹配100%。

要求

PHP 5.3+(使用命名空间,匿名函数)。

安装

建议您使用Composer来安装和自动加载CoffeeScript。或者您可以手动加载

<?php

require 'vendor/CoffeeScript/Init.php';

// Load manually
CoffeeScript\Init::load();

?>

使用方法

API非常基础(单个compile($coffee, $options = NULL)函数)。我不打算进一步扩展它(保持简单)。以下是可用的选项

  • filename - 源文件名,格式化到错误消息中
  • header - 添加 "由...生成" 标头
  • bare - 如果设置为 true,生成的JavaScript将不会嵌入到 IIFE
  • rewrite - 启用重写器(调试)
  • tokens - 对令牌流的引用(调试)
  • trace - 写入解析器跟踪的文件(调试)
<?php

$file = 'path/to/source.coffee';

try
{
  $coffee = file_get_contents($file);

  // See available options above.
  $js = CoffeeScript\Compiler::compile($coffee, array('filename' => $file));
}
catch (Exception $e)
{
  echo $e->getMessage();
}

?>

开发

要重建解析器,请运行php make.php。测试在浏览器中运行;只需将仓库克隆到Apache可以查看的位置,然后导航到tests/。

常见问题解答

这个项目的动机是什么?

我当时大量使用PHP,并想使用、了解更多关于CoffeeScript项目的信息,并可能为其做出贡献。我想有一个本地版本,就试了试。

为什么不修改原始编译器以生成PHP?

有多个原因... 首先,我不知道你为什么要那样做。如果你觉得PHP难以忍受,那就别用... 第二,原始编译器依赖于Jison,它是用JavaScript编写的,所以你必须处理这个问题。第三,我认为尝试解决JavaScript和PHP之间的所有差异(对象模型、核心类和库等)将是一项更大的工作。

你使用什么解析器生成器?

由于没有Bison的PHP端口(参考编译器使用),我们正在使用Lemon的一个端口,称为ParserGenerator

它包含在本地,因为PEAR包未维护且似乎已损坏。此外,对解析器模板(Lempar.php)和实际生成器已进行了一些小的修改。