Что означают «синтаксис» и «семантика» и чем они отличаются?

0
7861

Язык – это набор действительных предложений. Что делает приговор действительным? Вы можете разбить валидность на две части: синтаксис и семантику. Термин «синтаксис» относится к грамматической структуре, тогда как термин «семантика» относится к значению словарных символов, организованных с помощью этой структуры. Однако грамматический (синтаксически действительный) не означает разумный (семантически действительный). Например, грамматическое предложение «коровы текут превосходно» грамматически нормально (подлежащее-глагол наречие) в английском языке, но не имеет смысла. Аналогично, в языке программирования ваша грамматика (правила синтаксиса) может разрешать ID EQUALS ID, но язык может разрешать предложение только в том случае, если текст, соответствующий идентификатору, не представляет имя типа (семантическое правило).

Когда вы пишете грамматику ANTLR, вы указываете набор синтаксических правил, которым подчиняется ваш язык. ANTLR использует это для создания распознавателя предложений на этом языке. Чтобы применить семантические правила, необходимо добавить в грамматику действия или семантические предикаты. Действия проверяют «ценность» различных токенов и их отношений для определения семантической достоверности. Например, если вы ищете имя типа в таблице символов, чтобы убедиться, что это тип, а не переменная, вы применяете семантическое правило.