我正在为我们网站的用户编写一个消息传递系统,它实现了分段以允许单个消息针对用户的动态段。因为给定消息的段定义可能包含多个单独的段匹配,所以消息正文的内容也必须被分段。我试图通过编写一个自定义词法分析器/解析器(我什至不知道词法分析器或解析器)来做到这一点,直到与一位更有经验的程序员的一次偶然对话建议我看看词法分析器和解析器生成器。我做了一些研究,发现 PHP 原生 Lime 解析器生成器似乎是我最好的选择,因为我正在编写的代码是 PHP。
我已经查看了计算器示例的语法文件和元语法(事实上,我已经花了几个小时分析大部分源代码)但我真的很难理解如何构建甚至是一个简单的语法文件。有没有人知道任何专门用于 Lime 的示例语法文件,因为在我们看来它是它自己的语法定义,而不是 Lemon 或任何其他 PG 的语法定义。
如果您愿意并且能够提供具体示例,我特别尝试以如下格式编写条件:
This is a text block all users will see.
{{IF user.modules.sms}}
This is a text block only visible to users with the sms module enabled
{{/IF}}
{{IF user.modules.anothermodule AND user.previouslogin < (now() - 3600)}}
This is a text block only visible to users with the anothermodule module enabled, whose previous login was more than an hour ago
{{/IF}}
或者只是一般来说,如果有人对实现此类功能的其他可能方法有任何建议,我愿意接受建议!请记住,不可能使用 PHP,因为编写这些消息的人将是项目经理和营销人员。