DFAを使用すると、通常の言語で文字列を検証できます。DFAを使用して、Context-Free Grammarで指定された通常の言語を解析し、解析木を生成できますか?
例1:L = ac(b)* bcb | ad(b)* bb。文字列 "acbbbcb"は、DFAによって正しいものとして検証できます。
また、時々、標準的な言語をCFGで表現することができます。
例2
- S - > "" "B"
- A - > "C" B "C" | "d" B
- B→ "b" B | 「B」
上記のCFGによって生成された言語は、我々はこのCFGによって生成された(通常の)文字列を検証するためにDFAを使用することができることを意味し、例1
でちょうど正規表現です。しかし、どのようにして対応する解析木を生成できますか?
これはあなたの質問に対する答えではありませんが、しばらく前に私は "オンライン正規表現のビジュアライザー"を見つけました:http://regexvisualizer.apphb.com/ –