Нет слов: как расширить свой активный лексикон. Лексический разбор текста

Лексический разбор слова предполагает анализ слова как лексической единицы русского языка, с указанием: 1) однозначности-многозначности слова; 2) типа его лексического значения в данном контексте; 3) синонимов; 4) антонимов; 5) происхождения слова; 6) принадлежности слова к общеупотребительной лексике или лексике, ограниченной в употреблении; 7) фразеологических связей слова. Лексический разбор является факультативным видом разбора для школьной практики. Обычно он не даётся в качестве контрольного задания.

Лексический разбор слова должен проводиться при помощи лингвистических словарей: толкового словаря, словаря синонимов, антонимов, омонимов; фразеологического словаря русского языка.

Схема лексического разбора слова.

1. Определите лексическое значение слова в контексте.

2. Если слово многозначно, укажите другие его значения (при необходимости можно пользоваться толковым словарём русского языка).

3. Установите тип лексического значения в данном контексте: а) прямое; б) переносное.

4. Если значение переносное, охарактеризуйте вид переносного значения.

5. Постройте синонимический ряд для слова в данном значении.

6. Подберите антонимическую пару к данному слову.

7. Определите, является данное слово исконно русским или заимствовано из другого языка.

8. Установите принадлежность анализируемого слова к общеупотребительной лексике или лексике, ограниченной в употреблении.

9. Определите, является ли слово устаревшим.

10. Укажите, входит ли данное слово в состав фразеологизмов.

Образец лексического разбора слова.

Завершив свои операции , фронты один за другим останавли­вались на достигнутых к весне рубежах. (К. Симонов)

1. Операция - ряд стратегических действий, проводимых в период наступательных или оборонительных боев (воен., проф.).

2. Слово многозначно: а) хирургическая операция; б) торговая операция; в) финансовая операция; г) почтовые операции.

3. Значение прямое.

4. Синонимический ряд: операция, бой, сражение, военные действия.

5. Слово заимствовано из латинского языка.

6. Слово профессиональной лексики (военная терминология).

7. Слово не является устаревшим, оно входит в активный словарь русского языка.

Лексический разбор слова (разбор под цифрой 5)

Лексический разбор слова должен проводиться при помощи лингвистических словарей: толкового словаря, словаря синонимов, антонимов, омонимов; фразеологического словаря русского языка.

Схема лексического разбора слова

1. Определите лексическое значение слова в контексте.

2. Если слово многозначно, укажите другие его значения.

3. Установите тип лексического значения в данном контексте: а) прямое; б) переносное.

4. Если значение переносное, охарактеризуйте вид переносного значения.

5. Постройте синонимический ряд для слова в данном значении.

6. Подберите антонимическую пару к данному слову.

7. Определите, является данное слово исконно русским или заимствовано из другого языка.

8. Установите принадлежность анализируемого слова к общеупотребительной лексике или лексике, ограниченной в употреблении.

9. Определите, является ли слово устаревшим.

10. Укажите, входит ли данное слово в состав фразеологизмов.

Примеры лексического разбора слова

Завершив свои операции, фронты один за другим останавливались на достигнутых к весне рубежах . (К. Симонов)

1. Операция - ряд стратегических действий, проводимых в период наступательных или оборонительных боев (воен., проф.).

2. Слово многозначно: а) хирургическая операция; б) торговая операция; в) финансовая операция; г) почтовые операции.

3. Значение прямое.

4. Синонимический ряд: операция, бой, сражение, военные действия.

5. Слово заимствовано из латинского языка.

6. Слово профессиональной лексики (военная терминология).

7. Слово не является устаревшим, оно входит в активный словарь русского языка.

С лечебной целью используют корни и корневища элеутерококка, собранные осенью. (В. Ягодка)

1. Корень – в данном предложении слово “корень” имеет значение “вросшая в землю часть растения, через которую оно всасывает соки из почвы”.

2. Слово многозначно: а) часть растения, б) часть основания, в) первопричина, г) часть слова, д) алгебраическая операция, функция, е) число, обращающее в ноль или тождество

4. Омонимов, синонимов, антонимов в данном значении не имеет.

5. Исконно русское.

6. Слово общеупотребительное, употребляется во всех стилях речи.

7. Слово не является устаревшим, входит в активный словарный запас.

8. Слово входит во фразеологизмы: зри в корень, вырывать с корнем, корень зла, на корню, под корень, пустить корни.

Старый друг лучше новых двух.

1. Старый друг – друг, существующий с давнего времени, долго.

2. Слово старый является многозначным: а) проживший или просуществовавший долгое время, достигший старости (Старый человек), б) не новый, повреждённый временем или пришедший в ветхость (Старый чемодан), в) не новый, давно известный или издавна привычный (Это старый анекдот), г) существовавший давно, древний (Картины старых мастеров), д) прежний, предшествующий (Он бросил старую работу и устроился на новую).

3. В предложении употреблено в прямом значении.

4. Синоним - давний.

5. Антоним - новый.

6. Исконно русское.

7. Слово общеупотребительное, употребляется во всех стилях речи.

8. Слово не является устаревшим, входит в активный словарный запас.

9. Слово входит во фразеологизмы: старый конь борозды не испортит, старый ворон зря не каркает.

Часть II: Лексический Анализатор

Введение.

Я всегда считал, что примеры, по которым узнаешь что-либо новое, должны быть достаточно просты. Вот почему задумал примитивный компилятор, который, тем не менее, содержит все особенности полнофункционального. Придумал язык для манипулирования строками текста с Cи-подобным синтаксисом, с Бейсикоподобными операциями. Ниже приведен пример корректной программы на нашем языке.

Print "Введите ваше имя, пожалуйста > ";
input name;
if (name == "Jan") { // сравнение строк
name = "мой создатель"; // присваивание строк
happy = "yes";
}
print "Благодарю тебя, " + name + "!\n" + // операция конкатенации
"Ты осчастливил маленькую примитивную программку!";

Легко видеть, что здесь нет структурных элементов, таких как функции, классы и т.п. Здесь даже нет числовых типов. Однако функциональные возможности новой версии данной программы можно легко расширить.

У нас куча работы - помните список компонентов из предыдущей части? Сегодня мы займемся первым из них - лексическим анализатором. Чтобы вас немного подбодрить, замечу, что на самом деле это не сложная часть компилятора.

Все в порядке. Приступим к анализу?

Что, где, когда, а также, почему и как?

Перво-наперво, мне кажется, вы бы хотели узнать, что такое лексический анализатор, и зачем он нам нужен. Его задача заключается в преобразовании потока символов из файла источника в поток лексем. По существу, он последовательно просматривает символы и "узнает в них слова".

Можно было бы просто написать функцию, которая сравнивает строку в текущей позиции файла-источника со всеми ключевыми словами, однако работать это будет невыносимо медленно. Вместо этого, для распознавания слов воспользуемся конечным автоматом. (Если вы понятия не имеете о чем я говорю, не волнуйтесь - это не так важно).

Самое удивительное, что нам не придется делать вовсе никакой трудоемкой и сложной работы. Анализатор лексем будет сгенерирован программкой "lex". Это программа под UNIX, однако, есть несколько версий под Win32. (Та версия, которую я использовал, называется Flex. Я включил её в zip-файлы для этой части.) Вся информация по Lex в в виде HTML . (Совет для русскоязычных пользователей: если вы планируете использовать в скриптах русскоязычные комментарии, строки и идентификаторы, рекомендуется написать лексический анализатор вручную, без использования заграничных генераторов кода. Те реализации lex, которые мне попадались под руку, неправильно обрабатывали символы кириллицы, воспринимая их как отрицательные числа и приводя к типу int; в результате программа с русскими комментариями нередко зависала или вовсе не обрабатывалась. А вручную написать лексический анализатор не составит большого труда, при этом рекомендуется использовать для считывания символов переменную типа unsigned char, а не просто char. Кстати, yacc - см. ниже - подобные замечания не касаются. Прим. перев.)

Итак, вы знаете, что делает лексический анализатор (он же анализатор лексем), и мы собираемся его создать. Самое время скачать архив к уроку tut2.zip и взглянуть на код. Исходные файлы для этой части - string.l, main.cpp, а также несколько заголовочных файлов. Заметим, что архив содержит ряд каталогов. Flex.exe - в корневом, а файлы текущего урока хранятся в каталоге tut2\directory.

Лексические правила трансляции!!!

Lex нужна некоторая информация, чтобы создать лексический анализатор. Перед тем, как я опишу ее, давайте посмотрим, что должно быть во входном файле для Lex.

<определения>
%%
<правила_трансляции>
%%
<код_пользователя>

