20

文法で空白改行を無視したいので、 PEG.js出力に欠落しています。また、括弧内のリテラルは新しい配列で返される必要があります。

文法

start
  = 'a'? sep+ ('cat'/'dog') sep* '(' sep* stmt_list sep* ')'

stmt_list
  = exp: [a-zA-Z]+ { return new Array(exp.join('')) }

sep
  = [' '\t\r\n]

テストケース

a dog( Harry )

出力

[
   "a",
   [
      " "
   ],
   "dog",
   [],
   "(",
   [
      " "
   ],
   [
       "Harry"
   ],
   [
      " "
   ],
   ")"
]

欲しい出力

[
   "a",
   "dog",
   [
      "Harry"
   ]
]
4

1 に答える 1