<!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>ANTLR v4 License</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>ANTLR 4 License</h1>

<i>[The BSD License]</i><br>
Copyright (c) 2012 Terence Parr and Sam Harwell<br>
All rights reserved.<br>

<p>
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

<ul>
<li>
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

<li>Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
<li>Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

</ul>

<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
	
<br>
<h1>Developer's Certificate of Origin</h1>

<p>All contributors to ANTLR v4 must formally agree to abide by the
<a href="https://github.com/antlr/antlr4/blob/master/contributors.txt">certificate
of origin</a> by signing on the bottom of that document. To contribute:</p>

<ul>
<li>fork the <a href="https://github.com/antlr/antlr4">ANTLR v4 github repository</a>
<li>make your changes
<li>[<i>first time contributors</i>]: sign contributors.txt by adding your github userid, full
name, email address (you can obscure your e-mail, but it must be
computable by human), and date.
<li>commit your changes
<li>send a pull request
</ul>

After you have signed once, you don't have to sign future pull
requests. We can merge by simply checking to see your name is in the
contributors file.

	</div><!--/content-->
	
<div id="sidebar">
    <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>
