compiler construction name binding language workbench spoofax syntax definition scope graphs name resolution type checking program transformation term rewriting webdsl domain-specific language dynamic semantics dynsem language definition declare your language nabl2 constraints rewriting strategies scope code generation transformation model-driven software development dsl software language engineering constraint resolution compilers semantics data-flow analysis static semantics static analysis declarative language definition programming languages programming language grammar domain-specific languages mobl editor services stratego syntactic completion formatting lexical syntax disambiguation term context-free grammar déclaration reference import sdf3 parsing algorithms lr parsing garbage collection copying collection mark and sweep reference counting virtual machines scopes describe frames type analysis nabl interpreters concrete syntax rewriting concepts of programming languages user interface templates data models parsing priority associativity types type checker type system statix research challenges scopes memory management partial evaluation tail recursion elimination peephole optimization concrete object syntax meta-programming with concrete object syntax ast-to-ast transformation term rewrite rules string interpolation monotone frameworks type constraints testing type checking schemas xml context-sensitive properties symbol tables environments traversal match build parser generation first and follow shift-reduce parsing reductions bottom-up parsing top-down parsing disambiguation with associativity and priority rul eliminating left recursion left factoring grammar transformations terms abstract syntax trees parse trees right-most derivations left-most derivations derivations context-free grammars context-free syntax grammars syntax highlighting syntax coloring templates pretty-printing syntactic editor services tree abstract syntax compiler architecture jvm constraint language visibility reachability strategies placeholders code completion ambiguity abstract syntax tree parse tree formal grammar what is a compiler? introduction meta-language barcelona syntax summer school ecoop 2017 formal grammars lexical analysis register allocation ll parsing generational collection pointer reversal declarative specification theory of name resolution operational semantics interpreter generation programming weblab pro education dynamic rewrite rules dynamic rules program tranformation software languages modelware grammarware language linguistic abstraction web mobile web case study web programming extension functional objects mdsd doma scala turing concepts of programing languages mobile web application development evolution modelcode interaction customization context-sensitive transformation aspect weaving inlining pretty-printingmodel-driven software development language workbenches access control policies access control web abstractions web abstractions domain-driven design data modeling domai-specific language interaction design domain analysis entity declaration mdsd dsl composing domain-specific languages language composition
Tout plus