[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

Powered by ConvertKit

[/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

  1. Building a lexer
  2. Building a parser
  3. Creating an editor with syntax highlighting
  4. Build an editor with autocompletion
  5. Mapping the parse tree to the abstract syntax tree
  6. Model to model transformations
  7. Validation
  8. 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

Powered by ConvertKit