[av_image src=’https://tomassetti.me/wp-content/uploads/2017/10/Screen-Shot-2017-10-25-at-14.22.41.png’ attachment=’3762′ attachment_size=’full’ align=’center’ styling=” hover=” link=” target=” caption=” font_size=” appearance=” overlay_opacity=’0.4′ overlay_color=’#000000′ overlay_text_color=’#ffffff’ animation=’no-animation’ av_uid=’av-14sqqk0′][/av_image]
[av_one_fifth first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_display=” av_uid=’av-13c8y5c’][/av_one_fifth]
[av_three_fifth min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_display=” av_uid=’av-11zftz4′]
[av_textblock size=” font_color=” color=” av_uid=’av-zr8qsg’]
Dear attendees of KotlinConf ’17, thank you for visiting this page.
Here you will find:
- the slides of my presentation
- the code associated to my presentation
- a coupon for my book on building lightweight languages
- a free course on building languages
- a list of posts on building languages
[/av_textblock]
[av_button_big label=’Download the slides’ description_pos=’below’ link=’manually,https://tomassetti.me/kotlinconf-tomassetti/’ link_target=” icon_select=’no’ icon=’ue800′ font=’entypo-fontello’ custom_font=’#ffffff’ color=’theme-color’ custom_bg=’#444444′ color_hover=’theme-color-subtle’ custom_bg_hover=’#444444′ av_uid=’av-xk4nxc’][/av_button_big]
[av_codeblock wrapper_element=” wrapper_element_attributes=” av_uid=’av-wh1k28′]
Get the code

[/av_codeblock]
[/av_three_fifth]
[av_one_fifth min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_display=” av_uid=’av-uuufog’][/av_one_fifth]
[av_hr class=’invisible’ height=’20’ shadow=’no-shadow’ position=’center’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ av_uid=’av-tag1jk’]
[av_heading tag=’h2′ padding=’10’ heading=’Book: How to create pragmatic, lightweight languages’ color=” style=’blockquote modern-quote modern-centered’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” margin=”][/av_heading]
[av_hr class=’invisible’ height=’35’ shadow=’no-shadow’ position=’center’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ av_uid=’av-pvtti8′]
[av_one_third first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_display=” av_uid=’av-nxsdwg’]
[av_image src=’https://tomassetti.me/wp-content/uploads/2018/03/low-resolution.png’ attachment=’4098′ attachment_size=’full’ align=’center’ styling=” hover=’av-hover-grow’ link=’manually,https://tomassetti.me/create-languages/’ target=” caption=” font_size=” appearance=” overlay_opacity=’0.4′ overlay_color=’#000000′ overlay_text_color=’#ffffff’ copyright=” animation=’no-animation’ av_uid=’av-mpnits’ admin_preview_bg=”][/av_image]
[/av_one_third]
[av_two_third min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_display=” av_uid=’av-komphc’]
[av_promobox button=’yes’ label=’Show me the book’ link=’manually,https://tomassetti.me/create-languages/’ link_target=” color=’theme-color’ custom_bg=’#444444′ custom_font=’#ffffff’ size=’large’ label_display=” icon_select=’no’ icon=’ue800′ font=’entypo-fontello’ box_color=” box_custom_font=’#ffffff’ box_custom_bg=’#444444′ box_custom_border=’#333333′ av_uid=’av-1u5rn4′ admin_preview_bg=”]
This book explains how to build languages. The goal here is to end up with something usable in practice. A real language, with an efficient parser and a complete compiler. A language with its own editor. This is not about building toys.
The approach described is based on reusing open-source components and organize them together to get something real with a limited effort. Do you think it is not possible to build a parser, an interpreter, an editor and a simulator in less than 1.000 lines of code? Think again.
When I was learning to build languages I was disappointed: I could just find basic tutorials here and there but what was missing was a complete course, organized to lead me from the very beginning to the end. Also, all approaches seemed so theoretical: a lot of words and not enough code.
Using this button within one week from the conference you will get a discount
[/av_promobox]
[/av_two_third]
[av_hr class=’invisible’ height=’50’ shadow=’no-shadow’ position=’center’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ av_uid=’av-i2w0a8′]
[av_heading tag=’h2′ padding=’10’ heading=’Free course’ color=” style=’blockquote modern-quote modern-centered’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” margin=”][/av_heading]
[av_hr class=’invisible’ height=’35’ shadow=’no-shadow’ position=’center’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ av_uid=’av-e0789c’]
[av_one_third first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_display=” av_uid=’av-cwabv4′]
[av_image src=’https://tomassetti.me/wp-content/uploads/2017/04/office-notes-vector-clipart-292×300.png’ attachment=’3242′ attachment_size=’medium’ align=’center’ styling=” hover=” link=” target=” caption=” font_size=” appearance=” overlay_opacity=’0.4′ overlay_color=’#000000′ overlay_text_color=’#ffffff’ animation=’no-animation’ av_uid=’av-aqu1s0′][/av_image]
[/av_one_third]
[av_two_third min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_display=” av_uid=’av-8×1800′]
[av_textblock size=” font_color=” color=” av_uid=’av-6t78og’]
You can find a course on building languages published as a series of posts
- Building a lexer
- Building a parser
- Creating an editor with syntax highlighting
- Build an editor with autocompletion
- Mapping the parse tree to the abstract syntax tree
- Model to model transformations
- Validation
- Generating bytecode
[/av_textblock]
[/av_two_third]
[av_hr class=’invisible’ height=’50’ shadow=’no-shadow’ position=’center’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ av_uid=’av-6eloxc’]
[av_heading tag=’h2′ padding=’10’ heading=’Posts’ color=” style=’blockquote modern-quote modern-centered’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” margin=”][/av_heading]
[av_magazine link=’category,60′ items=’40’ offset=’0′ tabs=’aviaTBtabs’ thumbnails=’aviaTBthumbnails’ heading=” heading_link=’manually,http://’ heading_color=’theme-color’ heading_custom_color=’#ffffff’ first_big_pos=’top’ av_uid=’av-301ec0′]
Download the guide with 68 resources on Creating Programming Languages

Receive the guide to your inbox to read it on all your devices when you have time