检查我是否正确行事。我认为我对BNF语法有一个相当牢固的把握,但是不太了解这些行为应该如何运作。下面的WORD标记是一个字符串。标签列表应该是一个标签数组。其他规则应根据类型做不同的事情。如果它是标签对象,它应该成为名为tags的JSON对象的成员。如果它是一个字符串,它应该是一个名为title的属性。这是向前发展的正确方法吗?
headerline
: STAR SPACE WORD headerline
{$$ = {state: $3, rest: $4}}
| WORD headerline
/* Looking for something like if typeof $2 === 'object' add word to title else concat string */
{$$ = $1 + $2}
| SPACE headerline
{$$ = $1 + $2}
| taglist
{$$ = {tags: $1}}
| WORD
{$$ = $1}
;
示例文字:
* TODO Use docker for setup :dev:shell:
旁注和其他问题:
return $1
vs $$ = $1
会让人感到非常困惑。