Новый PEG-парсер. Тема интересна?
От: tmp4857  
Дата: 04.05.11 07:31
Оценка: 45 (3)
Сделал свой генератор PEG-парсеров, просто для саморазвития Синтаксис выглядит примерно так (на примере JSON):
File = Sp Object Sp;
Object = "{" Sp (Property (Sp "," Sp Property)* Sp)? "}";
Property = StringConstant Sp ":" Sp Value;
Value = StringConstant / Number / Object / Array / "true" / "false" / "null";
Array = "[" Sp (Value (Sp "," Sp Value)* Sp)? "]";
Number = "-"? [0-9]+ ("." [0-9]+)? ([eE] [+-]? [0-9]+)?;
StringConstant = "\"" ("\\" ["\\] / [^"])* "\"";
Sp~ = Spacing?;
Spacing = [ \t\r\n]+;

Умеет генерировать код на C и C#.
Детальных сравнений скорости пока не проводил. JSON (в ASCII) парсится со скоростью ~80 мб/сек. Наверно можно и лучше, я оптимизацией еще не занимался как следует.
Кому-нибудь это интересно?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.