Разобрать по составу слово отличие: Какой корень у слова различие?

Конструкция компилятора

. В чем разница между деревьями синтаксического анализа и абстрактными синтаксическими деревьями (AST)?

Вот объяснение деревьев синтаксического анализа (конкретные синтаксические деревья, CST) и абстрактных синтаксических деревьев (AST) в контексте построения компилятора. Это похожие структуры данных, но они устроены по-разному и используются для разных задач.

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

Это древовидные структуры данных, которые показывают, как входная строка терминалов (токенов исходного кода) была сгенерирована грамматикой рассматриваемого языка. Корнем дерева синтаксического анализа является наиболее общий символ грамматики — начальный символ (например, оператор ), а внутренние узлы представляют нетерминальные символы, до которых расширяется начальный символ (может включать сам начальный символ), например как выражение , оператор , термин , вызов функции . Листья — это терминалы грамматики, фактические символы, которые появляются как идентификаторы, ключевые слова и константы в языке / входной строке, например. вместо , 9 , если и т. д.

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

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

Вот графическое представление дерева синтаксического анализа для выражения 9 - 5 + 2 (обратите внимание на размещение терминалов в дереве и фактические символы из строки выражения):

AST представляют синтаксическую структуру какой-то код . Деревья программных конструкций, таких как выражения, операторы управления потоком и т. д., сгруппированы в операторы (внутренние узлы) и операнды (листья). Например, синтаксическое дерево для выражения i + 9 будет иметь оператор + в качестве корня, переменную i в качестве левого потомка оператора и число 9 в качестве правого потомка.

Разница здесь в том, что нетерминалы и терминалы не играют роли, поскольку AST имеют дело не с грамматиками и генерацией строк, а с конструкциями программирования, и, таким образом, они представляют отношения между такими конструкциями, а не способы, которыми они генерируются грамматика.

Обратите внимание, что сами операторы являются конструкциями программирования на данном языке и не обязательно должны быть настоящими вычислительными операторами (например, + is): для циклов также будут обрабатываться таким же образом. Например, у вас может быть синтаксическое дерево, такое как для [ expr, expr, expr, stmnt ] (представлено встроенным), где для является оператором , а элементы в квадратных скобках являются его дочерними элементами (представляющими C’s для синтаксиса ) — также состоит из операторов и т. д.

AST обычно также генерируются компиляторами на этапе синтаксического анализа (синтаксического анализа) и используются позже для семантического анализа, промежуточного представления, генерации кода и т. д.

Вот графическое представление AST:

Слово, пожалуйста: превосходное сравнение слов «яснее» и «более ясно»

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

(Los Angeles Times)

By June Casagrande

«Когда грамматически правильно использовать «more clear» вместо «cleerer»?» — спросил интернет-пользователь на Quora в прошлом году.

Есть некоторые проблемы с этим вопросом. Во-первых, у автора сложилось впечатление, что «более ясный» является грамматически правильной формулировкой в ​​одних контекстах, а «более ясный» — правильным в других.

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

«Более ясно» — это не английский язык, — ответил один из пользователей. «Выражение «яснее»».

«Использование любого из них грамматически правильно», — сказал другой.

В школе нас никто не учит, куда обращаться с такими вопросами. Даже мне было трудно исследовать этот вопрос. Таким образом, вы не можете винить спрашивающего в том, что он ищет помощи в Интернете, где вы можете получить хорошие и плохие ответы, не зная, какие из них верны, а также щедрую порцию спам-рекламы с советами по фондовому рынку и программными продуктами. .

Так что же делать англоговорящему из лучших побуждений?

Во-первых, отбросьте идею о том, что есть только один правильный способ что-то написать или сказать. Английский язык довольно гибкий, поэтому грамматическим может быть несколько формулировок. Подумайте о «не я» и «не я», и вы поймете, что я имею в виду.

Во-вторых, поймите, откуда берется правильность в английском языке. Нет ни Уголовного кодекса по грамматике, ни официального списка того, что правильно и что неправильно. Вместо этого есть три элемента, которые определяют правильность: синтаксис, словарные определения и обычное использование.

Синтаксис означает грамматическую механику предложений, например, как подлежащие должны согласовываться с глаголами. Вы не говорите: «Мы знаем, как», вы говорите: «Мы знаем, как». «Знаю» — правильное спряжение для первого лица множественного числа, поэтому «знает» не грамматически сочетается с «мы».

Словарные определения более понятны. Если вы говорите «собака», когда имеете в виду «кошку», вы неправильно используете слово «собака».

Третий арбитр правильности в английском языке, обычное употребление, говорит вам, является ли структура настолько устоявшейся, что считается идиоматической — правильной, несмотря на отсутствие грамматики.

«Разве я не?» — лучший пример. Местоимение «я» обычно сочетается с «есть», а не с «есть». Но в какой-то момент «разве я» стало стандартной идиомой, так что это правильно, хотя и без грамматики.

Так как же все это относится к выбору между «более четким» и «более четким»?

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

Грамматика здесь полезна, потому что она говорит нам, что для некоторых прилагательных вы можете добавить «er» в конце, чтобы получить его сравнительную форму, и «est», чтобы получить превосходную степень. Итак, мы знаем, что «очиститель» является стандартным и правильным.

Но чтобы по-настоящему понять сравнительную и превосходную степени, словарь — наш самый полезный инструмент. Во-первых, он может показать нам, какие слова имеют сравнительные формы, а какие нет. Найдите слова «чище» и «интеллигентнее», и вы поймете, что я имею в виду.

«Чистее» есть в словаре. «Интеллигент» — нет. Так что, если вы хотите сказать, что интеллект одного человека выше, чем у кого-то другого, вы должны составить собственную формулировку, например: «более умный».

Итак, мы знаем, что словарь считает «более ясным» правильным, но означает ли это, что «более ясный» — нет? Для этого ответа мы должны внимательно изучить слово «больше». Нигде ни в одном словаре не сказано, что нельзя добавлять слово «more» к прилагательным, которые уже имеют сравнительную форму. «Больше» означает «больше», стоит ли оно перед «интеллектуальным», «ясным» или любым другим прилагательным.

Таким образом, и «более четкий», и «более четкий» грамматически правильны. Но если вы заботитесь о своем использовании, вы все равно можете избегать «более четкого». По данным Google Ngram Viewer, словосочетание «яснее» встречается в опубликованных текстах примерно в 12 раз чаще, чем словосочетание «четче». Кроме того, хотя все знают, что «более четкий» — это правильно, некоторые не знают, что «более четкий» — тоже, и они будут думать, что вы ошибаетесь, если используете его.

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *