getParseData: equal_assign отсутствует терминал - PullRequest
0 голосов
/ 13 декабря 2018

В выводе функции GetParseFunction () отсутствует тот же родительский узел назначения равенства.Это верно?В R грамматике есть нетерминал, называемый «equal_assign», я бы ожидал его как родительский узел назначения равенства.

Упомянутая часть грамматики R (из исходных файлов R) \ R-3.5.1 \ src\ main \ gram.y):

equal_assign : expr EQ_ASSIGN expr_or_assign { $$ = xxbinary($2,$1,$3); } ;

expr_or_assign : expr { $$ = $1; } | equal_assign { $$ = $1; } ;

Пример:

тест.R: foo = - 7

Предположим, мы хотели бы изучить синтаксическое дерево test.R с помощью getParseData:

getParseData(parse("test.R"))

результат:

  line1 col1 line2 col2 id parent     token terminal text
1     1    1     1    3  1      3    SYMBOL     TRUE  foo
3     1    1     1    3  3      0      expr    FALSE     
2     1    5     1    5  2      0 EQ_ASSIGN     TRUE    =
8     1    7     1    9  8      0      expr    FALSE     
4     1    7     1    7  4      8       '-'     TRUE    -
5     1    9     1    9  5      6 NUM_CONST     TRUE    7
6     1    9     1    9  6      8      expr    FALSE      

Интересно, не должно ли быть родительского узла с идентификаторами 3, 2, 8, потому что на самом деле нет дочерних узлов корневого узла.

Этоошибка или я что-то упустил?

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