
最簡單的電腦
|
99
現在我們有了解析正規運算式所需要的所有部分,接著就將它轉換成抽象語法樹,並使
用它來匹配字串:
>> require 'treetop'
=> true
>> Treetop.load('pattern')
=> PatternParser
>> parse_tree = PatternParser.new.parse('(a(|b))*')
=> Sy ntaxNode+Repeat1+Repeat0 offset=0, "(a(|b))*" (to_ast,brackets):
SyntaxNode+Brackets1+Brackets0 offset=0, "(a(|b))" (to_ast,choose):
SyntaxNode offset=0, "("
SyntaxNode+Concatenate1+Concatenate0 offset=1, "a(|b)" (to_ast,first,rest):
SyntaxNode+Literal0 offset=1, "a" (to_ast)
SyntaxNode+Brackets1+Brackets0 offset=2, "(|b)" (to_ast,choose):
SyntaxNode offset=2, "("
Sy ntaxNode+Choose1+Choose0 offset=3, "|b" (to_ast,first,rest): SyntaxNode+Empty0
offset=3, "" (to_ast) ...