OberonCore https://forum.oberoncore.ru/ |
|
TextMappers.Scanner: опознание ид-в КП и литер - опция? https://forum.oberoncore.ru/viewtopic.php?f=23&t=6313 |
Страница 1 из 1 |
Автор: | Евгений Темиргалеев [ Вторник, 20 Ноябрь, 2018 14:04 ] |
Заголовок сообщения: | TextMappers.Scanner: опознание ид-в КП и литер - опция? |
Потребовался готовый сканер в качестве которого TextMappers.Scanner подходит, и я уже не первый раз наткнулся на проблему распознавания идентификаторов. XXX должен отличаться от "XXX", а не проходить как цепочка. Решение простое: сделал копию модуля и допилил его, вернув (в этом уверен), тип name: Код: CONST … (** Scanner.type **) char* = 1; name* = 2; string* = 3; int* = 4; real* = 5; … PROCEDURE Name (VAR s: Scanner); VAR max: INTEGER; ch: CHAR; BEGIN s.type := (*string*)name; s.len := 0; ch := s.rider.char; max := LEN(s.string); … Попутно увидел фичу, которой тоже иногда не хватало при использовании сканера, когда надо было указывать произвольные литеры. Сканер при указании цепочки длины один в одиночных (!) кавычках опознает ее как литеру. В данном случае мне фича оказалась не нужна, убрал: Код: PROCEDURE SingleQuotedString (VAR s: Scanner); … BEGIN … s.string[s.len] := 0X; (*IF s.len = 1 THEN s.type := char; s.char := s.string[0] END;*) Я уверен, что Оминк убрали распознавание идентификаторов из сканера. Почему -- вопрос открытый. Вопросы к аудитории. Кому-то приходилось тоже сталкиваться с необходимостью отличать идентификаторы от цепочек? В сканере есть опции -- распознавать/не распознавать множества, логические и т. п. Может быть стоит дополнить их -- распознавать идентификаторы (или читать как цепочки), трактовать цепочку длины один как литеру (или как цепочку)? |
Автор: | adimetrius [ Суббота, 07 Декабрь, 2019 04:03 ] |
Заголовок сообщения: | Re: TextMappers.Scanner: опознание ид-в КП и литер - опция? |
Евгений, да, приходилось то и дело. Я был в шоке, когда узнал, что сканер распознает MODULE и "MODULE" как одну и ту же лексему - это же не одно и то же!! Даже не возьму в толк, в каком классе задач это одно и то же. Я, как и вы, скопировал модуль и переделал. Я занимался небольшими инструментами для себя-разработчика, поэтому сканировал тексты - программы на КП. Поэтому добавил еще лексему "комментарий". При желании их можно пропускать, а при желании - сканер их полноценно возвращает. Я полагаю, для таких задач нужен сканер, который в принципе заточен под КП. Т.е. по сути лексический анализатор КП. И если обобщать - думаю, будет польза, если как-то особенно обрабатывать #2, давая возможность проанализировать, что там за встроенный вид. Что скажете? В каком состоянии ваш модуль? |
Автор: | luowy [ Суббота, 07 Декабрь, 2019 06:29 ] |
Заголовок сообщения: | Re: TextMappers.Scanner: опознание ид-в КП и литер - опция? |
I dont like to use the TextMappers, customized a scanner module for own use. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |