PHP到Ruby的编译器
有人知道Ruby编译器的(最好是开源的)PHP吗?即,一个解析PHP代码并产生语义上等效的Ruby代码的程序? 解决方案 我没有自己使用过,但是您可能想看看 phuby .它允许您在Ruby中运行PHP代码.然后,我会尝试将代码的生命测试(使用Ruby单元测试),然后在Ruby中重写代码. 但是,我怀疑Phuby甚至还没有准备好生产. 其他解决方案 这已经是一项非常艰巨的任务.您选择了两种非常不同的语言.当然,您可能可以将PHP转换为Ruby,但是所产生的代码非常类似. 请参阅一些相关问题及其答案: 如何在编程语言之间翻译 为什么不可能为Python源代码转换器创建实用的perl? 如果您可以将惯用性php转换为惯用性红宝石,则可能需要类似人类的智能 - 即:理解代码(本质上)并以目标语言重写的代码的能力.不幸的是,我们在这方面没有很聪明的AI.至少不是我知道. 其他解决方案 我不认为存在一个. Quercus的组合,在Java中重
0 2023-05-29
编程技术问答社区
寻找转码器: php to javascript
我想知道,如果有任何可用的转板器,将(简单)PHP代码转换为JavaScript? 我是不是寻找的是ajax的东西或模仿PHP功能的javaScript库,但是我正在寻找一种转化器,它能够从PHP代码中生成JavaScript代码(类似于Google是什么与GWT和Java-to-JavaScript transpiler一起使用). 谢谢! 解决方案 JS Transpiler的Uniter PHP可以做到这一点:其他解决方案 您可以使用类似的东西:但是请注意,JavaScript有很多安全问题PHP避免.对于数据库相关的功能调用或其他一些PHP扩展,并非总是可以进行直接转换
0 2023-05-28
编程技术问答社区
PHP运算符优先级错误?
: 的结果 var_dump(null != $a = 15); var_dump($a); 是: bool(true) int(15) 为什么此脚本没有触发错误? 由于!=(不是平等运算符)的优先级高于=(分配运算符),因此应将$a与null进行比较? ? 解决方案 我能找到的唯一原因是文档说这仍然是合法的: http://php.net/manual/en/language.operators.precedence.php#example-129 这似乎是上表中所示的例外. 其他解决方案 这不是关于操作员的优先级,而是:操作员优先列表不会告诉您详细信息(实际上,他们从未这样做),例如关于野牛规则以及由此产生的模式匹配和减少堆栈. 让我们以语句null != $a = 15;进行简单,而没有var_dump. 这就是解析器"看到"此语句的方式 - 或:看到是 a语句. (我希望这将在任何地方都用固定宽度字体呈现... null
0 2023-05-27
编程技术问答社区
如何在一个脚本中验证CSS?
是否有一个库可以验证CSS? 我可以找到的唯一工具是网站.如果这些站点中的一个具有API,那也适合该账单. 我有一个用作CSS编译器的脚本.它根据主题的设置设置了各种变量,并生成和写入CSS文件.在承诺编写CSS文件之前,我想对其进行验证以确保没有任何无效条目. PHP很方便,但是Python,Perl,Ruby,Java或外壳可执行的任何内容都可以. 理想情况下,我可以将某些东西用作序列的一部分: $css_file=theme_compile('theme-name'); if(!validate_css($css_file)){ echo "css file contained invalid entry 'width:px'";//just an example, of course } else{ file_put_contents('/path/css_file',$css_file); } 解决方案 W
0 2023-05-27
编程技术问答社区
适用于Windows的PHP编译器
我有一个我需要分配给客户端的命令行PHP应用程序.我只想给他们一个可执行文件,而不是安装php的说明;) 我使用的Windows的良好php编译器是什么? 我需要控制内存和时间限制使用情况,因此我必须能够使用自定义php.ini. (也应该在EXE中打包,而不是单独的文件) 此外,我不希望该代码轻松提取.这并不是一个巨大的要求,但是我宁愿在十六进制编辑中可以看到源. 我在Google上有几次命中,但是如果有人实际使用过,您的反馈将是无价的. 编辑 如果我知道我会在开始时将其分发给客户,我会使用C#.但是我没有.现在他们想购买.它需要简单地死.一个包含PHP解释器和我的脚本的可执行文件以及一个输入点,在运行EXE时启动我的脚本. 如果我不必重新分配DLL,那也很棒. edit2 我正在寻找 phc 或 Roadsend . PHC不支持Windows,RoadSend不支持Windows中的PHP5. 解决方案 好吧,我发现了.有一
0 2023-05-26
编程技术问答社区
用PHP自动将引用的LESS文件编译成CSS
我希望发生以下事情: 具有自动服务器端的过程. 只能像我在代码中的CSS文件一样引用较少的文件. 返回用户的缩小CSS,而不是较少的文件 - 缓存,因此编译器不需要运行,除非更新文件已更新. 为此,可以与 更少的文件一起引用我域内的任何地方. 我发现了 sillphp ,但是文档并不清楚,也没有说明如何动态地获取更少的文件. .我以为我会发布如何使一切正常工作,因为我还没有看到如何使用PHP实现这一目标. 解决方案 这假定LINSPHP v0.3.8+不确定早期版本,但是如果它不直接从开箱即用,您就可以看到它的工作原理. 如果您使用的是少数来编译客户端,请确保将rel="stylesheet/less"更改为rel="stylesheet" 1)抓取 sillphp 我将这些文件放在/www/compi
0 2023-05-26
编程技术问答社区
我可以在代码上执行什么样的模式,使其更容易翻译成另一种编程语言?
我正在着手进行一个附带项目,该项目的目标是将代码从一种编程语言转换为另一种编程语言.我开始使用的语言是PHP和Python(Python到PHP应该更容易开始),但理想情况下,我可以添加(相对)轻松的其他语言.计划是: 这是针对网络开发的.原始代码和目标代码将坐在框架的顶部(我还必须编写).这些框架将采用MVC设计模式,并遵循严格的编码惯例.这应该使翻译变得更加容易. 我也在研究IOC和依赖注入,因为它们可能会使翻译过程更容易,而且较小的错误容易容易出现. 我将利用Python的 parser模块,让我用抽象的语法树小提琴.显然,我可以使用php获得的最接近的是 token_get_all()这是一个开始. 从那时起,我可以构建AST,符号表和控制流. 然后我相信我可以开始输出代码. 我不需要完美的翻译.我仍然必须查看生成的代码并解决问题.理想情况下,翻译人员应标记有问题的翻译. 在问"这到底是什么意思?"答案是...这将是一个有趣的学习经历.如果您对
0 2023-05-25
编程技术问答社区
将AST编译为源代码
我目前正在构建用PHP编写的PHP解析器,因为没有现有解析器在我以前的问题. Parser本身效果很好. 现在显然是一个解析器本身做得并不好(除了静态分析外).我想将转换应用于AST,然后将其编译回源代码.应用转换并不是什么问题,正常的访客模式应该做. 我目前的问题是如何将AST汇回源.我基本上有两种可能性: 使用一些预定义的方案编译代码 保持原始代码的格式并应用1.仅在更改的节点上. 目前,我想集中精力1. AS 2.似乎很难完成(但是,如果您有关于这一点的提示,我想听听它们). ,但我不确定可以使用哪种设计模式来编译代码.我看到的最简单的实现方法是向所有节点添加->compile方法.我在这里看到的缺点是,很难更改生成的输出的格式.为了做到这一点,人们需要更改节点.因此,我正在寻找其他解决方案. 我听说访问者的模式也可以用于此,但是我无法想象这应该如何工作.据我了解,访问者模式您有一些NodeTraverser,可以在所有节点上递归地迭代,并调用
2 2023-05-25
编程技术问答社区
我如何在我的安卓模拟器上编译一个java文件?
我在Android模拟器上有一个Java文件,我需要在模拟器终端上编译它.每当我写" javac filename.java"时,我都会收到一条错误消息,说:"许可拒绝". 解决方案 您无法执行此操作.当您编译Java源文件时,它首先将其符合为.class文件,即Java字节代码.之后,将类文件再次编译到.dex文件中,该文件是Dalvik字节代码,Dalvik虚拟机可以运行.然后将此.dex文件压缩到.APK文件中,该文件是包含所有应用程序数据的存档.您可以阅读更多有关它的信息其他解决方案 我首先要查看从理论上讲,它应该起作用,如果缓慢.是Java/Javac/apkbuilder/等.使用VIM,不需要生根.
0 2023-05-25
编程技术问答社区
Xcode不能创建输出文件,权限被拒绝
在xcode中,我无法再编译我的应用程序,错误是: /usr/bin/lipo: can't create output file: /Users/nathan/Library/Developer/Xcode/DerivedData/PackageTracking-fpewhfohxohurlexwettvkopakyn/Build/Products/Release/PackageTracking.app/Contents/MacOS/PackageTracking (Permission denied) error: couldn't remove '/Users/nathan/Library/Developer/Xcode/DerivedData/PackageTracking-fpewhfohxohurlexwettvkopakyn/Build/Products/Release/PackageTracking.app/Contents/MacOS/PackageTrackin
0 2023-05-25
编程技术问答社区
用Perl编写编译器的一部分(用c++编写)。
我正在尝试了解有关编译器和编程语言的更多信息,不幸的是我的大学没有提供有关编译器的课程,因此我必须自己做(谢谢互联网). 目前im tryin 要理解和实施我的语言的lexer,我需要正则表达式. 我很快就习惯了脚本Perl Regex,我认为我可以将Perl嵌入我的C ++ Lexer 中.现在的问题是: 它会导致头顶沉重吗? 我是否应该尝试使用Boost(或任何其他C ++图书馆良好的Gor Regex)和平? 感谢您阅读此信息:) 解决方案 没有理由,成为一个好程序员的一部分是使用合适的工具,而Perl非常擅长文本处理. 但是,您应该考虑将基于Perl的Lexer填充到您的C ++编译器中(用C ++编写,而不是编译C ++,我希望),您应该考虑在C ++中编写Perl模块,并让编译器驱动程序写作.在perl中,执行Lexing,填写数据结构,然后调用C ++模块的功能以完成编译. 其他解决方案 只是为了进行正则表达方式,将Perl嵌
0 2023-05-24
编程技术问答社区
是否需要一个 "使用严格 "的 Python 编译器?
存在 python的静态分析工具,但是编译时间检查往往与哲学 Python拥抱. 可能可以使用静态分析工具包裹标准的Python解释器,以执行一些" 关于python是否有一些使"严格"行为不必要或尤其不受欢迎的行为? 另外,尽管采用了广泛的采用,但"使用严格"行为是不必要的吗? 注意:通过"必需",我的意思是"实际上是必要的",这不是严格必要的.显然,您 can 在没有"使用严格"的情况下写perl,但是(从我所看到的)大多数perl程序员 do 使用它. 注意:python解释器 - 不需要需要"使用严格"类似的约束 - 您可以使用类似于"使用严格"的伪 - 拼写,而普通解释器将忽略.我不是在谈论添加语言级别的功能. 更新:解释"使用严格"在每个注释中会做什么. (链接到官方文档是在第一段中.) "使用严格"指令具有三个不同的组件,其中只有两个真正有趣: 使用严格的vars:静态检查程序中的词汇范围可变使用情况. (请记住,在Python中,基本
0 2023-05-24
编程技术问答社区
我怎样才能编译我的Perl脚本以减少启动时间?
有没有办法保存我的perl脚本的编译版本? 或一种进行JavaScript样式编译的方法 解决方案 您正在尝试在错误的位置进行优化.如果您在Web/CGI环境中运行脚本,则每次执行脚本时都无需进行编译.这些脚本应持续运行,您可以使用Apache mod/perl,fastcgi或许多较新的技术和框架(例如Plack and Catalyst)进行操作.如果您对自己的需求更具体,您会发现您可以使用许多选项. 其他解决方案 您是否意识到JavaScript已被缩小以节省带宽,不是启动时间或运行时?并且缩小JavaScript的实践始于拨号连接的时代? 当然,曾经有一段时间经常将解释的程序像这样缩小,但是当时典型的CPU是Z80S和8086的运行量为4-8 MHz,并且使用循环负载来执行单个指令.显示:我的Athlon XP-M 2400比我的8MHz 8086快10,000倍. 其他解决方案 尝试Perl编译器,到C B :: C或B :: BYTECODE(
0 2023-05-24
编程技术问答社区
为什么在C#中管理模块比非管理模块更快?
我在书作者中读书(CLR通过C#)谈论IL和托管模块,该模块在本机CPU代码中汇编的模块,然后在书籍作者中执行,并在书中说,托管模块比未管理的模块更快.我的问题是我的问题.为什么托管模块比未管理的模块更快,但在托管模块中首先编译为IL,然后在本机CPU中进行编译. 解决方案 (我下面写的不是我的,它是从书中复制的: CLR via C#, Page No 14 ) 有很多原因导致托管代码胜过非托管代码 当JIT编译器将IL代码编译为本机机器代码时 运行时间,编译器比执行环境更了解 一个非托管的编译器会知道. 托管代码胜过非托管代码的一些方法 JIT编译器可以确定该应用程序是否在 Intel Pentium 4 CPU并生成具有优势的本地代码 CPU提供的任何特殊说明.通常,不受管理 为CPU的最低通用分母编译了应用程序 并避免使用会提供申请的特殊说明 性能提升. JIT编译器可以确定何时在运行的机器上始终失败.考虑示例 if (num_of_c
0 2023-05-24
编程技术问答社区
用C++编译器编译一个C程序的成本是多少?
我想在嵌入式环境上使用c与模板一起使用,我想知道使用C ++编译器编译C程序的成本是多少? 我有兴趣知道是否有比C编译器生成的代码更多的代码. 请注意,由于该程序是C程序,期望毫无例外地调用C ++编译器. 谢谢 维森特 解决方案 假设两个编译器的质量等效,可能没有"成本".传统的反对意见是C ++更为复杂,因此C ++编译器更有可能中有错误. 实际上,这是一个过去的问题,而我倾向于将大部分嵌入式内容作为一种可怕的C/C ++混合动力车 - 利用更强大的打字和更容易的变量声明规则,不产生RTTI或例外处理开销.如果您要使用给定的编译器(GCC等)并将其从C ++模式切换,那么无论如何,您必须担心的是两种语言的常见. 其他解决方案 C ++编译器可能需要更长的时间来编译代码(因为它必须构建用于超载分辨率的数据结构,因此无法提前知道程序不使用过载),但是结果二进制应该非常相似. 实际上,一个重要的优化差异是C ++默认情况下遵循严格的别名规则,而
0 2023-05-24
编程技术问答社区
数字编译逻辑的性能损失比较
在以下NUMBA编译功能以进行逻辑比较的情况下,性能退化的原因是什么: from numba import njit t = (True, 'and_', False) #@njit(boolean(boolean, unicode_type, boolean)) @njit def f(a,b,c): if b == 'and_': out = a&c elif b == 'or_': out = a|c return out x = f(*t) %timeit f(*t) #1.78 µs ± 9.52 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) %timeit f.py_func(*t) #108 ns ± 0.0042 ns per loop (mean ± std. dev. of 7 runs, 10000000 loop
0 2023-05-24
编程技术问答社区
在预编译的ASP.NET网站上,JIT中的高、波动'%时间'。
使用150 *.dll ASP.NET网站预编译(可更新),jit ''高(> 60%)和波动在应用程序变暖(所有功能访问)之后,没有 App重新启动或文件更改可能会生成新的汇编? 一个人会期望为 组件生成的机器代码在该应用程序域的持续时间内被重复使用.缓存的机器代码量是否有限?在哪些方案下,需要在同一应用程序域中重新调整同一组件?还是必须生成新的组件的情况?记忆压力等因素是否会影响此绩效计数器? 参考: 解决方案 它可能是任何可以发出的东西.未正确缓存的LINQ表达式编译或正则表达式. 其他解决方案 如果您设置了缓存参数,则可能会无意间禁用预编译的服务器端缓存.看这篇文章:
0 2023-05-24
编程技术问答社区
为iPhone编译带矢量的Eigen库
我正在为iPhone 4的eigen库编译而苦苦挣扎,该iPhone 4具有带有ARMV7指令套件的ARM处理器.当我指定预处理器定义eigen_dont_vectorize时,一切正常.但是由于某些性能问题,我想使用ARMV7优化代码. 无论我使用哪个编译器使用LLVM-GCC 4.2或LLVM Clang 2.0,我总是遇到编译错误.我想出(或更好地认为),LLVM-GCC 4.2是访问这些Arm-Neon特定说明的唯一方法. 当我不设置eigen_dont_vectorize(并提供-mfloat -abi = softfp -mfpu = neon到gcc),我会得到以下GCC编译器错误: src/m3corelib/eigen/src/core/core/arch/neon/packetmath.h:89:错误:'__ Extension _____' 我已经阅读了使用"旧" GCC 4.2的问题,并建议使用较新版本的GCC.我不确定,但我认为这不是Ap
0 2023-05-24
编程技术问答社区
在Java方法中使用final关键字的表现?
在方法参数中使用final是否允许编译器OOR运行时环境更快地工作?例如,如果您有一个变量传递给您知道的方法不会被修改和使用,那么声明它final? 是否更有效 示例: 第一种方法应该比第二种方法快 public int isLargerAfterTripledFaster(int num, final int limit) { num *= 3; return (num > limit); } public int isLargerAfterTripled(int num, int limit) { num *= 3; return (num > limit); } 如果我确定我永远不想在这里通过一个可修改的变量,我应该执行此技术吗? 解决方案 理论上,声明参数final不会有所作为:允许编译器足够聪明,以确定您的方法不会更改limit参数,并优化代码它像没有实际声明的情况下生成了声明参数final. 您将通过声明方法参数f
0 2023-05-24
编程技术问答社区