почему у sexp есть массив в конце - PullRequest
1 голос
/ 31 мая 2010
RubyParser.new.parse "1+1" 
s(:call, s(:lit, 1), :+, s(:array, s(:lit, 1))) 

Код выше эта ссылка

Почему в Sexp есть массив после +. Я просто пытаюсь выучить ruby ​​parser и все, что касается AST. Я программировал какое-то время, но не получил формального образования в области компьютерных наук. Так что укажите на хорошую статью, которая объясняет AST и т. Д. Пожалуйста, не книга дракона. Я пытался пару раз, но не мог понять большую часть этой книги

Ответы [ 2 ]

2 голосов
/ 31 мая 2010

Просто предположение: массив представляет список параметров. Сообщение «+» отправляется первому «1» со списком параметров, который имеет только один элемент, второй «1».

1 голос
/ 31 мая 2010

В Ruby (или, по крайней мере, в MRI) все отправленные сообщения имеют ровно один аргумент: массив. Если вы отправите сообщение без аргументов, массив будет просто пустым, если вы отправите сообщение с одним аргументом (как в этом примере), массив будет иметь один элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...