【发布时间】:2017-07-31 11:46:15
【问题描述】:
我需要解析类似 JSON 的对象 {"f": 1, "i": 2, "g": 5, ...},但与常规 JSON 对象不同,输入可以在对象中出现零次或一次...
所以,这是错误的对象{"f": 1, "f": 1, "i": 2, ...},因为它有键“f 两次”。
而且,这个对象很好{"i": 2},因为它只有键“i”并且不会出现多次。
这是我尝试过的。我知道它不起作用,但我不知道如何设置它是正确的。
RuleMemberList
: RuleMember
{{$$ = {}; $$[$1[0]] = $1[1];}}
| RuleMemberList ',' RuleMember
{$$ = $1; $1[$3[0]] = $3[1];}
;
RuleMember
: I ':' RuleString
{$$ = [$1, $3];}
| G ':' RuleString
{$$ = [$1, $3];}
| F ':' RuleFinder
{$$ = [$1, $3];}
| A ':' RuleAction
{$$ = [$1, $3];}
| T ':' RuleTarget
{$$ = [$1, $3];}
| P ':' RuleNumber
{$$ = [$1, $3];}
| C ':' RuleChance
{$$ = [$1, $3];}
| L ':' RuleLayers
{$$ = [$1, $3];}
| R ':' RuleString
{$$ = [$1, $3];}
| E ':' RuleEvents
{$$ = [$1, $3];}
| B ':' RuleBinds
{$$ = [$1, $3];}
;
我能以某种方式将其定义为 0 次或 1 次吗?
【问题讨论】:
标签: parsing compiler-construction bison