начало работы с lex - PullRequest
       12

начало работы с lex

1 голос
/ 13 мая 2010

Мне нужно отформатировать какой-нибудь hexdump следующим образом:

00010: 02 03 04 05
00020: 02 03 04 08
00030: 02 03 04 08

00010: 02 03 04 05
00020: 02 03 04 05
02 03 04 05
02 03 04 08
‍

до

02 03 04 05
02 03 04 08
02 03 04
02 03 04 05
02 03 04 05
02 03 04 05
02 03 04
  • удалить поля адреса, если они есть

  • удалить все 08 в конце абзаца (за которым следует пустая строка)

  • удалить все пустые строки

Как это можно сделать, используя lex ? спасибо!

Ответы [ 2 ]

1 голос
/ 13 мая 2010

Если вы выплескиваете весь файл как одну строку, я думаю, что эти регулярные выражения будут делать то, что вы хотите (написано для Perl, но не проверено):

s/^\d{4}: //mg
s/ 08\n\s*\n/\n/g
s/^\s*$//mg
1 голос
/ 13 мая 2010

Это нельзя сделать напрямую с помощью lex.Lex является токенизатором, а не парсером.

Честно говоря, это можно сделать с помощью регулярного выражения и не требует сложности генератора сканера + генератора парсера.

...