# ICON Liskov Directive Parsing Implementation Notes ### Parser - Implemented features - Read file and collects all DSL directives. - Parses preprocessor directives (`START`, `END`, `CREATE`, `DECLARE`). - Does syntax validation on the preprocessor directives. - Does validation of semantics on the preprocessor directives. - Returns a class containing all necessary data for code generation. Example directives: Delimiter: `;` **DECLARE** ``` !$DSL DECLARE(vt=(nproma, p_patch%nlev, p_patch%nblks_e); & !$DSL vn_ie=(nproma, p_patch%nlevp1, p_patch%nblks_e)) ``` **CREATE** ``` !$DSL CREATE(vt; vn_ie) ``` **START** ``` !$DSL START(name=mo_nh_diffusion_stencil_06; & !$DSL vn_ie=p_diag&vn_ie(:, :, 1); w=p_prog%w(:,:,1); & !$DSL z_v_grad_w=z_v_grad_w(:,:,:); vn_ie_abs_tol=1e-12_wp; & !$DSL vertical_lower=1; vertical_upper=nlev; & !$DSL horizontal_lower=i_startidx; horizontal_upper=i_endidx) ``` **END** ``` !$DSL END(name=mo_nh_diffusion_stencil_06) ```