/usr/share/doc/bison-doc/html/Java-Scanner-Interface.html is in bison-doc 1:3.0.2-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--
This manual (23 October 2013) is for GNU Bison (version
3.0.2), the GNU parser generator.
Copyright (C) 1988-1993, 1995, 1998-2013 Free Software
Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with the Front-Cover texts
being "A GNU Manual," and with the Back-Cover Texts as in
(a) below. A copy of the license is included in the section entitled
"GNU Free Documentation License."
(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
modify this GNU manual. Buying copies from the FSF
supports it in developing GNU and promoting software
freedom." -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Bison 3.0.2: Java Scanner Interface</title>
<meta name="description" content="Bison 3.0.2: Java Scanner Interface">
<meta name="keywords" content="Bison 3.0.2: Java Scanner Interface">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Index-of-Terms.html#Index-of-Terms" rel="index" title="Index of Terms">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Java-Parsers.html#Java-Parsers" rel="up" title="Java Parsers">
<link href="Java-Action-Features.html#Java-Action-Features" rel="next" title="Java Action Features">
<link href="Java-Parser-Interface.html#Java-Parser-Interface" rel="prev" title="Java Parser Interface">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Java-Scanner-Interface"></a>
<div class="header">
<p>
Next: <a href="Java-Action-Features.html#Java-Action-Features" accesskey="n" rel="next">Java Action Features</a>, Previous: <a href="Java-Parser-Interface.html#Java-Parser-Interface" accesskey="p" rel="prev">Java Parser Interface</a>, Up: <a href="Java-Parsers.html#Java-Parsers" accesskey="u" rel="up">Java Parsers</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Terms.html#Index-of-Terms" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Java-Scanner-Interface-1"></a>
<h4 class="subsection">10.2.5 Java Scanner Interface</h4>
<p>There are two possible ways to interface a Bison-generated Java parser
with a scanner: the scanner may be defined by <code>%code lexer</code>, or
defined elsewhere. In either case, the scanner has to implement the
<code>Lexer</code> inner interface of the parser class. This interface also
contain constants for all user-defined token names and the predefined
<code>EOF</code> token.
</p>
<p>In the first case, the body of the scanner class is placed in
<code>%code lexer</code> blocks. If you want to pass parameters from the
parser constructor to the scanner constructor, specify them with
<code>%lex-param</code>; they are passed before <code>%parse-param</code>s to the
constructor.
</p>
<p>In the second case, the scanner has to implement the <code>Lexer</code> interface,
which is defined within the parser class (e.g., <code>YYParser.Lexer</code>).
The constructor of the parser object will then accept an object
implementing the interface; <code>%lex-param</code> is not used in this
case.
</p>
<p>In both cases, the scanner has to implement the following methods.
</p>
<dl>
<dt><a name="index-yyerror-on-Lexer"></a>Method on Lexer: <em>void</em> <strong>yyerror</strong> <em>(Location <var>loc</var>, String <var>msg</var>)</em></dt>
<dd><p>This method is defined by the user to emit an error message. The first
parameter is omitted if location tracking is not active. Its type can be
changed using <code>%define api.location.type {<var>class-name</var>}</code>.
</p></dd></dl>
<dl>
<dt><a name="index-yylex-on-Lexer"></a>Method on Lexer: <em>int</em> <strong>yylex</strong> <em>()</em></dt>
<dd><p>Return the next token. Its type is the return value, its semantic
value and location are saved and returned by the their methods in the
interface.
</p>
<p>Use ‘<samp>%define lex_throws</samp>’ to specify any uncaught exceptions.
Default is <code>java.io.IOException</code>.
</p></dd></dl>
<dl>
<dt><a name="index-getStartPos-on-Lexer"></a>Method on Lexer: <em>Position</em> <strong>getStartPos</strong> <em>()</em></dt>
<dt><a name="index-getEndPos-on-Lexer"></a>Method on Lexer: <em>Position</em> <strong>getEndPos</strong> <em>()</em></dt>
<dd><p>Return respectively the first position of the last token that
<code>yylex</code> returned, and the first position beyond it. These
methods are not needed unless location tracking is active.
</p>
<p>The return type can be changed using <code>%define api.position.type
{<var>class-name</var>}</code>.
</p></dd></dl>
<dl>
<dt><a name="index-getLVal-on-Lexer"></a>Method on Lexer: <em>Object</em> <strong>getLVal</strong> <em>()</em></dt>
<dd><p>Return the semantic value of the last token that yylex returned.
</p>
<p>The return type can be changed using ‘<samp>%define api.value.type
{<var>class-name</var>}</samp>’.
</p></dd></dl>
<hr>
<div class="header">
<p>
Next: <a href="Java-Action-Features.html#Java-Action-Features" accesskey="n" rel="next">Java Action Features</a>, Previous: <a href="Java-Parser-Interface.html#Java-Parser-Interface" accesskey="p" rel="prev">Java Parser Interface</a>, Up: <a href="Java-Parsers.html#Java-Parsers" accesskey="u" rel="up">Java Parsers</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Terms.html#Index-of-Terms" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|