Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
123 lines (117 loc) · 7.28 KB
/
Copy pathindex.html
File metadata and controls
123 lines (117 loc) · 7.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Treeceptive – Language Engineering Consulting</title>
<meta name="description" content="Treeceptive provides language engineering services: compilers, transpilers, parsers, DSLs, IDE plugins and legacy modernization tooling. Home of textX, parglare and Rustemo.">
<link rel="icon" type="image/svg+xml" href="assets/treeceptive-logo.svg">
<link rel="canonical" href="https://www.treeceptive.com/">
<meta property="og:title" content="Treeceptive – Language Engineering">
<meta property="og:description" content="Compilers, DSLs, parsers and legacy modernization tooling.">
<meta property="og:image" content="https://www.treeceptive.com/assets/treeceptive-logo.png">
<meta property="og:url" content="https://www.treeceptive.com/">
<link rel="stylesheet" href="style.css">
</head>
<body>
<header class="top"><div class="wrap">
<a class="brand" href="#"><img src="assets/treeceptive-logo.svg" alt="">Treeceptive</a>
<nav><a href="#services">Services</a><a href="#tools">Tools</a><a href="#about">About</a><a href="#contact">Contact</a></nav>
</div></header>
<main>
<div class="hero wrap">
<img src="assets/treeceptive-logo.svg" alt="Treeceptive logo">
<h1>Language engineering,<br><span>done right.</span></h1>
<p>Treeceptive helps teams design and build compilers, transpilers, parsers, domain-specific languages and
developer tooling, with a focus on legacy modernization.</p>
<a class="btn" href="#contact">Work with us</a>
<a class="btn alt" href="#tools">Our open-source tools</a>
</div>
<section id="services" class="alt"><div class="wrap">
<h2>What we do</h2>
<p class="lead">Two decades of experience in Software Language Engineering, applied to real-world problems.</p>
<div class="grid">
<div class="card" style="--c:var(--orange)"><h3>Compilers & transpilers</h3>
<p>Design and implementation of compilers and source-to-source translators, from front end to code generation.</p></div>
<div class="card" style="--c:var(--green)"><h3>Parsers & grammars</h3>
<p>Special-purpose parsers for programming languages, data formats and legacy dialects, including ambiguous and context-sensitive syntax.</p></div>
<div class="card" style="--c:var(--blue)"><h3>Domain-specific languages</h3>
<p>Language design that lets domain experts express solutions directly, with textual or graphical notations and generators.</p></div>
<div class="card" style="--c:var(--purple)"><h3>IDE plugins & tooling</h3>
<p>Editors, syntax highlighting, language servers and analysis tools that make your language pleasant to use.</p></div>
<div class="card" style="--c:var(--orange)"><h3>Legacy modernization</h3>
<p>Tools for analyzing, migrating and transforming legacy code bases safely and incrementally.</p></div>
<div class="card" style="--c:var(--green)"><h3>Training & advisory</h3>
<p>Workshops and technical leadership on language and compiler design for your engineering team.</p></div>
</div>
</div></section>
<section id="tools"><div class="wrap">
<h2>Open-source tools</h2>
<p class="lead">We build and maintain a family of parser generators and DSL tools, used by developers and researchers worldwide.</p>
<div class="grid">
<div class="card tool" style="--c:var(--blue)">
<div class="tag">Python · DSL framework</div><h3>textX</h3>
<p>Meta-language for building domain-specific languages in Python. Describe your language with a concise grammar and get a parser and a meta-model automatically.</p>
<div class="links">
<a class="btn sm" href="https://textx.github.io/textx-playground/">Try it online</a>
<a class="btn sm alt" href="https://textx.github.io/textX/">Website</a>
<a class="btn sm alt" href="https://github.com/textX/textX">GitHub</a>
</div></div>
<div class="card tool" style="--c:var(--green)">
<div class="tag">Python · Parser generator</div><h3>parglare</h3>
<p>A pure Python scanner/parser generator implementing LR and GLR parsing, with scannerless-friendly, context-aware lexing and rich grammar language.</p>
<div class="links">
<a class="btn sm" href="https://igor.dejanovic.online/parglare/stable/">Documentation</a>
<a class="btn sm alt" href="https://github.com/igordejanovic/parglare">GitHub</a>
</div></div>
<div class="card tool" style="--c:var(--orange)">
<div class="tag">Rust · Parser generator</div><h3>Rustemo</h3>
<p>LR/GLR parser generator for Rust. Generates fast, type-safe parsers with automatic AST types and actions from your grammar.</p>
<div class="links">
<a class="btn sm" href="https://igor.dejanovic.online/rustemo/">Documentation</a>
<a class="btn sm alt" href="https://github.com/igordejanovic/rustemo">GitHub</a>
</div></div>
</div>
</div></section>
<section id="about" class="alt"><div class="wrap">
<h2>About Treeceptive</h2>
<div class="about">
<div>
<p>Treeceptive is a language engineering consultancy led by <strong>Igor Dejanović</strong>, a seasoned software
engineering consultant with 20+ years of experience in Software Language Engineering. Igor has led language and
compiler design projects and is the author and maintainer of textX, Arpeggio, parglare and Rustemo.</p>
<p>Our recent work is primarily in Rust and Python, with extensive experience across many other languages.
Igor is also a professor of Computer Science and Software Engineering at the University of Novi Sad, which brings
academic rigor into practice, and real-world insights into the classroom.</p>
<p class="profiles">
<a class="btn sm alt" href="https://www.linkedin.com/in/igor-dejanovi%C4%87-62bb921/">Igor on LinkedIn</a>
<a class="btn sm alt" href="https://github.com/igordejanovic">Igor on GitHub</a>
</p>
</div>
<ul class="facts">
<li>20+ years of experience</li><li>Rust & Python</li><li>Open-source maintainer</li><li>University of Novi Sad</li>
</ul>
</div>
</div></section>
<section id="contact"><div class="wrap" style="text-align:center">
<h2>Let's talk</h2>
<p class="lead" style="margin:0 auto 24px">Have a language, parser or legacy modernization challenge? Get in touch.</p>
<a class="btn js-mail" data-u="office" data-d="treeceptive" data-t="com" href="#contact">Email us</a>
<a class="btn alt" href="https://www.linkedin.com/company/treeceptive/">LinkedIn</a>
<a class="btn alt" href="https://github.com/treeceptive">GitHub</a>
<noscript><p class="lead" style="margin:16px auto 0">Email: office [at] treeceptive [dot] com</p></noscript>
</div></section>
</main>
<footer><div class="wrap">
<span>© <script>document.write(new Date().getFullYear())</script> Treeceptive. All rights reserved.</span>
<span><a class="js-mail" data-u="office" data-d="treeceptive" data-t="com" data-show="1" href="#contact" hidden></a><a href="https://www.linkedin.com/company/treeceptive/">LinkedIn</a><a href="https://github.com/treeceptive">GitHub</a></span>
</div></footer>
<script>
document.querySelectorAll('a.js-mail').forEach(function(a){
var addr=a.dataset.u+'@'+a.dataset.d+'.'+a.dataset.t;
a.href='mailto:'+addr;
if(a.dataset.show){a.textContent=addr;a.hidden=false;}
});
</script>
</body>
</html>