VY
Size: a a a
VY
AT
IK
AT
VY
IK
AT
AT
VY
#define SET_LEX_STATE(ls) \Кажется, этот макрос просто трейсит состояние лексера
(p->lex.state = \
(p->debug ? \
rb_parser_trace_lex_state(p, p->lex.state, (ls), __LINE__) : \
(enum lex_state_e)(ls)))
AT
#define SET_LEX_STATE(ls) \Кажется, этот макрос просто трейсит состояние лексера
(p->lex.state = \
(p->debug ? \
rb_parser_trace_lex_state(p, p->lex.state, (ls), __LINE__) : \
(enum lex_state_e)(ls)))
(enum lex_state_e)(ls) ни на что не намекает? 😉AK
VY
(enum lex_state_e)(ls) ни на что не намекает? 😉enum lex_state_e обратно?debug, то трейсит, иначе ничего не делаетAT
enum lex_state_e обратно?debug, то трейсит, иначе ничего не делает(p->lex.state = 😉AT
VY
lex.state смотрит только сам parser.y (в местах, где используется IS_lex_state, типа https://github.com/ruby/ruby/blob/c5eb24349a/parse.y#L9228)VY

s (некий потенциально side-effectful statement) можно выполнить до\после e? (стр. 175 tiger-book)VY

VY

BinOp(Const n, op, ESeq(s, e)) = ESeq(s, BinOp(Const n, op, e))
Const n могло бы быть Name l, или вместо ESeq(...) могло бы быть Seq(Const _)BD
SE