Недавно мне был предоставлен доступ к проекту, использующему язык C. В файле lexer.l
я встречал некоторые незнакомые мне операторы и разделители и надеялся объяснить их. Ниже приведен список указанных структур.
Разделители %{...%}
, ...
представляют собой набор #include
операторов и определений функций
%option
, за которым следует строка, соответствующая имени переменной
%x
, за которой следует группа идентификаторов, квалифицируемых как имена переменных, разделенных пробелами:
%% ... %%
, с ...
замененным набором блоков, разделенных символами новой строки, такими как
"~" { macro_noarg("\\nbspc"); }
"\\%" { chk_indent(); emitc('%'); }
[ \t\r]*"%" { BEGIN(comment); }
[ \t\r]*"$$" { emit_el();
indent(); emit(".. math::\n");
ilevel +=2;
if(user_lbl) {
...
}
...
<wait>[...]
, <wait>"..."
или <wait>s
, где s
является символом
<paraml>[...]
, <paraml>"..."
или <paraml>s
, где s
является символом
<paraval>[...]
, <paraval>"..."
или <paraval>s
, где s
является символом
Что общий смысл этих конструкций?