/usr/share/doc/bison-doc/html/Semantic-Values.html is in bison-doc 1:3.0.4-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 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--
This manual (22 January 2015) is for GNU Bison (version
3.0.4), the GNU parser generator.
Copyright (C) 1988-1993, 1995, 1998-2015 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 6.0, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Bison 3.0.4: Semantic Values</title>
<meta name="description" content="Bison 3.0.4: Semantic Values">
<meta name="keywords" content="Bison 3.0.4: Semantic Values">
<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="Concepts.html#Concepts" rel="up" title="Concepts">
<link href="Semantic-Actions.html#Semantic-Actions" rel="next" title="Semantic Actions">
<link href="Grammar-in-Bison.html#Grammar-in-Bison" rel="prev" title="Grammar in Bison">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
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">
<a name="Semantic-Values"></a>
<div class="header">
<p>
Next: <a href="Semantic-Actions.html#Semantic-Actions" accesskey="n" rel="next">Semantic Actions</a>, Previous: <a href="Grammar-in-Bison.html#Grammar-in-Bison" accesskey="p" rel="prev">Grammar in Bison</a>, Up: <a href="Concepts.html#Concepts" accesskey="u" rel="up">Concepts</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="Semantic-Values-1"></a>
<h3 class="section">1.3 Semantic Values</h3>
<a name="index-semantic-value"></a>
<a name="index-value_002c-semantic"></a>
<p>A formal grammar selects tokens only by their classifications: for example,
if a rule mentions the terminal symbol ‘integer constant’, it means that
<em>any</em> integer constant is grammatically valid in that position. The
precise value of the constant is irrelevant to how to parse the input: if
‘<samp>x+4</samp>’ is grammatical then ‘<samp>x+1</samp>’ or ‘<samp>x+3989</samp>’ is equally
grammatical.
</p>
<p>But the precise value is very important for what the input means once it is
parsed. A compiler is useless if it fails to distinguish between 4, 1 and
3989 as constants in the program! Therefore, each token in a Bison grammar
has both a token type and a <em>semantic value</em>. See <a href="Semantics.html#Semantics">Defining Language Semantics</a>,
for details.
</p>
<p>The token type is a terminal symbol defined in the grammar, such as
<code>INTEGER</code>, <code>IDENTIFIER</code> or <code>','</code>. It tells everything
you need to know to decide where the token may validly appear and how to
group it with other tokens. The grammar rules know nothing about tokens
except their types.
</p>
<p>The semantic value has all the rest of the information about the
meaning of the token, such as the value of an integer, or the name of an
identifier. (A token such as <code>','</code> which is just punctuation doesn’t
need to have any semantic value.)
</p>
<p>For example, an input token might be classified as token type
<code>INTEGER</code> and have the semantic value 4. Another input token might
have the same token type <code>INTEGER</code> but value 3989. When a grammar
rule says that <code>INTEGER</code> is allowed, either of these tokens is
acceptable because each is an <code>INTEGER</code>. When the parser accepts the
token, it keeps track of the token’s semantic value.
</p>
<p>Each grouping can also have a semantic value as well as its nonterminal
symbol. For example, in a calculator, an expression typically has a
semantic value that is a number. In a compiler for a programming
language, an expression typically has a semantic value that is a tree
structure describing the meaning of the expression.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Semantic-Actions.html#Semantic-Actions" accesskey="n" rel="next">Semantic Actions</a>, Previous: <a href="Grammar-in-Bison.html#Grammar-in-Bison" accesskey="p" rel="prev">Grammar in Bison</a>, Up: <a href="Concepts.html#Concepts" accesskey="u" rel="up">Concepts</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>
|