forked from antlr/website-antlr4
-
Notifications
You must be signed in to change notification settings - Fork 0
/
about.html
157 lines (118 loc) · 5.94 KB
/
about.html
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<!doctype html>
<!--[if lt IE 9]><html class="ie"><![endif]-->
<!--[if gte IE 9]><!--><html><!--<![endif]-->
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>About The ANTLR Parser Generator</title>
<!--[if lt IE 9]><script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<link rel="stylesheet" href="css/fontface/Droid-Sans/stylesheet.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/fontface/Droid-Serif/stylesheet.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/fontface/DejaVu-Sans-Mono/stylesheet.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/antlr.css" type="text/css" media="screen" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="scripts/selectivizr-min.js"></script>
<script src="scripts/cycle.js"></script>
<script src="scripts/rounded.js"></script>
<script src="scripts/watermark.js"></script>
<script type="text/javascript" src="scripts/lib/jquery.mousewheel-3.0.6.pack.js"></script>
<script type="text/javascript" src="scripts/source/jquery.fancybox.js?v=2.0.6"></script>
<link rel="stylesheet" type="text/css" href="scripts/source/jquery.fancybox.css?v=2.0.6" media="screen" />
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-1024344-1', 'auto');
ga('send', 'pageview');
</script>
<!-- Start of Woopra Code -->
<script>
(function(){
var t,i,e,n=window,o=document,a=arguments,s="script",r=["config","track","identify","visit","push","call","trackForm","trackClick"],c=function(){var t,i=this;for(i._e=[],t=0;r.length>t;t++)(function(t){i[t]=function(){return i._e.push([t].concat(Array.prototype.slice.call(arguments,0))),i}})(r[t])};for(n._w=n._w||{},t=0;a.length>t;t++)n._w[a[t]]=n[a[t]]=n[a[t]]||new c;i=o.createElement(s),i.async=1,i.src="//static.woopra.com/js/t/5.js",e=o.getElementsByTagName(s)[0],e.parentNode.insertBefore(i,e)
})("woopra");
woopra.config({
domain: 'antlr.org'
});
woopra.track();
</script>
<!-- End of Woopra Code -->
</head>
<body>
<header>
<a id="index" href="index.html">ANTLR</a>
<nav>
<script src="scripts/topnav.js"></script>
</nav>
</header>
<div id="wrapper">
<div id="container">
<div id="main">
<div id="content">
<h1>About The ANTLR Parser Generator</h1>
<p>
<b>Check out the <a href="testimonials.html">testimonials<a>.</b>
<p>
<i>Excerpt from the <a href="http://media.pragprog.com/titles/tpantlr2/preface.pdf">preface of the ANTLR v4 book</a>:</i>
<br><br>
<b>ANTLR</b> is a powerful parser generator that you can use to read,
process, execute, or translate structured text or binary files. It’s
widely used in academia and industry to build all sorts of languages,
tools, and frameworks. Twitter search uses ANTLR for query parsing,
with over 2 billion queries a day. The languages for Hive and Pig, the
data warehouse and analysis systems for Hadoop, both use ANTLR. Lex
Machina uses ANTLR for information extraction from legal
texts. Oracle uses ANTLR within SQL Developer IDE and their migration
tools. NetBeans IDE parses C++ with ANTLR. The HQL language in the
Hibernate object-relational mapping framework is built with ANTLR.
<br><br>
Aside from these big-name, high-profile projects, you can build all
sorts of useful tools like configuration file readers, legacy code
converters, wiki markup renderers, and JSON parsers. I’ve built little
tools for object-relational database mappings, describing 3D
visualizations, injecting profiling code into Java source code, and
have even done a simple DNA pattern matching example for a lecture.
<br><br>
From a formal language description called a grammar, ANTLR generates a
parser for that language that can automatically build parse trees,
which are data structures representing how a grammar matches the
input. ANTLR also automatically generates tree walkers that you can
use to visit the nodes of those trees to execute application-specific
code.
<br><br>There are thousands of ANTLR downloads a month and it is
included on all Linux and OS X distributions. ANTLR is widely used
because it's easy to understand, powerful, flexible, generates
human-readable output, comes with complete source under the BSD
license, and is actively supported.
<br><br>ANTLR has contributed to the theory and practice of parsing including:
<ul>
<li><a href="papers/parr.phd.thesis.pdf">linear approximate lookahead</a>
<li><a href="papers/predicated-parsing.pdf">semantic and syntactic predicates</a>
<li><a href="http://www.antlr.org/papers/antlrworks-draft.pdf">ANTLRWorks</a>
<li><a href="papers/sorcerer.pdf">tree parsing</a>
<li><a href="http://www.antlr.org/papers/LL-star-PLDI11.pdf">LL(*)</a>
<li>Adaptive LL(*) in ANTLR v4 (paper coming soon)
</ul>
<br>
<a href="http://www.antlr.org/misc/contact"><b>Terence
Parr</b></a> is the maniac behind ANTLR and has been working on ANTLR
since 1989. He is a professor of computer science at the <a
href="http://www.cs.usfca.edu/~parrt"><b>University of San Francisco</b></a>.
</div><!--/content-->
<div id="sidebar">
<script>
x = "class='active'"
</script>
<script src="scripts/leftnav.js"></script>
</div><!--/sidebar-->
</div><!--/main-->
</div><!--/container-->
<div class="clear"><!--necessary nudge--></div>
</div><!--/wrapper-->
<footer>
<script src="scripts/bottomnav.js"></script>
</footer>
<script src="scripts/functions.js"></script>
</body>
</html>