А что с ними стряслось?
на каком входном тексте?
Чо пишет
-4 не смог спрарчить А тройку спарсил
Хотя тут вопрос — как в линго устроен откат по грамматике?
откат влево вроде https://github.com/area9innovation/flow9/blob/master/doc/lingo.markdown#syntax
Я бы сделал операторы как add = mul (ADD mul)* ADD = '+' | '-' mul = factor (MUL factor)* MUL = '*' | '/'
я не совсем понимаю мысль
Мысль простая — развилка в своей левой части должна начинаться с терминала
Собственно, почему операторы вот так делают
вот обьясните кстати, пожалуйста
Потому что это грёбаный рекурсивный спуск. Он по-другому не умеет. Хошь операторы с нужной асоциативностью? Бери LR(1) или LALR(1) парсер. Они рекурсивный подъём — строго мощнее, ещё и доложат тебе о конфликтах. А не разрешат их по принципу "слева от | выигрывает".
А LL(*) не подойдёт?
Если хочешь так же страдать с ассоцииативностью то подойдёт
Посмотрите на действующую грамматику flow9 https://github.com/area9innovation/flow9/blob/master/tools/flowc/flow.lingo
чет у них как будто нет
Обсуждают сегодня