Я програмую вже багато років, але одне завдання, яке все ще займає мене невдовзі довго, - це визначити граматику для аналізатора, і навіть після цих надмірних зусиль я ніколи не впевнений, що граматика, яку я придумав, є хорошою ( будь-якою розумною мірою «добра»).
Я не сподіваюся, що існує алгоритм автоматизації процесу задачі граматики, але я сподіваюся, що існують способи структурувати проблему, що усуває значну частину здогадок та спроб і помилок мого поточного підходу.
Перша моя думка - прочитати про парсери, і я щось з цього зробив, але все, що я прочитав з цього приводу, граматику сприймає як задану (або достатньо тривіальну, щоб можна було вказати її за допомогою перевірки), і фокусується на проблема перекладу цієї граматики в аналізатор. Мене цікавить проблема безпосередньо раніше: як в першу чергу вказати граматику.
Мене насамперед цікавить проблема конкретизації граматики, яка формально являє собою збірку конкретних прикладів (позитивних та негативних). Це відрізняється від проблеми проектування нового синтаксису . Дякую Макнейлу за вказівку на цю відмінність.
Я ніколи не оцінював різницю між граматикою та синтаксисом, але тепер, коли я починаю це бачити, я міг би загострити своє перше уточнення, сказавши, що мене насамперед цікавить проблема визначення граматики, яка примусить попередньо визначений синтаксис: просто так трапляється, що в моєму випадку основою цього синтаксису є, як правило, сукупність позитивних та негативних прикладів.
Як визначається граматика для аналізатора? Чи є книга чи посилання там, що є фактичним стандартом для опису найкращих практик, методологій проектування та іншої корисної інформації щодо визначення граматики для аналізатора? На які моменти, читаючи про граматику парсера, я повинен зосереджуватися?