- 1
https://github.com/ruby/ruby/blob/trunk/parse.y
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
https://github.com/ruby/ruby/blob/trunk/parse.y
Как распарсить Руби код.
CHayT 25.09.2017 13:56 # 0
wvxvw 25.09.2017 18:34 # 0
Зато в Руби парсинг интерполяции заебашили в лексере, и поэтому можно писать "#{foo("bar")}", ну или %Q[#{foo("bar")}] если редактор вдруг не может справиться с подсветкой синтаксиса.
Нахер они это придумали...
SemaReal 25.09.2017 14:24 # 0
XYPO3BO3 17.11.2019 22:41 # 0
guest8 17.11.2019 22:47 # −999
Dummy00001 26.09.2017 23:58 # 0
это мне больше понравилось. выхлоп gperf про который ранее я даже и не слышал.
ЗЫ а про лексеры/парсеры, после перла меня уже ничего не удивит. .у там кот наплакал (и граматика весьма регулярная) а вот лексер...
https://github.com/Perl/perl5/blob/blead/toke.c
Perl_yylex() - писан на внутренней либе перла (или как говорят перловцы: "перл написан по большей части на перле").
roman-kashitsyn 27.09.2017 00:34 # 0
А что там особо интересного? Про gperf раньше слышал, но использовать не доводилось.
Dummy00001 27.09.2017 00:51 # 0
я раньше видел генератор, который делал пачку if'ов, которые сравнивали отдельно взятые буквы в подсчитаных позициях, что бы минимальным кол-вом сравнений (а ля дихотомия) распознать слово из словаря. поэтому нечто подобное и ожидал.
SemaReal 27.09.2017 03:36 # 0
wvxvw 02.10.2017 11:03 # +3
Но даже при том, что Як сгенерирует больше говна из этого файла, разница будет не особенно заметна потому что 99% из этого файла он оставит как есть.
SemaReal 04.10.2017 03:05 # 0
/*%
$$ = dispatch4(rescue,
escape_Qundef($2),
escape_Qundef($3),
escape_Qundef($5),
escape_Qundef($6));
%*/
?
guest8 17.11.2019 21:52 # −999
guest8 18.11.2019 01:50 # −999
guest8 17.11.2019 21:44 # −999