javascript - 在 PEG.js 上为 STRING.STRING.STRING 制作语法表达式

标签 javascript peg

我正在寻找用于匹配的 peg.js 语法表达式:

  • "variable" # 失败
  • “变量。” # 失败
  • "" # 失败
  • "variable.variable" # 好的
  • "variable.variable.variable.variable.variable" #Ok

我期望的输入

  • {PATH: "variable.variable"}
  • {PATH: "variable.variable.variable.variable.variable"}

示例.pegjs

start = 
    PATH_EXP

STRING_EXP =
    chars:[0-9a-zA-Z_]+ { return chars.join(""); }

PATH_EXP =    
    path:(STRING_EXP "." STRING_EXP) { return {PATH: path.join("")}; }

我不知道如何让表达式重复,但也让它成为可选的。

最佳答案

这是我想出的去掉“.”的方法。人物。我承认我以前从未使用过 peg.js :)

PATH_EXP =    
    (first:STRING_EXP rest:("." STRING_EXP)*) {
      return {
        PATH: first +  
              rest.map(function(v) {
                return v[1]; 
              }).join("")
      };
    }

编辑 — 等等,这样更好:

PATH_EXP = 
    first:STRING_EXP rest:("." s:STRING_EXP { return "." + s; })+ {
      return {
        PATH: first + rest.join('')
      };
    }

编辑 — 如果您想要“.”,请明确说明。您将在第二部分的 Action 中包含的字符。错过了问题的那一部分。

关于javascript - 在 PEG.js 上为 STRING.STRING.STRING 制作语法表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19790748/

相关文章:

javascript - 为什么我收到错误 'document.write can be a form of eval' ?

javascript - 如何通过js将表格单元格的内容相乘?

javascript - 将 html 表导出到 Excel 时出现错误

解析 amotoen 的问题

intellij-plugin - 在没有左递归的情况下重写解析表达式语法 (PEG)

javascript - 谁更快 : PEG or GLR?

javascript - 非常非常简单的javascript问题

javascript - 提交时切换表单 - jQuery (Ajax)

ruby - Treetop ruby​​ 解析器 - 无法解析 Ordered Choice

python - pypeg2 - 可以使用 peg 语法解析此表达式吗?