Регулярные выражения — хороший способ анализа обычных строк, но когда строки становятся более сложными, регулярное выражение становится в n² раз сложнее.
Каков общий подход к синтаксическому анализу строк?
Например. В настоящее время я определил синтаксис ({who}[{where}].{what} = {value}
), который может или не может определять определенные компоненты. Это достаточно просто, чтобы его было легко понять, но достаточно сложно, чтобы потребовать большого регулярного выражения.
Как правило, некоторые компоненты можно опустить, однако есть определенные компоненты, которые зависят от других компонентов. Пример:
'key = value' => {
who: null,
where: null,
what: 'key',
value: 'value'
}
'me.key = value' => {
who: 'me',
where: null,
what: 'key',
value: 'value'
}
'me[here].key = value' => {
who: 'me',
where: 'here',
what: 'key',
value: 'value'
}
'me[here] = value' => 'Error! Need to specify *what*.'
'[here].key = value' => 'Error! Need to specify *who* if *where* is specified.'