我正在使用Nearley.js分析用户输入的句子。我有一个规则,该规则的目标是句子中的数字以“,”分隔,另一条规则中数字以“-”分隔。
但是以“,”为目标的规则取代了以“-”为目标的规则。
我的语法代码
MAIN -> RANGESELECTION
| ACCUMULATIONSELECTION
BUCKET -> [a-zA-Z0-9-]:+ {% function(data) {
return {
value: data.join('').replace(/,/g,"")
};
} %}
ACCUMULATIONSELECTION -> "select " BUCKET:+ "," {%
function(data){
return {type: 'rangeSelection', body: data}
} %}
RANGESELECTION -> "select " (BUCKET "-" BUCKET) {%
function(data){
return {type: 'rangeSelection', body: [data[0],data[2]]}
} %}
我想要的结果是,当用户输入select 111-222时,返回的对象是一个范围选择和2个值(最小值最大值)。选择a1,a2,a3,a4,a5时,返回的对象是一个累加选择和所有输入的值。
感谢您的帮助