php - 使用 PHP 创建新的嵌入式语言

标签 php command-line administration embedded-language

我正在尝试开发一个管理面板,并且我有一个命令行。当用户发送如下命令时,我需要使用 PHP 来识别它。

我的目标是简化管理面板中的任务。

 create page -attr1 90 -attr2 'page title';

 update category 90 -name 'Technology';

主要有两点:

  1. 动词和主语(即创建页面、更新类别)
  2. 属性(可以是 STRING 和 INT)

以及更复杂的示例:

create page -name EN:'Static Page' CA:'Statična Stranica' -category 3,6,12,15;

我可以从哪里开始创建这种非常小的嵌入式语言,或者我怎样才能真正做好它?

请给出聪明的答案。

最佳答案

假设此命令行是交互式的,那么您就为自己设定了一项不小的任务。本质上你必须写一个 interpreter 。假设lexical analysis很简单,您将花费大部分时间来编写您的 parser ,以及命令集背后的代码。

如果您的命令行交互性最低,并且您的命令词汇量相对较小(大约几个命令),您可以使用正则表达式编写一个简单的识别器。鉴于您允许的参数示例,正则表达式可能会很快变得粗糙。在这种情况下,或者在你的词汇量有点大的情况下(多于一些,可能少于 20 或 30——作为在黑暗中站不住脚的刺),你可能需要转移到一个简单的状态 -基于解析器,从命令行中提取 token ,直到出现错误或可以处理的完整命令。

它的失控程度完全取决于你的命令词汇及其参数的复杂程度。如果您需要用 ANTLR 之类的东西编写语法,那么您已经走得太远了,并且可能正在构建一种新的编程语言。 :-)

关于php - 使用 PHP 创建新的嵌入式语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4569198/

相关文章:

http - 在服务器上创建文件的 CURL 命令

powershell - 如何从命令行检测我是否在 powershell 中?

ios - 使用 Xcode 的命令行构建工具存档 (xcodebuild archive)

php - 使用 PHP 生成嵌套 ul 列表的问题

php - XML 更新后 PHP 中的 MYSQL 事件

php - magento 不发送任何邮件,如何调试?

database - 是否可以在 DB2 中设置 MQT 的自动刷新?

c# - MSMQ 中的多个队列(性能下降)

sql-server - SQL Server 2008数据库复制-文件权限

php - 如何增加和减少网页中的文字大小?