Секция <определения> содержит некоторые макросы регулярных выражений. (Регулярные выражения описаны в руководстве по Lex, а более подробно - . Мы объясняем Lex, что подразумеваем под буквой (LETTER), числом (DIGIT), а также под идентификатором (IDENT) и строковой константой (STR) (где последовательность букв включена в двойные кавычки).

Эта секция также содержит некоторый начальный код, например, #include-ы для стандартных заголовочных файлов и опережающих ссылок. Код должен быть между %{ и %}. Включил файл lexsymb.h, через минуту мы рассмотрим его.

Секция <код_пользователя> может содержать код, необходимый для анализа. В нашем случае несколько функций. Одна из них пропускает все символы внутри комментариев, несколько других возвращают содержимое строковых констант и имена идентификаторов. Также секция содержит основную функцию анализатора.

Файл lexsymb.h включает в себя список названий лексем, которые будут возвращаться функциями лексического анализатора. Помимо этого, в нем присутствует объединение "yylval", используемое для обмена дополнительной информацией (например, имя идентификатора). Почему мы используем такое объединение, будет ясно в следующей части.

А теперь взгляните на текущие правила трансляции. Следует заметить, что я пользуюсь только комментариями /* */. Lex довольно старая программа и не поддерживает // во входных файлах. Кстати, мы делаем лексический анализатор на Си. Есть версии Lex и для С++, однако традиционно Lex под Unix генерировал С-код. А мы ведь хотим добиться независимости нашей программы от платформы, или нет?

"if" {return IF;} "=" {return ASSIGN;} ";" {return END_STMT;} {IDENT} {Identifier (); /* идентификатор: копирует имя */ return ID;} {STR} {StringConstant (); /* строковая константа: копирует содержимое */ return STRING;} "//" {EatComment();} /* комментарии: пропускает */ \n {lineno++;} /* новая линия: считает строки */ {WSPACE} {} /* пустое пространство: (ничего не делает) */ . {return ERROR_TOKEN;} /* любой другой символ: ошибка, неправильная лексема */

Сюда я не включил правила трансляции, которые очень похожи. Как видно, каждое из них начинается с модели, которую Lex должен понять, далее идет некоторый код, говорящий Lex, что делать (этот код *может* содержать некоторые штуки из C++, поскольку программка просто копирует его в выходной файл). Примечательно то, что сначала проверяются самые важные конструкции. Иногда это бывает очень полезно.

Три первых конструкции очень просты. Происходит простое распознавание строки символов, в результате чего возвращается соответствующий код лексемы. При этом, чтобы, например, изменить оператор присваивания на такой, как в Паскале, достаточно заменить соответствующую строку на ":=".

А вот четвертая строка уже поинтереснее: используется макрос IDENT, распознающий строку из символов и цифр, которая не удовлетворяет всем предыдущем условиям. Если находит - вызывает функцию Identifier(), которая копирует строку из yytext (где содержится текст соответствующей лексемы) в новый массив символов. Затем лексический анализатор возвращает ID-номер лексемы; потом можно будет воспользоваться указателем yylval->str, чтобы узнать имя идентификатора. STR - аналогично, но для строковой константы.

Последующие строки следят за появлениями комментариев, концов строк, а также пустых пространств. При этом, происходит подсчет количества строк. Это потребуется в будущем для вывода сообщений об ошибках. Самое последнее правило сообщает Lex, что если входная последовательность символов не удовлетворяет всем предыдущим условиям (регулярное выражение "." означает любой допустимый символ за исключением "\n"), должна быть возвращена лексема-признак ошибки. Ее обработка реализуется вне кода данной функции.

Такой входной файл для программы Lex может быть перекомпилирован в lex.cpp при помощи следующей команды:

Flex -olex.cpp string.l

В zip-архив я также включил файл проекта для MSVC 6.0 (string.dsp). Полагаю, он также годится и для версии 5.0, но не уверен. Файл проекта содержит команду для построения string.l, поэтому он компилируется автоматически.

К сожалению, программа Lex использует нестандартный include-файл: unistd.h, не доступный в системе Windows. В корневом каталоге архива этот файл пуст. Поэтому после того, как разархивируете пример, настройте соответствующим образом Visual С++, включив начальный каталог в список, где указываются include-файлы. (в среде MSVC: Tools->Options->Directories->Include).

Файл lex.cpp собственно представляет собой законченную версию лексического анализатора, который удовлетворяет нашим правилам трансляции. Вот как просто! Основная программа в этом примере просто читает лексемы, вызывая функцию лексического анализатора, и выводит на экран названия лексемы и ее значения (если это идентификатор или строка). Можете попробовать написать кучу всякой муры, а потом наблюдать за тем, что вытворяет лексический анализатор. Произвольный набор букв и цифр, как правило, будет восприниматься как идентификаторы, но другие символы (например, "$"), будут рассматриваться как ошибочные лексемы. В начальном каталоге урока есть файл example.str. Можете воспользоваться и им.

Все лучше и лучше, не правда ли?

Итак, сейчас у нас есть программа, которая умеет "читать". Однако, она до сих пор не имеет ни малейшего представления, что она читает, и корректно ли все, что написано. Просто программа будет принимать любую лексему, о которой она что-либо знает.

Поэтому нужно научить ее грамматике. Просто удивительное совпадение, именно грамматика будет темой нашего следующего урока. Компонент будет называться синтаксический анализатор. Его задача - определять структуру программы и проверять ее синтаксис.

А затем все будет по-настоящему интересно. Мы проверим компилятор на прочность программой, которая была представлена в самом начале. Компилятор ее проглотит, не потому что он проглатывает все на свете, а потому что он знает, синтаксис у программы корректный! Вижу, вы уже горите желанием приступить к дальнейшей работе, как и я. Но вам придется подождать следующей части.

Как осуществляется лексический разбор слова? Ответ на поставленный вопрос вы узнаете из данной статьи. Кроме этого, вашему вниманию будет представлено несколько примеров такого разбора.

Общая информация

Лексический разбор слова осуществляется при помощи различных лингвистических словарей, а именно толкового, фразеологического, словаря антонимов, синонимов и омонимов.

7. Слово «косарь» - устаревшее. Соответственно, оно не является частью активного словарного запаса современных людей.

Лексический разбор слова «золотая»

Проанализируем слово «золотая», которое входит в следующее предложение: «Пришла к нам золотая осень».

1. Золотая осень - время года, когда все деревья и травы становятся желтыми и напоминают оттенок золота (металла).

2. Слово «золотая» имеет несколько значений, а именно:

  • сделанный из золота;
  • шитый золотом;
  • исчисляемый по курсу золота;
  • подобный цвету золота;
  • прекрасный, очень хороший и замечательный;
  • благоприятный и самый счастливый;
  • любимый, дорогой (в обращении к кому-либо);
  • минералогические и ботанические названия.

3. Значение - переносное.

4. Вид переносного значения словосочетания «золотая осень» - метафора (обозначает подобный цвету золота).

5. Синонимами выражения «золотая» являются следующие: желтая, сказочная, восхитительная и пр.

6. Слово «золотая» имеет следующие антонимы: грязная, отвратительная, скверная, плохая.

9. Слово «золотая» - не устаревшее. Соответственно, оно является частью активного словарного запаса современных людей.

Лексический анализ других слов

Приведем еще несколько примеров:

  • Лексический разбор слова «фантастических» в предложении «Я насмотрелся фантастических фильмов»:

1. Фантастический фильм - измышленный фантазией и в действительности не существующий.

2. Слово «фантастический» имеет несколько значений, а именно: волшебный и причудливый; невероятный и несбыточный; не существующий и являющийся фантазией.

3. Значение - прямое.

4. Синонимами слова являются следующие: невероятный, ошеломляющий, не соответствующий реальности.

5. Имеет следующие антонимы: обычный, банальный.

7. Происхождение - заимствовано из английского языка (fantastic).

8. Данное выражение является общеупотребительным. Оно может применяться в любых стилях речи.

  • Лексический разбор слова «доброте» в предложении: «По доброте душевной он отдал всю свою одежду»:

1. По доброте - душевное качество, выражающееся в заботливом и нежном отношении к кому-либо.

2. Слово «доброта» имеет только одно значение.

3. Значение - прямое.

4. Синонимами слова являются следующие: хороший, благодушный, добродушный, человеколюбивый.

5. Имеет следующие антонимы: злой, жестокий.

7. Происхождение - исконно русское.

8. Данное выражение является общеупотребительным. Оно может применяться в любых стилях речи.

9. Выражение не устаревшее. Соответственно, оно является частью активного словарного запаса современных людей.

10. Применяется в следующих фразеологизмах: по доброте душевной, слепая доброта и пр.