如何解决在 PEG 解析器中解析和验证条件 IF
尝试解析单行条件,其中代码尝试测试左手是否等于右手。
{
user = {id: 'abc123'}
function_name() {...}
}
if (user.id === 'abc123...') { function_name() }
到目前为止我已经看过这些帖子 PEG-php parsing if statement 和 How to describe conditional statement (if-then-else) using PEG
PEG 语法对我来说非常陌生,我确信它是否是满足我需求的正确方法。可能有点矫枉过正。
目前正在使用 peg.js/peggy.js
解决方法
你的问题很模糊,我会尽量给你一个起点,
这是一个会消耗您的示例输入的语法。
Code = (Condition / Curly / Statement)+
Curly = '{' code: Code+ '}' { return {nested: code}}
Statement = $([^{}]+)
Condition = _ 'if' _ '(' lhs:term '===' rhs:term ')' _ body: Code {
return {condition: {lhs,rhs},body}
}
term = $[^{}()=]+
_ "whitespace"
= [ \t\n\r]*
对于条件部分,它将产生
{
"condition": {
"lhs": "user.id ","rhs": " 'abc123...'"
},"body": [
{
"nested": [
[
" function_name() "
]
]
}
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。