Что делает $, за которым следует число (например, $ 1, $ 3) в Схеме? - PullRequest
0 голосов
/ 05 марта 2012

Я анализирую код, и я видел это

[(exp + exp) (+ $1 $3)]

Теперь мне интересно, для чего это нужно?Требуется ли первый и третий элемент этого списка?Это на левой стороне даже считается списком?Я изучаю этот язык, но мне было довольно тяжело с ним, так что вы, ребята, были лучшей помощью.Спасибо!

1 Ответ

7 голосов
/ 05 марта 2012

Учитывая ваш предыдущий вопрос, я полагаю, что это в контексте библиотеки инструментов парсера Racket. Из документов :

(grammar (non-terminal-id
      ((grammar-id ...) maybe-prec expr)
      ...)
...)

Объявляет грамматику для анализа. Каждый grammar-id может быть token-id из group-id, указанного в объявлении токена, или это может быть нетерминальный идентификатор, объявленный в объявлении грамматики. Необязательный prec декларация работает с декларацией precs. expr является «семантическим действие », которое оценивается, когда входной сигнал найден соответствующим соответствующая продукция.

Каждое действие - это код Racket, имеющий ту же область видимости, что и его парсер. определение, за исключением того, что переменные $1, ..., $i связаны, где я количество грамматических идентификаторов в соответствующей продукции. Каждый $k связан с результатом действия для k-го символа грамматики на право на производство, если этот грамматический символ не является терминальным, или значение, хранящееся в токене, если символ грамматики является терминалом.

...