{"id":10,"date":"2017-10-31T19:48:27","date_gmt":"2017-10-31T19:48:27","guid":{"rendered":"http:\/\/codeworker.org\/?page_id=10"},"modified":"2025-01-29T12:50:45","modified_gmt":"2025-01-29T12:50:45","slug":"codeworker-presentation","status":"publish","type":"page","link":"https:\/\/codeworker.org\/","title":{"rendered":"Codeworker &#8211; presentation"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#131517&#8243; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;70px|0px|70px|0px|false|true&#8221; custom_padding_tablet=&#8221;30px|0px|30px|0px|false|true&#8221; custom_padding_phone=&#8221;30px|0px|30px|0px|false|true&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|50px|0px|false|true&#8221; custom_padding_tablet=&#8221;0px|0px|30px|0px|false|true&#8221; custom_padding_phone=&#8221;0px|0px|30px|0px|false|true&#8221; custom_css_main_element=&#8221;align-items: center;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;49px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1>Code worker &#8211; presentation<\/h1>\n<p>CodeWorker is a versatile Open Source (GNU Lesser General Public License) parsing tool and a source code generator devoted to generative programming and is used by many companies and <a style=\"color: #6b6b6b;\" href=\"\/different-online-casinos-use-our-tools\/\">online casinos<\/a>\u00a0worldwide. Generative programming is a software engineering approach interested in automating the production of reusable, tailor-made, adaptable and reliable IT systems.<\/p>\n<p>In layman&#8217;s terms, CodeWorker lets you generate code by parsing existing languages, or by creating and parsing your own language. Once a language file has been parsed, CodeWorker provides several techniques for generating code.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/codeworker.org\/wp-content\/uploads\/2022\/10\/codeworker-img-1.jpg&#8221; title_text=&#8221;codeworker-img-1&#8243; align=&#8221;center&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|true&#8221; custom_padding_tablet=&#8221;30px|0px|0px|0px|false|true&#8221; custom_padding_phone=&#8221;30px|0px|0px|0px|false|true&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|50px|0px|false|true&#8221; custom_padding_tablet=&#8221;0px|0px|30px|0px|false|true&#8221; custom_padding_phone=&#8221;0px|0px|30px|0px|false|true&#8221; custom_css_main_element=&#8221;align-items: center;&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;on|tablet&#8221; custom_css_main_element_tablet=&#8221;display: flex!important;||flex-direction: column-reverse;&#8221; custom_css_main_element_phone=&#8221;display: flex!important;||flex-direction: column-reverse;&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/codeworker.org\/wp-content\/uploads\/2022\/10\/codeworker-img-2.jpg&#8221; title_text=&#8221;codeworker-img-2&#8243; align=&#8221;center&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|true&#8221; custom_padding_tablet=&#8221;30px|0px|0px|0px|false|true&#8221; custom_padding_phone=&#8221;30px|0px|0px|0px|false|true&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>The tool&#8217;s scripting language drives the parsing and source code generation process. The scripting language syntax is derived from the C family of languages, making it familiar to most programmers. The template syntax is like JSP, ASP, or Velocity. It has variations for parsing, code generation, or procedural programming, giving the developer a number of options for organizing CodeWorker projects.<\/p>\n<p>It is also possible to integrate the CodeWorker&#8217;s features about parsing and code generation into C++, Java and .NET applications:<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|50px|0px|false|true&#8221; custom_padding_tablet=&#8221;0px|0px|30px|0px|false|true&#8221; custom_padding_phone=&#8221;0px|0px|30px|0px|false|true&#8221; custom_css_main_element=&#8221;align-items: center;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; background_color=&#8221;#000000&#8243; text_orientation=&#8221;center&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_margin_tablet=&#8221;0px|0px|15px|0px|false|true&#8221; custom_margin_phone=&#8221;0px|0px|15px|0px|false|true&#8221; custom_margin_last_edited=&#8221;on|phone&#8221; custom_padding=&#8221;15px|10px|15px|10px|true|true&#8221; custom_padding_last_edited=&#8221;off|tablet&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; border_width_top=&#8221;2px&#8221; border_color_top=&#8221;#26ff5c&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>a Java interface to the CodeWorker API,<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; background_color=&#8221;#000000&#8243; text_orientation=&#8221;center&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;15px|10px|15px|10px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; border_width_top=&#8221;2px&#8221; border_color_top=&#8221;#26ff5c&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>a .NET assembly of the CodeWorker API,<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row make_equal=&#8221;on&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; custom_css_main_element=&#8221;align-items: center;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p style=\"text-align: center;\">Please do not hesitate to contact us (questions, criticisms, suggestions, &#8230;).<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#000000&#8243; use_background_color_gradient=&#8221;on&#8221; background_color_gradient_type=&#8221;elliptical&#8221; background_color_gradient_stops=&#8221;rgba(18,214,120,0.2) 0%|rgba(30,31,37,0) 50%&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;110px|0px|110px|0px|true|true&#8221; custom_padding_tablet=&#8221;50px|0px|50px|0px|true|true&#8221; custom_padding_phone=&#8221;50px|0px|50px|0px|true|true&#8221; top_divider_style=&#8221;arrow3&#8243; top_divider_color=&#8221;#131517&#8243; top_divider_height=&#8221;50px&#8221; top_divider_height_tablet=&#8221;30px&#8221; top_divider_height_phone=&#8221;30px&#8221; top_divider_height_last_edited=&#8221;on|tablet&#8221; bottom_divider_style=&#8221;arrow3&#8243; bottom_divider_color=&#8221;#131517&#8243; bottom_divider_height=&#8221;50px&#8221; bottom_divider_height_tablet=&#8221;30px&#8221; bottom_divider_height_phone=&#8221;30px&#8221; bottom_divider_height_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row make_equal=&#8221;on&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|true&#8221; custom_css_main_element=&#8221;align-items: center;&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; text_orientation=&#8221;center&#8221; width=&#8221;80%&#8221; width_tablet=&#8221;100%&#8221; width_phone=&#8221;100%&#8221; width_last_edited=&#8221;on|tablet&#8221; module_alignment=&#8221;center&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>Integration in eclipse<\/h2>\n<p>CodeWorker provides a scripting language adapted both to the description of language grammars and to the writing of code generation templates. Unfortunately, scripts are arduous to read without syntax coloring.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#131517&#8243; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;70px|0px|70px|0px|false|true&#8221; custom_padding_tablet=&#8221;30px|0px|30px|0px|true|true&#8221; custom_padding_phone=&#8221;30px|0px|30px|0px|true|true&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|50px|0px|false|true&#8221; custom_padding_tablet=&#8221;0px|0px|30px|0px|false|true&#8221; custom_padding_phone=&#8221;0px|0px|30px|0px|false|true&#8221; custom_css_main_element=&#8221;align-items: center;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Hopefully, there now exists an plugin (click on the image to download it). The plugin provides an editor for each kind of script, with syntax highlighting. An informational tooltip appears when the cursor moves on built-in functions. The reference manual is completely integrated in the <strong>Help Contents<\/strong> menu topic. A tutorial is also accessible from the same location.<\/p>\n<p>Future developments are coming, relative to launching a code generation project from the IDE, instead of just running the command line in a shell.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/codeworker.org\/wp-content\/uploads\/2022\/10\/codeworker-img-3-scaled.jpg&#8221; title_text=&#8221;codeworker-img-3&#8243; align=&#8221;center&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|true&#8221; custom_padding_tablet=&#8221;30px|0px|0px|0px|false|true&#8221; custom_padding_phone=&#8221;30px|0px|0px|0px|false|true&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row make_equal=&#8221;on&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|30px|0px|false|true&#8221; custom_css_main_element=&#8221;align-items: center;&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; text_orientation=&#8221;center&#8221; width=&#8221;80%&#8221; width_tablet=&#8221;100%&#8221; width_phone=&#8221;100%&#8221; width_last_edited=&#8221;on|tablet&#8221; module_alignment=&#8221;center&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>Parsing<\/h2>\n<p>CodeWorker can be trained to parse almost any language and provides two distinct methods for creating parsers:<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row make_equal=&#8221;on&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|50px|0px|false|true&#8221; custom_padding_tablet=&#8221;0px|0px|30px|0px|false|true&#8221; custom_padding_phone=&#8221;0px|0px|30px|0px|false|true&#8221; custom_css_main_element=&#8221;align-items: center;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; background_color=&#8221;#000000&#8243; custom_margin=&#8221;0px|0px|30px|0px|false|true&#8221; custom_margin_tablet=&#8221;0px|0px|15px|0px|false|true&#8221; custom_margin_phone=&#8221;0px|0px|15px|0px|false|true&#8221; custom_margin_last_edited=&#8221;on|tablet&#8221; custom_padding=&#8221;15px|20px|15px|20px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; border_width_top=&#8221;2px&#8221; border_color_top=&#8221;#26ff5c&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>the extended-BNF notation is declarative, and is a derivative of BNF (the Backus-Naur Form defines the grammar of a language) extended with regular expressions, predefined non-terminals and useful directives. Something close to javacc or to ANTLR in the JAVA world except a separate parser class is not necessary with CodeWorker. This means that parsing scripts can be tested without having to compile a separate parser class.<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; background_color=&#8221;#000000&#8243; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;15px|20px|15px|20px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; border_width_top=&#8221;2px&#8221; border_color_top=&#8221;#26ff5c&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Reading tokens is procedural and a somewhat obsolete now that CodeWorker handles BNF parsing scripts smoothly.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|true&#8221; custom_css_main_element=&#8221;align-items: center;&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/codeworker.org\/wp-content\/uploads\/2022\/10\/codeworker-img-5.jpg&#8221; title_text=&#8221;codeworker-img-5&#8243; align=&#8221;center&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_margin_tablet=&#8221;0px|0px|30px|0px|false|true&#8221; custom_margin_phone=&#8221;0px|0px|30px|0px|false|true&#8221; custom_margin_last_edited=&#8221;on|tablet&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>While parsing files, CodeWorker feeds nodes into a parse tree. A tree is a convenient structure to represent a hierarchical set of nodes, as in XML for instance.<\/p>\n<p>The parse tree is populated by the parsing task, and used by the source code generation script to generate code, text or binary data.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#000000&#8243; use_background_color_gradient=&#8221;on&#8221; background_color_gradient_type=&#8221;elliptical&#8221; background_color_gradient_stops=&#8221;rgba(18,214,120,0.2) 0%|rgba(30,31,37,0) 50%&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;110px|0px|110px|0px|true|true&#8221; custom_padding_tablet=&#8221;50px|0px|50px|0px|true|true&#8221; custom_padding_phone=&#8221;50px|0px|50px|0px|true|true&#8221; top_divider_style=&#8221;arrow3&#8243; top_divider_color=&#8221;#131517&#8243; top_divider_height=&#8221;50px&#8221; top_divider_height_tablet=&#8221;30px&#8221; top_divider_height_phone=&#8221;30px&#8221; top_divider_height_last_edited=&#8221;on|tablet&#8221; bottom_divider_style=&#8221;arrow3&#8243; bottom_divider_color=&#8221;#131517&#8243; bottom_divider_height=&#8221;50px&#8221; bottom_divider_height_tablet=&#8221;30px&#8221; bottom_divider_height_phone=&#8221;30px&#8221; bottom_divider_height_last_edited=&#8221;on|tablet&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row make_equal=&#8221;on&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|50px|0px|false|true&#8221; custom_padding_tablet=&#8221;0px|0px|30px|0px|false|true&#8221; custom_padding_phone=&#8221;0px|0px|30px|0px|false|true&#8221; custom_css_main_element=&#8221;align-items: center;&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; text_orientation=&#8221;center&#8221; width=&#8221;80%&#8221; width_tablet=&#8221;100%&#8221; width_phone=&#8221;100%&#8221; width_last_edited=&#8221;on|tablet&#8221; module_alignment=&#8221;center&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>Source code generation<\/h2>\n<p>CodeWorker can parse a language and use the resulting parse tree to generate source code via template-based scripts. One example is database DDL (Database Definition Language). CodeWorker has been used to parse DDL and generate large portions of a Java application.<\/p>\n<p>CodeWorker&#8217;s source code generation can occur in three ways: generation, expansion or translation.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|30px|0px|false|true&#8221; custom_padding_tablet=&#8221;0px|0px|15px|0px|false|true&#8221; custom_padding_phone=&#8221;0px|0px|15px|0px|false|true&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#131517&#8243; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;on|tablet&#8221; custom_css_main_element_tablet=&#8221;margin-bottom: 15px!important;&#8221; custom_css_main_element_phone=&#8221;margin-bottom: 15px!important;&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; background_enable_color=&#8221;off&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_margin_tablet=&#8221;0px|0px||0px|false|true&#8221; custom_margin_phone=&#8221;0px|0px||0px|false|true&#8221; custom_margin_last_edited=&#8221;on|desktop&#8221; custom_padding=&#8221;15px|20px|15px|20px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; border_width_top=&#8221;2px&#8221; border_color_top=&#8221;#26ff5c&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><strong>generation<\/strong> uses a script, much like JSP or PHP, to produce an output file. Only certain areas, called protected areas in the vocabulary of CodeWorker, are preserved in the file.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#131517&#8243; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; background_enable_color=&#8221;off&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;15px|20px|15px|20px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; border_width_top=&#8221;2px&#8221; border_color_top=&#8221;#26ff5c&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><strong>expansion<\/strong> is used when small portions of an existing file need to be generated. The points where code is to be inserted are called markups in the vocabulary of CodeWorker, and code is inserted at the markups. The Class Wizard of Visual C++ generates code using this principle.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row make_equal=&#8221;on&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|true&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#131517&#8243; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; background_enable_color=&#8221;off&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;15px|20px|15px|20px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; border_width_top=&#8221;2px&#8221; border_color_top=&#8221;#26ff5c&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><strong>translation mode<\/strong> is used when both parsing and source code generation are required to produce a file. Here are the description of two main families of use:<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; background_enable_color=&#8221;off&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;15px|20px|15px|20px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; border_width_top=&#8221;2px&#8221; border_color_top=&#8221;#26ff5c&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>source-to-source translation: a file must be rewritten in a different syntax. For example, a LaTeX file might have to be translated in HTML.<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; background_enable_color=&#8221;off&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;15px|20px|15px|20px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; border_width_top=&#8221;2px&#8221; border_color_top=&#8221;#26ff5c&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>program transformation: a source file has to change for optimizing, refactoring, instrumenting or rewriting selected portions. For example, a script could add a trace at the beginning of each function body of a JAVA or C++ source code. To do that, parsing discovers function bodies, and source code generation will insert the code that implements the trace.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|phone&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#131517&#8243; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;70px|0px|70px|0px|false|true&#8221; custom_padding_tablet=&#8221;30px|0px|30px|0px|false|true&#8221; custom_padding_phone=&#8221;30px|0px|30px|0px|false|true&#8221; hover_enabled=&#8221;0&#8243; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|50px|0px|false|true&#8221; custom_padding_tablet=&#8221;0px|0px|30px|0px|false|true&#8221; custom_padding_phone=&#8221;0px|0px|30px|0px|false|true&#8221; custom_css_main_element=&#8221;align-items: center;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>Parse-to-generate: a straightforward process<\/h2>\n<p>Tasks for parsing specifications and generating code are executed in a straightforward process presented in the figure below. Because CodeWorker includes an expressive scripting language, there is no need for a separate &#8220;glue language&#8221; to join parsing and generation tasks.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/codeworker.org\/wp-content\/uploads\/2022\/10\/codeworker-img-6.webp&#8221; title_text=&#8221;codeworker-img-6&#8243; align=&#8221;center&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_margin_tablet=&#8221;0px|0px|0px|0px|true|true&#8221; custom_margin_phone=&#8221;0px|0px|0px|0px|true|true&#8221; custom_margin_last_edited=&#8221;on|tablet&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding_tablet=&#8221;30px||||false|true&#8221; custom_padding_phone=&#8221;30px||||false|true&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;1280px&#8221; custom_margin=&#8221;0px||0px||true|false&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|true&#8221; hover_enabled=&#8221;0&#8243; custom_css_main_element=&#8221;align-items: center;&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;on|tablet&#8221; custom_css_main_element_tablet=&#8221;display: flex!important;||flex-direction: column-reverse;&#8221; custom_css_main_element_phone=&#8221;display: flex!important;||flex-direction: column-reverse;&#8221; sticky_enabled=&#8221;0&#8243;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/codeworker.org\/wp-content\/uploads\/2022\/10\/codeworker-img-4.jpg&#8221; title_text=&#8221;codeworker-img-4&#8243; align=&#8221;center&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding_tablet=&#8221;30px|0px|0px|0px|false|true&#8221; custom_padding_phone=&#8221;30px|0px|0px|0px|false|true&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Mukta|500|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;1.75em&#8221; link_text_color=&#8221;#26ff5c&#8221; header_font=&#8221;Mukta|700|||||||&#8221; header_text_color=&#8221;#12d678&#8243; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.1em&#8221; header_2_font=&#8221;Mukta|700|||||||&#8221; header_2_text_color=&#8221;#12d678&#8243; header_2_font_size=&#8221;45px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;Mukta|700|||||||&#8221; header_3_text_color=&#8221;#12d678&#8243; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; custom_margin=&#8221;0px|0px|0px|0px|true|true&#8221; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; header_font_size_tablet=&#8221;45px&#8221; header_font_size_phone=&#8221;40px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;40px&#8221; header_2_font_size_phone=&#8221;35px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_3_font_size_tablet=&#8221;35px&#8221; header_3_font_size_phone=&#8221;30px&#8221; header_3_font_size_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>The figure describes the classical approach used in a leader script interpreted by CodeWorker. It shows the script, which calls first a BNF-parse script, before continuing in sequence and calling a template-based script.<\/p>\n<p>There are some other capabilities not noted above, for example CodeWorker can be run as a CGI program and this is something we have tested extensively on large websites.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; theme_builder_area=&#8221;post_content&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#000000&#8243; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243;][et_pb_row _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; theme_builder_area=&#8221;post_content&#8221; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243;][et_pb_column _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; type=&#8221;4_4&#8243; theme_builder_area=&#8221;post_content&#8221;][et_pb_testimonial author=&#8221;Mark Dimech&#8221; portrait_url=&#8221;https:\/\/codeworker.org\/wp-content\/uploads\/2025\/01\/2-6a956050-17d3-47d6-8f1d-9ce80b18ef90-512&#215;512.jpg&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; theme_builder_area=&#8221;post_content&#8221; job_title=&#8221;Head of Backend&#8221; company_name=&#8221;PlayOJO&#8221; content__hover_enabled=&#8221;on|desktop&#8221; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243; background_color=&#8221;#12d678&#8243; body_text_color=&#8221;#000000&#8243; author_text_color=&#8221;#000000&#8243; position_text_color=&#8221;#000000&#8243; company_text_color=&#8221;#000000&#8243; content__hover=&#8221;<\/p>\n<p>CodeWorker has given us the chance to enhance the features of PlayOJO to make it a leading casino in Canada. It has been a long process to adapt, but definitely worth it. We will keep collaborating with them because they are the leading technology for online casinos.<\/p>\n<p>&#8220;]<\/p>\n<p>CodeWorker has given us the chance to enhance the features of PlayOJO to make it a leading casino in Canada. It has been a long process to adapt, but definitely worth it. We will keep collaborating with them because they are the leading technology for online casinos.<\/p>\n<p>[\/et_pb_testimonial][et_pb_testimonial author=&#8221;Chelsea Watkins&#8221; portrait_url=&#8221;https:\/\/codeworker.org\/wp-content\/uploads\/2025\/01\/3-2c9425e6-760b-4b77-9cfc-a0149e550cf6-512&#215;512.jpg&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; theme_builder_area=&#8221;post_content&#8221; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243; job_title_last_edited=&#8221;off|desktop&#8221; job_title=&#8221;CTO&#8221; company_name=&#8221;RocketPlay&#8221; background_color=&#8221;#12d678&#8243; body_text_color=&#8221;#000000&#8243; author_text_color=&#8221;#000000&#8243; position_text_color=&#8221;#000000&#8243; company_text_color=&#8221;#000000&#8243;]<\/p>\n<p>Multiple times we have tried to change to new technologies, but we had never managed to find one with such potential that would break the common ones. CodeWorker has given us the chance to be different and grow to levels that we did not know we could achieve in the Canadian online casino industry.<\/p>\n<p>[\/et_pb_testimonial][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Code worker &#8211; presentation CodeWorker is a versatile Open Source (GNU Lesser General Public License) parsing tool and a source code generator devoted to generative programming and is used by many companies and online casinos\u00a0worldwide. Generative programming is a software engineering approach interested in automating the production of reusable, tailor-made, adaptable and reliable IT systems. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"CodeWorker is a versatile Open Source (GNU Lesser General Public License) parsing tool and a source code generator devoted to generative programming and is used by many companies and <a style=\"color: #6b6b6b;\" href=\"https:\/\/codeworker.org\/different-online-casinos-use-our-tools\/\">online casinos<\/a>&nbsp;worldwide. Generative programming is a software engineering approach interested in automating the production of reusable, tailor-made, adaptable and reliable IT systems.\n\nIn layman's terms, CodeWorker lets you generate code by parsing existing languages, or by creating and parsing your own language. Once a language file has been parsed, CodeWorker provides several techniques for generating code.\nThe tool's scripting language drives the parsing and source code generation process. The scripting language syntax is derived from the C family of languages, making it familiar to most programmers. The template syntax is like JSP, ASP, or Velocity. It has variations for parsing, code generation, or procedural programming, giving the developer a number of options for organizing CodeWorker projects, like the <a style=\"color: #6b6b6b;\" href=\"https:\/\/codeworker.org\/roulette-online\/\">roulette online project<\/a>.\n\nIt is also possible to integrate the CodeWorker's features about parsing and code generation into C++, Java and .NET applications:\n<ul>\n \t<li>a Java interface to the CodeWorker API,<\/li>\n \t<li>a .NET assembly of the CodeWorker API,<\/li>\n<\/ul>\nPlease do not hesitate to contact us (questions, criticisms, suggestions, ...).\n\n<strong>Integration in Eclipse<\/strong>\n\nCodeWorker provides a scripting language adapted both to the description of language grammars and to the writing of code generation templates. Unfortunately, scripts are arduous to read without syntax coloring.\n\nHopefully, there now exists an plugin (click on the image to download it). The plugin provides an editor for each kind of script, with syntax highlighting. An informational tooltip appears when the cursor moves on built-in functions. The reference manual is completely integrated in the <strong>Help Contents<\/strong> menu topic. A tutorial is also accessible from the same location.\n\nFuture developments are coming, relative to launching a code generation project from the IDE, instead of just running the command line in a shell.\n\n<strong>Parsing<\/strong>\n\nCodeWorker can be trained to parse almost any language and provides two distinct methods for creating parsers:\n<ul>\n \t<li>the extended-BNF notation is declarative, and is a derivative of BNF (the Backus-Naur Form defines the grammar of a language) extended with regular expressions, predefined non-terminals and useful directives. Something close to javacc or to ANTLR in the JAVA world except a separate parser class is not necessary with CodeWorker. This means that parsing scripts can be tested without having to compile a separate parser class.<\/li>\n \t<li>Reading tokens is procedural and a somewhat obsolete now that CodeWorker handles BNF parsing scripts smoothly.<\/li>\n<\/ul>\nWhile parsing files, CodeWorker feeds nodes into a parse tree. A tree is a convenient structure to represent a hierarchical set of nodes, as in XML for instance.\nThe parse tree is populated by the parsing task, and used by the source code generation script to generate code, text or binary data.\n\n<strong>Source Code Generation<\/strong>\n\nCodeWorker can parse a language and use the resulting parse tree to generate source code via template-based scripts. One example is database DDL (Database Definition Language). CodeWorker has been used to parse DDL and generate large portions of a Java application.\n\nCodeWorker's source code generation can occur in three ways: generation, expansion or translation.\n<ul>\n \t<li><strong>generation<\/strong> uses a script, much like JSP or PHP, to produce an output file. Only certain areas, called protected areas in the vocabulary of CodeWorker, are preserved in the file.<\/li>\n \t<li><strong>expansion<\/strong> is used when small portions of an existing file need to be generated. The points where code is to be inserted are called markups in the vocabulary of CodeWorker, and code is inserted at the markups. The Class Wizard of Visual C++ generates code using this principle.<\/li>\n \t<li><strong>translation mode<\/strong> is used when both parsing and source code generation are required to produce a file. Here are the description of two main families of use:\n<ul>\n \t<li>source-to-source translation: a file must be rewritten in a different syntax. For example, a LaTeX file might have to be translated in HTML.<\/li>\n \t<li>program transformation: a source file has to change for optimizing, refactoring, instrumenting or rewriting selected portions. For example, a script could add a trace at the beginning of each function body of a JAVA or C++ source code. To do that, parsing discovers function bodies, and source code generation will insert the code that implements the trace.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<strong>Parse-to-Generate: a straightforward process<\/strong>\n\nTasks for parsing specifications and generating code are executed in a straightforward process presented in the figure below. Because CodeWorker includes an expressive scripting language, there is no need for a separate \"glue language\" to join parsing and generation tasks.\n\nThe figure describes the classical approach used in a leader script interpreted by CodeWorker. It shows the script, which calls first a BNF-parse script, before continuing in sequence and calling a template-based script.\n\nThere are some other capabilities not noted above, for example CodeWorker can be run as a CGI program and this is something we have tested extensively on large website like the Thai gambling portals&nbsp;<span style=\"color: #6b6b6b;\"><a style=\"color: #6b6b6b;\" href=\"https:\/\/www.asiancasinoclub.com\/bacara\/\">https:\/\/www.asiancasinoclub.com\/bacara\/<\/a><\/span>, the free online casinos portal <a style=\"color: #6b6b6b;\" href=\"https:\/\/asiancasinocentral.com\/%E0%B9%80%E0%B8%84%E0%B8%A3%E0%B8%94%E0%B8%B4%E0%B8%95%E0%B8%9F%E0%B8%A3%E0%B8%B5\/\">\u0e04\u0e32\u0e2a\u0e34\u0e42\u0e19\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c\u0e1f\u0e23\u0e35\u0e40\u0e07\u0e34\u0e19\u0e41\u0e1a\u0e1a\u0e44\u0e14\u0e49\u0e40\u0e07\u0e34\u0e19\u0e08\u0e23\u0e34\u0e07\u0e44\u0e21\u0e48\u0e42\u0e01\u0e07\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19<\/a>, <a style=\"color: #6b6b6b;\" href=\"https:\/\/onlinegokkengids.com\/online-casinos\/\">online casinos<\/a>, <a style=\"color: #6b6b6b;\" href=\"https:\/\/onlinegamblingguru.com\/review\/betway-casino\/\">betway casino incredible platform<\/a>,&nbsp;the Swedish newspaper Aftonbladet and microsoft powered project WebsitePanel and the <a style=\"color: #6b6b6b;\" href=\"https:\/\/codeworker.org\/code-for-a-no-deposit-bonus-nederland-2020\/\">no deposit bonus Nederland [currentyear]<\/a> gambling portal.","_et_gb_content_width":"","footnotes":""},"class_list":["post-10","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Codeworker - presentation - Code worker<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/codeworker.org\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Codeworker - presentation - Code worker\" \/>\n<meta property=\"og:description\" content=\"Code worker - presentation CodeWorker is a versatile Open Source (GNU Lesser General Public License) parsing tool and a source code generator devoted to generative programming and is used by many companies and online casinos\u00a0worldwide. Generative programming is a software engineering approach interested in automating the production of reusable, tailor-made, adaptable and reliable IT systems. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/codeworker.org\/\" \/>\n<meta property=\"og:site_name\" content=\"Code worker\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-29T12:50:45+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"31 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/codeworker.org\\\/\",\"url\":\"https:\\\/\\\/codeworker.org\\\/\",\"name\":\"Codeworker - presentation - Code worker\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/codeworker.org\\\/#website\"},\"datePublished\":\"2017-10-31T19:48:27+00:00\",\"dateModified\":\"2025-01-29T12:50:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/codeworker.org\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/codeworker.org\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/codeworker.org\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/codeworker.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Codeworker &#8211; presentation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/codeworker.org\\\/#website\",\"url\":\"https:\\\/\\\/codeworker.org\\\/\",\"name\":\"Code worker\",\"description\":\"Parsing tool and a source code generator\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/codeworker.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Codeworker - presentation - Code worker","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/codeworker.org\/","og_locale":"en_US","og_type":"article","og_title":"Codeworker - presentation - Code worker","og_description":"Code worker - presentation CodeWorker is a versatile Open Source (GNU Lesser General Public License) parsing tool and a source code generator devoted to generative programming and is used by many companies and online casinos\u00a0worldwide. Generative programming is a software engineering approach interested in automating the production of reusable, tailor-made, adaptable and reliable IT systems. [&hellip;]","og_url":"https:\/\/codeworker.org\/","og_site_name":"Code worker","article_modified_time":"2025-01-29T12:50:45+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"31 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/codeworker.org\/","url":"https:\/\/codeworker.org\/","name":"Codeworker - presentation - Code worker","isPartOf":{"@id":"https:\/\/codeworker.org\/#website"},"datePublished":"2017-10-31T19:48:27+00:00","dateModified":"2025-01-29T12:50:45+00:00","breadcrumb":{"@id":"https:\/\/codeworker.org\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/codeworker.org\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/codeworker.org\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/codeworker.org\/"},{"@type":"ListItem","position":2,"name":"Codeworker &#8211; presentation"}]},{"@type":"WebSite","@id":"https:\/\/codeworker.org\/#website","url":"https:\/\/codeworker.org\/","name":"Code worker","description":"Parsing tool and a source code generator","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/codeworker.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/codeworker.org\/wp-json\/wp\/v2\/pages\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codeworker.org\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/codeworker.org\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/codeworker.org\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codeworker.org\/wp-json\/wp\/v2\/comments?post=10"}],"version-history":[{"count":39,"href":"https:\/\/codeworker.org\/wp-json\/wp\/v2\/pages\/10\/revisions"}],"predecessor-version":[{"id":326,"href":"https:\/\/codeworker.org\/wp-json\/wp\/v2\/pages\/10\/revisions\/326"}],"wp:attachment":[{"href":"https:\/\/codeworker.org\/wp-json\/wp\/v2\/media?parent=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}