“A ::= aAa / a” in PEG
- 1. “A ::= aAa / a” in PEG
Masaki Hara
さっき考えてたことのメモ
- 6. PEGの病的な例
• “a := aAa / a” というルールを考える
– 直感的にはaが奇数個並んだ文字列にマッチ
– 実際はaが(2^n-1)個並んだ文字列にマッチ
- 8. a a a a a a a
A ::= aAa
| a
- 9. a a a a a a a
A ::= aAa
| a
×
aAaを試そうと
するが失敗
- 10. a a a a a a a
A ::= aAa
| a
○
aを試す
→成功
- 11. a a a a a a a
A ::= aAa
| a
- 12. a a a a a a a
A ::= aAa
| a
- 13. a a a a a a a
A ::= aAa
| a
×
- 14. a a a a a a a
A ::= aAa
| a
○
aにマッチ
- 15. a a a a a a a
A ::= aAa
| a
- 16. a a a a a a a
A ::= aAa
| a
- 17. a a a a a a a
A ::= aAa
| a
- 18. a a a a a a a
A ::= aAa
| a
○
aAaにマッチ
- 19. a a a a a a a
A ::= aAa
| a
aAaにマッチしてしまった
のでaにはマッチしない
- 20. a a a a a a a
A ::= aAa
| a
A=aaaと決まっているので
aaaaaにマッチしようとする
→失敗
- 21. a a a a a a a
A ::= aAa
| a
×
- 22. a a a a a a a
A ::= aAa
| a
○
- 23. a a a a a a a
A ::= aAa
| a
- 24. a a a a a a a
A ::= aAa
| a
- 25. a a a a a a a
A ::= aAa
| a
- 26. a a a a a a a
A ::= aAa
| a
○
- 27. a a a a a a a
A ::= aAa
| a
aaaにマッチ
→全体にマッチしない
(∴5文字は×)
- 28. a a a a a a a
A ::= aAa
| a
- 29. a a a a a a a
A ::= aAa
| a
7文字は○
- 30. a a a a a a a
A ::= aAa
| a
01234567