为 STRING 创建一个语法表达式.字符串.PEG上的绳子.js

Make a Grammar expression for STRING.STRING.STRING on PEG.js

本文关键字:PEG 字符串 js 表达式 语法 创建 STRING 一个      更新时间:2023-09-26

我正在寻找一个 peg.js 语法表达式来匹配:

  • "variable" # 失败
  • "variable." # 失败
  • "" # 失败
  • "variable.variable" # 确定
  • "variable.variable.variable.variable.variable" #Ok

我期望的输入

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

Sample.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("")}; }

我不知道如何使表达式重复,但也使其可选。

这是我想出的去掉"."字符的方法。我承认我从来没有使用过钉子.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('')
      };
    }

编辑 — 显然,如果您想要"."字符,您可以将它们包含在第二部分中的操作中。 错过了问题的那部分。