documentation_emacs/source/misc/wisent.texi.fr.po
2022-03-08 11:11:57 +01:00

4693 lines
145 KiB
Plaintext

# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2021-11-07 12:12+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: top
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:6 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:65
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:83
#, no-wrap
msgid "@value{TITLE}"
msgstr ""
#. type: include
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:7
#, no-wrap
msgid "docstyle.texi"
msgstr ""
#. type: copying
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:29
msgid ""
"Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012--2021 Free "
"Software Foundation, Inc."
msgstr ""
#. type: quotation
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:45
msgid ""
"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''."
msgstr ""
#. type: quotation
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:48
msgid ""
"(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and modify "
"this GNU manual.''"
msgstr ""
#. type: dircategory
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:51
#, no-wrap
msgid "Emacs misc features"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:54
msgid "Wisent: (wisent)"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:54
msgid "Semantic Wisent parser development."
msgstr ""
#. type: author
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:66
#, no-wrap
msgid "by @value{AUTHOR}"
msgstr ""
#. type: i{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:75
msgid "Semantic"
msgstr ""
#. type: node
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:82
#, no-wrap
msgid "top"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:87
msgid ""
"Wisent (the European Bison ;-) is an Emacs Lisp implementation of the GNU "
"Compiler Compiler Bison."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:91
msgid ""
"This manual describes how to use Wisent to develop grammars for programming "
"languages, and how to use grammars to parse language source in Emacs "
"buffers."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:94
msgid ""
"It also describes how Wisent is used with the @semantic{} tool set described "
"in the @ref{Top, Semantic Manual, Semantic Manual, semantic}."
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:106
msgid "Wisent Overview::"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:106
msgid "Wisent Grammar::"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:106
msgid "Wisent Parsing::"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:106
msgid "Wisent Semantic::"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:106
msgid "GNU Free Documentation License::"
msgstr ""
#. type: unnumbered
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:106 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:2027
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:2028
#, no-wrap
msgid "Index"
msgstr ""
#. type: chapter
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:108 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:109
#, no-wrap
msgid "Wisent Overview"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:114
msgid ""
"@dfn{Wisent} (the European Bison) is an implementation in Emacs Lisp of the "
"GNU Compiler Compiler Bison. Its code is a port of the C code of GNU Bison "
"1.28 & 1.31."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:117
msgid ""
"For more details on the basic concepts for understanding Wisent, it is "
"worthwhile to read the @ref{Top, Bison Manual, , bison}."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:120
msgid ""
"Wisent can generate compilers compatible with the @semantic{} tool set. See "
"the @ref{Top, Semantic Manual, , semantic}."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:122
msgid "It benefits from these Bison features:"
msgstr ""
#. type: itemize
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:127
msgid ""
"It uses a fast but not so space-efficient encoding for the parse tables, "
"described in Corbett's PhD thesis from Berkeley:"
msgstr ""
#. type: quotation
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:130
msgid ""
"@cite{Static Semantics in Compiler Error Recovery}@* June 1985, Report "
"No. UCB/CSD 85/251."
msgstr ""
#. type: itemize
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:135
msgid ""
"For generating the lookahead sets, Wisent uses the well-known technique of "
"F. DeRemer and T. Pennello described in:"
msgstr ""
#. type: quotation
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:139
msgid ""
"@cite{Efficient Computation of LALR(1) Look-Ahead Sets}@* October 1982, ACM "
"TOPLAS Vol 4 No 4, 615--49, @uref{https://doi.org/10.1145/69622.357187}."
msgstr ""
#. type: itemize
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:144
msgid ""
"Wisent resolves shift/reduce conflicts using operator precedence and "
"associativity."
msgstr ""
#. type: itemize
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:148
msgid ""
"Parser error recovery is accomplished using rules which match the special "
"token @code{error}."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:152
msgid ""
"Nevertheless there are some fundamental differences between Bison and "
"Wisent."
msgstr ""
#. type: itemize
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:158
msgid ""
"Wisent is intended to be used in Emacs. It reads and produces Emacs Lisp "
"data structures. All the additional code used in grammars is Emacs Lisp "
"code."
msgstr ""
#. type: itemize
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:166
msgid ""
"Contrary to Bison, Wisent does not generate a parser which combines Emacs "
"Lisp code and grammar constructs. They exist separately. Wisent reads the "
"grammar from a Lisp data structure and then generates grammar constructs as "
"tables. Afterward, the derived tables can be included and byte-compiled in "
"separate Emacs Lisp files, and be used at a later time by the Wisent's "
"parser engine."
msgstr ""
#. type: itemize
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:172
msgid ""
"Wisent allows multiple start nonterminals and allows a call to the parsing "
"function to be made for a particular start nonterminal. For example, this "
"is particularly useful to parse a region of an Emacs buffer. @semantic{} "
"heavily depends on the availability of this feature."
msgstr ""
#. type: chapter
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:174 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:175
#, no-wrap
msgid "Wisent Grammar"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:177
#, no-wrap
msgid "context-free grammar"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:178
#, no-wrap
msgid "rule"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:183
msgid ""
"In order for Wisent to parse a language, it must be described by a "
"@dfn{context-free grammar}. That is a grammar specified as rules that can "
"be applied regardless of context. For more information, see @ref{Language "
"and Grammar, , , bison}, in the Bison manual."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:184
#, no-wrap
msgid "terminal"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:185
#, no-wrap
msgid "nonterminal"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:189
msgid ""
"The formal grammar is formulated using @dfn{terminal} and @dfn{nonterminal} "
"items. Terminals can be Emacs Lisp symbols or characters, and nonterminals "
"are symbols only."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:190
#, no-wrap
msgid "token"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:193
msgid ""
"Terminals (also known as @dfn{tokens}) represent the lexical elements of the "
"language like numbers, strings, etc.."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:195
msgid "For example @samp{PLUS} can represent the operator @samp{+}."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:197
msgid "Nonterminal symbols are described by rules:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:201
#, no-wrap
msgid "RESULT @equiv{} COMPONENTS@dots{}\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:207
msgid ""
"@samp{RESULT} is a nonterminal that this rule describes and "
"@samp{COMPONENTS} are various terminals and nonterminals that are put "
"together by this rule."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:209
msgid "For example, this rule:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:213
#, no-wrap
msgid "exp @equiv{} exp PLUS exp\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:218
msgid ""
"Says that two groupings of type @samp{exp}, with a @samp{PLUS} token in "
"between, can be combined into a larger grouping of type @samp{exp}."
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:224
msgid "Grammar format::"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:224
msgid "Example::"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:224
msgid "Compiling a grammar::"
msgstr ""
#. type: section
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:224 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:617
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:618
#, no-wrap
msgid "Conflicts"
msgstr ""
#. type: section
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:226 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:227
#, no-wrap
msgid "Grammar format"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:229
#, no-wrap
msgid "grammar format"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:233
msgid ""
"To be acceptable by Wisent a context-free grammar must respect a particular "
"format. That is, must be represented as an Emacs Lisp list of the form:"
msgstr ""
#. type: code{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:235
msgid "(@var{terminals} @var{assocs} . @var{non-terminals})"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:237
#, no-wrap
msgid "terminals"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:239
msgid "Is the list of terminal symbols used in the grammar."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:240
#, no-wrap
msgid "associativity"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:241
#, no-wrap
msgid "assocs"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:245
msgid ""
"Specify the associativity of @var{terminals}. It is @code{nil} when there "
"is no associativity defined, or an alist of @w{@code{(@var{assoc-type} "
". @var{assoc-value})}} elements."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:251
msgid ""
"@var{assoc-type} must be one of the @code{default-prec}, @code{nonassoc}, "
"@code{left} or @code{right} symbols. When @var{assoc-type} is "
"@code{default-prec}, @var{assoc-value} must be @code{nil} or @code{t} (the "
"default). Otherwise it is a list of tokens which must have been previously "
"declared in @var{terminals}."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:254
msgid ""
"For details, see @ref{Contextual Precedence, , , bison}, in the Bison "
"manual."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:255
#, no-wrap
msgid "non-terminals"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:257
msgid "Is the list of nonterminal definitions. Each definition has the form:"
msgstr ""
#. type: code{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:259
msgid "(@var{nonterm} . @var{rules})"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:263
msgid ""
"Where @var{nonterm} is the nonterminal symbol defined and @var{rules} the "
"list of rules that describe this nonterminal. Each rule is a list:"
msgstr ""
#. type: code{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:265
msgid "(@var{components} [@var{precedence}] [@var{action}])"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:267
msgid "Where:"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:269
#, no-wrap
msgid "components"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:272
msgid ""
"Is a list of various terminals and nonterminals that are put together by "
"this rule."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:274
msgid "For example,"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:279
#, no-wrap
msgid ""
"(exp ((exp ?+ exp)) ;; exp: exp '+' exp\n"
" ) ;; ;\n"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:284
msgid ""
"Says that two groupings of type @samp{exp}, with a @samp{+} token in "
"between, can be combined into a larger grouping of type @samp{exp}."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:285
#, no-wrap
msgid "grammar coding conventions"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:294
msgid ""
"By convention, a nonterminal symbol should be in lower case, such as "
"@samp{exp}, @samp{stmt} or @samp{declaration}. Terminal symbols should be "
"upper case to distinguish them from nonterminals: for example, "
"@samp{INTEGER}, @samp{IDENTIFIER}, @samp{IF} or @samp{RETURN}. A terminal "
"symbol that represents a particular keyword in the language is "
"conventionally the same as that keyword converted to upper case. The "
"terminal symbol @code{error} is reserved for error recovery."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:295
#, no-wrap
msgid "middle-rule actions"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:298
msgid ""
"Scattered among the components can be @dfn{middle-rule} actions. Usually "
"only @var{action} is provided (@pxref{action})."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:302
msgid ""
"If @var{components} in a rule is @code{nil}, it means that the rule can "
"match the empty string. For example, here is how to define a "
"comma-separated sequence of zero or more @samp{exp} groupings:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:308
#, no-wrap
msgid ""
"(expseq (nil) ;; expseq: ;; empty\n"
" ((expseq1)) ;; | expseq1\n"
" ) ;; ;\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:312
#, no-wrap
msgid ""
"(expseq1 ((exp)) ;; expseq1: exp\n"
" ((expseq1 ?, exp)) ;; | expseq1 ',' exp\n"
" ) ;; ;\n"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:315
#, no-wrap
msgid "precedence level"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:316
#, no-wrap
msgid "precedence"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:322
msgid ""
"Assign the rule the precedence of the given terminal item, overriding the "
"precedence that would be deduced for it, that is the one of the last "
"terminal in it. Notice that only terminals declared in @var{assocs} have a "
"precedence level. The altered rule precedence then affects how conflicts "
"involving that rule are resolved."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:324
msgid "@var{precedence} is an optional vector of one terminal item."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:329
msgid ""
"Here is how @var{precedence} solves the problem of unary minus. First, "
"declare a precedence for a fictitious terminal symbol named @code{UMINUS}. "
"There are no tokens of this type, but the symbol serves to stand for its "
"precedence:"
msgstr ""
#. type: example
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:336
#, no-wrap
msgid ""
"@dots{}\n"
"((default-prec t) ;; This is the default\n"
" (left '+' '-')\n"
" (left '*')\n"
" (left UMINUS))\n"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:339
msgid "Now the precedence of @code{UMINUS} can be used in specific rules:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:348
#, no-wrap
msgid ""
"(exp @dots{} ;; exp: @dots{}\n"
" ((exp ?- exp)) ;; | exp '-' exp\n"
" @dots{} ;; @dots{}\n"
" ((?- exp) [UMINUS]) ;; | '-' exp %prec UMINUS\n"
" @dots{} ;; @dots{}\n"
" ) ;; ;\n"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:355
msgid ""
"If you forget to append @code{[UMINUS]} to the rule for unary minus, Wisent "
"silently assumes that minus has its usual precedence. This kind of problem "
"can be tricky to debug, since one typically discovers the mistake only by "
"testing the code."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:361
msgid ""
"Using @code{(default-prec nil)} declaration makes it easier to discover this "
"kind of problem systematically. It causes rules that lack a "
"@var{precedence} modifier to have no precedence, even if the last terminal "
"symbol mentioned in their components has a declared precedence."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:369
msgid ""
"If @code{(default-prec nil)} is in effect, you must specify @var{precedence} "
"for all rules that participate in precedence conflict resolution. Then you "
"will see any shift/reduce conflict until you tell Wisent how to resolve it, "
"either by changing your grammar or by adding an explicit precedence. This "
"will probably add declarations to the grammar, but it helps to protect "
"against incorrect rule precedences."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:372
msgid ""
"The effect of @code{(default-prec nil)} can be reversed by giving "
"@code{(default-prec t)}, which is the default."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:375
msgid ""
"For more details, see @ref{Contextual Precedence, , , bison}, in the Bison "
"manual."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:381
msgid ""
"It is important to understand that @var{assocs} declarations defines "
"associativity but also assign a precedence level to terminals. All "
"terminals declared in the same @code{left}, @code{right} or @code{nonassoc} "
"association get the same precedence level. The precedence level is "
"increased at each new association."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:384
msgid ""
"On the other hand, @var{precedence} explicitly assign the precedence level "
"of the given terminal to a rule."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:385
#, no-wrap
msgid "semantic actions"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:386
#, no-wrap
msgid "action"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:388
msgid "An action is an optional Emacs Lisp function call, like this:"
msgstr ""
#. type: code{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:390
msgid "(identity $1)"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:392
msgid "The result of an action determines the semantic value of a rule."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:396
msgid ""
"From an implementation standpoint, the function call will be embedded in a "
"lambda expression, and several useful local variables will be defined:"
msgstr ""
#. type: vindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:398
#, no-wrap
msgid "$N"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:399
#, no-wrap
msgid "$@var{n}"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:404
msgid ""
"Where @var{n} is a positive integer. Like in Bison, the value of "
"@code{$@var{n}} is the semantic value of the @var{n}th element of "
"@var{components}, starting from 1. It can be of any Lisp data type."
msgstr ""
#. type: vindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:405
#, no-wrap
msgid "$region@var{n}"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:406
#, no-wrap
msgid "$regionN"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:414
msgid ""
"Where @var{n} is a positive integer. For each @code{$@var{n}} variable "
"defined there is a corresponding @code{$region@var{n}} variable. Its value "
"is a pair @code{(@var{start-pos} . @var{end-pos})} that represent the start "
"and end positions (in the lexical input stream) of the @code{$@var{n}} "
"value. It can be @code{nil} when the component positions are not available, "
"like for an empty string component for example."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:415 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:416
#, no-wrap
msgid "$region"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:421
msgid ""
"Its value is the leftmost and rightmost positions of input data matched by "
"all @var{components} in the rule. This is a pair @code{(@var{leftmost-pos} "
". @var{rightmost-pos})}. It can be @code{nil} when components positions "
"are not available."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:422 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:423
#, no-wrap
msgid "$nterm"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:429
msgid ""
"This variable is initialized with the nonterminal symbol (@var{nonterm}) the "
"rule belongs to. It could be useful to improve error reporting or "
"debugging. It is also used to automatically provide incremental re-parse "
"entry points for @semantic{} tags (@pxref{Wisent Semantic})."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:430 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:431
#, no-wrap
msgid "$action"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:434
msgid ""
"The value of @code{$action} is the symbolic name of the current semantic "
"action (@pxref{Debugging actions})."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:441
msgid ""
"When an action is not specified a default value is supplied, it is "
"@code{(identity $1)}. This means that the default semantic value of a rule "
"is the value of its first component. Excepted for a rule matching the empty "
"string, for which the default action is to return @code{nil}."
msgstr ""
#. type: section
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:444 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:445
#, no-wrap
msgid "Example"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:447
#, no-wrap
msgid "grammar example"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:450
msgid ""
"Here is an example to parse simple infix arithmetic expressions. See "
"@ref{Infix Calc, , , bison}, in the Bison manual for details."
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:456
#, no-wrap
msgid ""
"'(\n"
" ;; Terminals\n"
" (NUM)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:463
#, no-wrap
msgid ""
" ;; Terminal associativity & precedence\n"
" ((nonassoc ?=)\n"
" (left ?- ?+)\n"
" (left ?* ?/)\n"
" (left NEG)\n"
" (right ?^))\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:470
#, no-wrap
msgid ""
" ;; Rules\n"
" (input\n"
" ((line))\n"
" ((input line)\n"
" (format \"%s %s\" $1 $2))\n"
" )\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:479
#, no-wrap
msgid ""
" (line\n"
" ((?;)\n"
" (progn \";\"))\n"
" ((exp ?;)\n"
" (format \"%s;\" $1))\n"
" ((error ?;)\n"
" (progn \"Error;\")))\n"
" )\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:501
#, no-wrap
msgid ""
" (exp\n"
" ((NUM)\n"
" (string-to-number $1))\n"
" ((exp ?= exp)\n"
" (= $1 $3))\n"
" ((exp ?+ exp)\n"
" (+ $1 $3))\n"
" ((exp ?- exp)\n"
" (- $1 $3))\n"
" ((exp ?* exp)\n"
" (* $1 $3))\n"
" ((exp ?/ exp)\n"
" (/ $1 $3))\n"
" ((?- exp) [NEG]\n"
" (- $2))\n"
" ((exp ?^ exp)\n"
" (expt $1 $3))\n"
" ((?\\( exp ?\\))\n"
" (progn $2))\n"
" )\n"
" )\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:506
msgid ""
"In the bison-like @dfn{WY} format (@pxref{Wisent Semantic}) the grammar "
"looks like this:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:510
#, no-wrap
msgid ""
"%token <number> NUM\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:516
#, no-wrap
msgid ""
"%nonassoc '=' ;; comparison\n"
"%left '-' '+'\n"
"%left '*' '/'\n"
"%left NEG ;; negation--unary minus\n"
"%right '^' ;; exponentiation\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:518 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:1749
#, no-wrap
msgid ""
"%%\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:524
#, no-wrap
msgid ""
"input:\n"
" line\n"
" | input line\n"
" (format \"%s %s\" $1 $2)\n"
" ;\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:533
#, no-wrap
msgid ""
"line:\n"
" ';'\n"
" @{\";\"@}\n"
" | exp ';'\n"
" (format \"%s;\" $1)\n"
" | error ';'\n"
" @{\"Error;\"@}\n"
" ;\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:554
#, no-wrap
msgid ""
"exp:\n"
" NUM\n"
" (string-to-number $1)\n"
" | exp '=' exp\n"
" (= $1 $3)\n"
" | exp '+' exp\n"
" (+ $1 $3)\n"
" | exp '-' exp\n"
" (- $1 $3)\n"
" | exp '*' exp\n"
" (* $1 $3)\n"
" | exp '/' exp\n"
" (/ $1 $3)\n"
" | '-' exp %prec NEG\n"
" (- $2)\n"
" | exp '^' exp\n"
" (expt $1 $3)\n"
" | '(' exp ')'\n"
" @{$2@}\n"
" ;\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:556
#, no-wrap
msgid "%%\n"
msgstr ""
#. type: section
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:559 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:560
#, no-wrap
msgid "Compiling a grammar"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:562 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:1138
#, no-wrap
msgid "automaton"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:567
msgid ""
"After providing a context-free grammar in a suitable format, it must be "
"translated into a set of tables (an @dfn{automaton}) that will be used to "
"derive the parser. Like Bison, Wisent translates grammars that must be "
"@dfn{LALR(1)}."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:568
#, no-wrap
msgid "LALR(1) grammar"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:569
#, no-wrap
msgid "look-ahead token"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:574
msgid ""
"A grammar is @acronym{LALR(1)} if it is possible to tell how to parse any "
"portion of an input string with just a single token of look-ahead: the "
"@dfn{look-ahead token}. See @ref{Language and Grammar, , , bison}, in the "
"Bison manual for more information."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:575
#, no-wrap
msgid "grammar compilation"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:577
msgid "Grammar translation (compilation) is achieved by the function:"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:578
#, no-wrap
msgid "compiling a grammar"
msgstr ""
#. type: vindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:579
#, no-wrap
msgid "wisent-single-start-flag"
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:580
#, no-wrap
msgid "wisent-compile-grammar"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:581
#, no-wrap
msgid "wisent-compile-grammar grammar &optional start-list"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:583
msgid "Compile @var{grammar} and return an @acronym{LALR(1)} automaton."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:592
msgid ""
"Optional argument @var{start-list} is a list of start symbols "
"(nonterminals). If @code{nil} the first nonterminal defined in the grammar "
"is the default start symbol. If @var{start-list} contains only one element, "
"it defines the start symbol. If @var{start-list} contains more than one "
"element, all are defined as potential start symbols, unless "
"@code{wisent-single-start-flag} is non-@code{nil}. In that case the first "
"element of @var{start-list} defines the start symbol and others are ignored."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:594
msgid "The @acronym{LALR(1)} automaton is a vector of the form:"
msgstr ""
#. type: code{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:596
msgid "[@var{actions gotos starts functions}]"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:598
#, no-wrap
msgid "actions"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:602
msgid ""
"A state/token matrix telling the parser what to do at every state based on "
"the current look-ahead token. That is shift, reduce, accept or error. See "
"also @ref{Wisent Parsing}."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:603
#, no-wrap
msgid "gotos"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:606
msgid ""
"A state/nonterminal matrix telling the parser the next state to go to after "
"reducing with each rule."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:607
#, no-wrap
msgid "starts"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:610
msgid ""
"An alist which maps the allowed start symbols (nonterminals) to lexical "
"tokens that will be first shifted into the parser stack."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:611
#, no-wrap
msgid "functions"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:614
msgid ""
"An obarray of semantic action symbols. A semantic action is actually an "
"Emacs Lisp function (lambda expression)."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:622
msgid ""
"Normally, a grammar should produce an automaton where at each state the "
"parser has only one action to do (@pxref{Wisent Parsing})."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:623
#, no-wrap
msgid "ambiguous grammar"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:627
msgid ""
"In certain cases, a grammar can produce an automaton where, at some states, "
"there are more than one action possible. Such a grammar is @dfn{ambiguous}, "
"and generates @dfn{conflicts}."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:628
#, no-wrap
msgid "deterministic automaton"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:633
msgid ""
"The parser can't be driven by an automaton which isn't completely "
"@dfn{deterministic}, that is which contains conflicts. It is necessary to "
"resolve the conflicts to eliminate them. Wisent resolves conflicts like "
"Bison does."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:634
#, no-wrap
msgid "grammar conflicts"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:635
#, no-wrap
msgid "conflicts resolution"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:637
msgid "There are two sorts of conflicts:"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:639 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:640
#, no-wrap
msgid "shift/reduce conflicts"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:642
msgid "When either a shift or a reduction would be valid at the same state."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:647
msgid ""
"Such conflicts are resolved by choosing to shift, unless otherwise directed "
"by operator precedence declarations. See @ref{Shift/Reduce , , , bison}, in "
"the Bison manual for more information."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:648 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:649
#, no-wrap
msgid "reduce/reduce conflicts"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:653
msgid ""
"That occurs if there are two or more rules that apply to the same sequence "
"of input. This usually indicates a serious error in the grammar."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:659
msgid ""
"Such conflicts are resolved by choosing to use the rule that appears first "
"in the grammar, but it is very risky to rely on this. Every reduce/reduce "
"conflict must be studied and usually eliminated. See @ref{Reduce/Reduce , , "
", bison}, in the Bison manual for more information."
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:664
msgid "Grammar Debugging::"
msgstr ""
#. type: subsection
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:664 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:717
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:718
#, no-wrap
msgid "Understanding the automaton"
msgstr ""
#. type: node
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:666
#, no-wrap
msgid "Grammar Debugging"
msgstr ""
#. type: subsection
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:667
#, no-wrap
msgid "Grammar debugging"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:669
#, no-wrap
msgid "grammar debugging"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:670
#, no-wrap
msgid "grammar verbose description"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:675
msgid ""
"To help writing a new grammar, @code{wisent-compile-grammar} can produce a "
"verbose report containing a detailed description of the grammar and parser "
"(equivalent to what Bison reports with the @option{--verbose} option)."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:678
msgid "To enable the verbose report you can set to non-@code{nil} the variable:"
msgstr ""
#. type: vindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:679
#, no-wrap
msgid "wisent-verbose-flag"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:680
#, no-wrap
msgid "Option wisent-verbose-flag"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:682
msgid "non-@code{nil} means to report verbose information on generated parser."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:685 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:1294
msgid "Or interactively use the command:"
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:686
#, no-wrap
msgid "wisent-toggle-verbose-flag"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:687
#, no-wrap
msgid "Command wisent-toggle-verbose-flag"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:689
msgid "Toggle whether to report verbose information on generated parser."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:695
msgid ""
"The verbose report is printed in the temporary buffer @file{*wisent-log*} "
"when running interactively, or in file @file{wisent.output} when running in "
"batch mode. Different reports are separated from each other by a line like "
"this:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:699
#, no-wrap
msgid "*** Wisent @var{source-file} - 2002-06-27 17:33\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:705
msgid ""
"where @var{source-file} is the name of the Emacs Lisp file from which the "
"grammar was read. See @ref{Understanding the automaton}, for details on the "
"verbose report."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:707
#, no-wrap
msgid "Please Note"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:710
msgid ""
"To help debugging the grammar compiler itself, you can set this variable to "
"print the content of some internal data structures:"
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:711 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:712
#, no-wrap
msgid "wisent-debug-flag"
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:714
msgid "non-@code{nil} means enable some debug stuff."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:720
#, no-wrap
msgid "understanding the automaton"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:724
msgid ""
"This section (took from the manual of Bison 1.49) describes how to use the "
"verbose report printed by @code{wisent-compile-grammar} to understand the "
"generated automaton, to tune or fix a grammar."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:726
msgid "We will use the following example:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:732
#, no-wrap
msgid ""
"(let ((wisent-verbose-flag t)) ;; Print a verbose report!\n"
" (wisent-compile-grammar\n"
" '((NUM STR) ; %token NUM STR\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:735
#, no-wrap
msgid ""
" ((left ?+ ?-) ; %left '+' '-';\n"
" (left ?*)) ; %left '*'\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:743
#, no-wrap
msgid ""
" (exp ; exp:\n"
" ((exp ?+ exp)) ; exp '+' exp\n"
" ((exp ?- exp)) ; | exp '-' exp\n"
" ((exp ?* exp)) ; | exp '*' exp\n"
" ((exp ?/ exp)) ; | exp '/' exp\n"
" ((NUM)) ; | NUM\n"
" ) ; ;\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:750
#, no-wrap
msgid ""
" (useless ; useless:\n"
" ((STR)) ; STR\n"
" ) ; ;\n"
" )\n"
" 'nil) ; no %start declarations\n"
" )\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:755
msgid ""
"When evaluating the above expression, grammar compilation first issues the "
"following two clear messages:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:760
#, no-wrap
msgid ""
"Grammar contains 1 useless nonterminals and 1 useless rules\n"
"Grammar contains 7 shift/reduce conflicts\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:764
msgid "The @file{*wisent-log*} buffer details things!"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:767
msgid ""
"The first section reports conflicts that were solved using precedence and/or "
"associativity:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:779
#, no-wrap
msgid ""
"Conflict in state 7 between rule 1 and token '+' resolved as reduce.\n"
"Conflict in state 7 between rule 1 and token '-' resolved as reduce.\n"
"Conflict in state 7 between rule 1 and token '*' resolved as shift.\n"
"Conflict in state 8 between rule 2 and token '+' resolved as reduce.\n"
"Conflict in state 8 between rule 2 and token '-' resolved as reduce.\n"
"Conflict in state 8 between rule 2 and token '*' resolved as shift.\n"
"Conflict in state 9 between rule 3 and token '+' resolved as reduce.\n"
"Conflict in state 9 between rule 3 and token '-' resolved as reduce.\n"
"Conflict in state 9 between rule 3 and token '*' resolved as reduce.\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:784
msgid ""
"The next section reports useless tokens, nonterminal and rules (note that "
"useless tokens might be used by the scanner):"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:788
#, no-wrap
msgid ""
"Useless nonterminals:\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:790
#, no-wrap
msgid ""
" useless\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:793
#, no-wrap
msgid ""
"Terminals which are not used:\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:795
#, no-wrap
msgid ""
" STR\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:798
#, no-wrap
msgid ""
"Useless rules:\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:800
#, no-wrap
msgid "#6 useless: STR;\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:804
msgid "The next section lists states that still have conflicts:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:811
#, no-wrap
msgid ""
"State 7 contains 1 shift/reduce conflict.\n"
"State 8 contains 1 shift/reduce conflict.\n"
"State 9 contains 1 shift/reduce conflict.\n"
"State 10 contains 4 shift/reduce conflicts.\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:815
msgid "The next section reproduces the grammar used:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:819
#, no-wrap
msgid ""
"Grammar\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:826
#, no-wrap
msgid ""
" Number, Rule\n"
" 1 exp -> exp '+' exp\n"
" 2 exp -> exp '-' exp\n"
" 3 exp -> exp '*' exp\n"
" 4 exp -> exp '/' exp\n"
" 5 exp -> NUM\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:830
msgid "And reports the uses of the symbols:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:834
#, no-wrap
msgid ""
"Terminals, with rules where they appear\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:843
#, no-wrap
msgid ""
"$EOI (-1)\n"
"error (1)\n"
"NUM (2) 5\n"
"STR (3) 6\n"
"'+' (4) 1\n"
"'-' (5) 2\n"
"'*' (6) 3\n"
"'/' (7) 4\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:846
#, no-wrap
msgid ""
"Nonterminals, with rules where they appear\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:849
#, no-wrap
msgid ""
"exp (8)\n"
" on left: 1 2 3 4 5, on right: 1 2 3 4\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:856
msgid ""
"The report then details the automaton itself, describing each state with it "
"set of @dfn{items}, also known as @dfn{pointed rules}. Each item is a "
"production rule together with a point (marked by @samp{.}) that the input "
"cursor."
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:860
#, no-wrap
msgid ""
"state 0\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:862 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:922
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:939 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:949
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:959
#, no-wrap
msgid ""
" NUM shift, and go to state 1\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:864
#, no-wrap
msgid " exp go to state 2\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:874
msgid ""
"State 0 corresponds to being at the very beginning of the parsing, in the "
"initial rule, right before the start symbol (@samp{exp}). When the parser "
"returns to this state right after having reduced a rule that produced an "
"@samp{exp}, it jumps to state 2. If there is no such transition on a "
"nonterminal symbol, and the lookahead is a @samp{NUM}, then this token is "
"shifted on the parse stack, and the control flow jumps to state 1. Any "
"other lookahead triggers a parse error."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:876
msgid "In the state 1..."
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:880
#, no-wrap
msgid ""
"state 1\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:882
#, no-wrap
msgid ""
" exp -> NUM . (rule 5)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:884
#, no-wrap
msgid " $default reduce using rule 5 (exp)\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:891
msgid ""
"the rule 5, @samp{exp: NUM;}, is completed. Whatever the lookahead "
"(@samp{$default}), the parser will reduce it. If it was coming from state "
"0, then, after this reduction it will return to state 0, and will jump to "
"state 2 (@samp{exp: go to state 2})."
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:895
#, no-wrap
msgid ""
"state 2\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:900
#, no-wrap
msgid ""
" exp -> exp . '+' exp (rule 1)\n"
" exp -> exp . '-' exp (rule 2)\n"
" exp -> exp . '*' exp (rule 3)\n"
" exp -> exp . '/' exp (rule 4)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:906
#, no-wrap
msgid ""
" $EOI shift, and go to state 11\n"
" '+' shift, and go to state 3\n"
" '-' shift, and go to state 4\n"
" '*' shift, and go to state 5\n"
" '/' shift, and go to state 6\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:914
msgid ""
"In state 2, the automaton can only shift a symbol. For instance, because of "
"the item @samp{exp -> exp . '+' exp}, if the lookahead if @samp{+}, it will "
"be shifted on the parse stack, and the automaton control will jump to state "
"3, corresponding to the item @samp{exp -> exp . '+' exp}:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:918
#, no-wrap
msgid ""
"state 3\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:920
#, no-wrap
msgid ""
" exp -> exp '+' . exp (rule 1)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:924
#, no-wrap
msgid " exp go to state 7\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:929
msgid ""
"Since there is no default action, any other token than those listed above "
"will trigger a parse error."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:931
msgid "The interpretation of states 4 to 6 is straightforward:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:935
#, no-wrap
msgid ""
"state 4\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:937
#, no-wrap
msgid ""
" exp -> exp '-' . exp (rule 2)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:941
#, no-wrap
msgid ""
" exp go to state 8\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:945
#, no-wrap
msgid ""
"state 5\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:947
#, no-wrap
msgid ""
" exp -> exp '*' . exp (rule 3)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:951
#, no-wrap
msgid ""
" exp go to state 9\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:955
#, no-wrap
msgid ""
"state 6\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:957
#, no-wrap
msgid ""
" exp -> exp '/' . exp (rule 4)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:961
#, no-wrap
msgid " exp go to state 10\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:966
msgid ""
"As was announced in beginning of the report, @samp{State 7 contains 1 "
"shift/reduce conflict.}:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:970
#, no-wrap
msgid ""
"state 7\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:976
#, no-wrap
msgid ""
" exp -> exp . '+' exp (rule 1)\n"
" exp -> exp '+' exp . (rule 1)\n"
" exp -> exp . '-' exp (rule 2)\n"
" exp -> exp . '*' exp (rule 3)\n"
" exp -> exp . '/' exp (rule 4)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:979 /Users/suzume/Documents/Repositories/Projet
#: OmegaT de Documentation Emacs - Sources/doc/misc/wisent.texi:1025
#, no-wrap
msgid ""
" '*' shift, and go to state 5\n"
" '/' shift, and go to state 6\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:982
#, no-wrap
msgid ""
" '/' [reduce using rule 1 (exp)]\n"
" $default reduce using rule 1 (exp)\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:993
msgid ""
"Indeed, there are two actions associated to the lookahead @samp{/}: either "
"shifting (and going to state 6), or reducing rule 1. The conflict means "
"that either the grammar is ambiguous, or the parser lacks information to "
"make the right decision. Indeed the grammar is ambiguous, as, since we did "
"not specify the precedence of @samp{/}, the sentence @samp{NUM + NUM / NUM} "
"can be parsed as @samp{NUM + (NUM / NUM)}, which corresponds to shifting "
"@samp{/}, or as @samp{(NUM + NUM) / NUM}, which corresponds to reducing rule "
"1."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:998
msgid ""
"Because in @acronym{LALR(1)} parsing a single decision can be made, Wisent "
"arbitrarily chose to disable the reduction, see @ref{Conflicts}. Discarded "
"actions are reported in between square brackets."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1010
msgid ""
"Note that all the previous states had a single possible action: either "
"shifting the next token and going to the corresponding state, or reducing a "
"single rule. In the other cases, i.e., when shifting @emph{and} reducing is "
"possible or when @emph{several} reductions are possible, the lookahead is "
"required to select the action. State 7 is one such state: if the lookahead "
"is @samp{*} or @samp{/} then the action is shifting, otherwise the action is "
"reducing rule 1. In other words, the first two items, corresponding to rule "
"1, are not eligible when the lookahead is @samp{*}, since we specified that "
"@samp{*} has higher precedence that @samp{+}. More generally, some items "
"are eligible only with some set of possible lookaheads."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1012
msgid "States 8 to 10 are similar:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1016
#, no-wrap
msgid ""
"state 8\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1022
#, no-wrap
msgid ""
" exp -> exp . '+' exp (rule 1)\n"
" exp -> exp . '-' exp (rule 2)\n"
" exp -> exp '-' exp . (rule 2)\n"
" exp -> exp . '*' exp (rule 3)\n"
" exp -> exp . '/' exp (rule 4)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1028
#, no-wrap
msgid ""
" '/' [reduce using rule 2 (exp)]\n"
" $default reduce using rule 2 (exp)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1031
#, no-wrap
msgid ""
"state 9\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1037
#, no-wrap
msgid ""
" exp -> exp . '+' exp (rule 1)\n"
" exp -> exp . '-' exp (rule 2)\n"
" exp -> exp . '*' exp (rule 3)\n"
" exp -> exp '*' exp . (rule 3)\n"
" exp -> exp . '/' exp (rule 4)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1039
#, no-wrap
msgid ""
" '/' shift, and go to state 6\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1042
#, no-wrap
msgid ""
" '/' [reduce using rule 3 (exp)]\n"
" $default reduce using rule 3 (exp)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1045
#, no-wrap
msgid ""
"state 10\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1051
#, no-wrap
msgid ""
" exp -> exp . '+' exp (rule 1)\n"
" exp -> exp . '-' exp (rule 2)\n"
" exp -> exp . '*' exp (rule 3)\n"
" exp -> exp . '/' exp (rule 4)\n"
" exp -> exp '/' exp . (rule 4)\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1056
#, no-wrap
msgid ""
" '+' shift, and go to state 3\n"
" '-' shift, and go to state 4\n"
" '*' shift, and go to state 5\n"
" '/' shift, and go to state 6\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1062
#, no-wrap
msgid ""
" '+' [reduce using rule 4 (exp)]\n"
" '-' [reduce using rule 4 (exp)]\n"
" '*' [reduce using rule 4 (exp)]\n"
" '/' [reduce using rule 4 (exp)]\n"
" $default reduce using rule 4 (exp)\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1068
msgid ""
"Observe that state 10 contains conflicts due to the lack of precedence of "
"@samp{/} wrt @samp{+}, @samp{-}, and @samp{*}, but also because the "
"associativity of @samp{/} is not specified."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1071
msgid ""
"Finally, the state 11 (plus 12) is named the @dfn{final state}, or the "
"@dfn{accepting state}:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1075
#, no-wrap
msgid ""
"state 11\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1077
#, no-wrap
msgid ""
" $EOI shift, and go to state 12\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1081
#, no-wrap
msgid ""
"state 12\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1083
#, no-wrap
msgid " $default accept\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1088
msgid ""
"The end of input is shifted @samp{$EOI shift,} and the parser exits "
"successfully (@samp{go to state 12}, that terminates)."
msgstr ""
#. type: chapter
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1089
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1090
#, no-wrap
msgid "Wisent Parsing"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1092
#, no-wrap
msgid "bottom-up parser"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1093
#, no-wrap
msgid "shift-reduce parser"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1096
msgid ""
"The Wisent's parser is what is called a @dfn{bottom-up} or "
"@dfn{shift-reduce} parser which repeatedly:"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1098
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1099
#, no-wrap
msgid "shift"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1102
msgid ""
"That is pushes the value of the last lexical token read (the look-ahead "
"token) into a value stack, and reads a new one."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1103
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1104
#, no-wrap
msgid "reduce"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1109
msgid ""
"That is replaces a nonterminal by its semantic value. The values of the "
"components which form the right hand side of a rule are popped from the "
"value stack and reduced by the semantic action of this rule. The result is "
"pushed back on top of value stack."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1112
msgid "The parser will stop on:"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1114
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1115
#, no-wrap
msgid "accept"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1118
msgid ""
"When all input has been successfully parsed. The semantic value of the "
"start nonterminal is on top of the value stack."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1119
#, no-wrap
msgid "syntax error"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1120
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1146
#, no-wrap
msgid "error"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1124
msgid ""
"When a syntax error (an unexpected token in input) has been detected. At "
"this point the parser issues an error message and either stops or calls a "
"recovery routine to try to resume parsing."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1126
#, no-wrap
msgid "table-driven parser"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1130
msgid ""
"The above elementary actions are driven by the @acronym{LALR(1)} automaton "
"built by @code{wisent-compile-grammar} from a context-free grammar."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1132
msgid "The Wisent's parser is entered by calling the function:"
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1133
#, no-wrap
msgid "wisent-parse"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1134
#, no-wrap
msgid "wisent-parse automaton lexer &optional error start"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1136
msgid "Parse input using the automaton specified in @var{automaton}."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1141
msgid ""
"Is an @acronym{LALR(1)} automaton generated by @code{wisent-compile-grammar} "
"(@pxref{Wisent Grammar})."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1142
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1187
#, no-wrap
msgid "lexer"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1145
msgid ""
"Is a function with no argument called by the parser to obtain the next "
"terminal (token) in input (@pxref{Writing a lexer})."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1150
msgid ""
"Is an optional reporting function called when a parse error occurs. It "
"receives a message string to report. It defaults to the function "
"@code{wisent-message} (@pxref{Report errors})."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1151
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1210
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1981
#, no-wrap
msgid "start"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1155
msgid ""
"Specify the start symbol (nonterminal) used by the parser as its goal. It "
"defaults to the start symbol defined in the grammar (@pxref{Wisent "
"Grammar})."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1160
msgid ""
"The following two normal hooks permit doing some useful processing "
"respectively before starting parsing, and after the parser terminated."
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1161
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1162
#, no-wrap
msgid "wisent-pre-parse-hook"
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1164
msgid "Normal hook run just before entering the @var{LR} parser engine."
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1166
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1167
#, no-wrap
msgid "wisent-post-parse-hook"
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1169
msgid "Normal hook run just after the @var{LR} parser engine terminated."
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1177
msgid "Writing a lexer::"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1177
msgid "Actions goodies::"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1177
msgid "Report errors::"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1177
msgid "Error recovery::"
msgstr ""
#. type: node
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1177
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1496
#, no-wrap
msgid "Debugging actions"
msgstr ""
#. type: node
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1179
#, no-wrap
msgid "Writing a lexer"
msgstr ""
#. type: section
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1180
#, no-wrap
msgid "What the parser must receive"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1185
msgid ""
"It is important to understand that the parser does not parse characters, but "
"lexical tokens, and does not know anything about characters in text streams!"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1186
#, no-wrap
msgid "lexical analysis"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1188
#, no-wrap
msgid "scanner"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1193
msgid ""
"Reading input data to produce lexical tokens is performed by a lexer (also "
"called a scanner) in a lexical analysis step, before the syntax analysis "
"step performed by the parser. The parser automatically calls the lexer when "
"it needs the next token to parse."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1194
#, no-wrap
msgid "lexical tokens"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1197
msgid ""
"A Wisent's lexer is an Emacs Lisp function with no argument. It must return "
"a valid lexical token of the form:"
msgstr ""
#. type: code{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1199
msgid "(@var{token-class value} [@var{start} . @var{end}])"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1201
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1977
#, no-wrap
msgid "token-class"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1205
msgid ""
"Is a category of lexical token identifying a terminal as specified in the "
"grammar (@pxref{Wisent Grammar}). It can be a symbol or a character "
"literal."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1206
#, no-wrap
msgid "value"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1209
msgid ""
"Is the value of the lexical token. It can be of any valid Emacs Lisp data "
"type."
msgstr ""
#. type: itemx
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1211
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1982
#, no-wrap
msgid "end"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1214
msgid ""
"Are the optional beginning and ending positions of @var{value} in the input "
"stream."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1218
msgid ""
"When there are no more tokens to read the lexer must return the token "
"@code{(list wisent-eoi-term)} to each request."
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1219
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1220
#, no-wrap
msgid "wisent-eoi-term"
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1222
msgid "Predefined constant, End-Of-Input terminal symbol."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1227
msgid ""
"@code{wisent-lex} is an example of a lexer that reads lexical tokens "
"produced by a @semantic{} lexer, and translates them into lexical tokens "
"suitable to the Wisent parser. See also @ref{Wisent Lex}."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1230
msgid ""
"To call the lexer in a semantic action use the function "
"@code{wisent-lexer}. See also @ref{Actions goodies}."
msgstr ""
#. type: node
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1231
#, no-wrap
msgid "Actions goodies"
msgstr ""
#. type: section
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1232
#, no-wrap
msgid "Variables and macros useful in grammar actions."
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1234
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1235
#, no-wrap
msgid "wisent-input"
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1238
msgid ""
"The last token read. This variable only has meaning in the scope of "
"@code{wisent-parse}."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1240
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1241
#, no-wrap
msgid "wisent-lexer"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1243
msgid "Obtain the next terminal in input."
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1245
#, no-wrap
msgid "wisent-region"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1246
#, no-wrap
msgid "wisent-region &rest positions"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1253
msgid ""
"Return the start/end positions of the region including @var{positions}. "
"Each element of @var{positions} is a pair @w{@code{(@var{start-pos} . "
"@var{end-pos})}} or @code{nil}. The returned value is the pair "
"@w{@code{(@var{min-start-pos} . @var{max-end-pos})}} or @code{nil} if no "
"@var{positions} are available."
msgstr ""
#. type: node
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1255
#, no-wrap
msgid "Report errors"
msgstr ""
#. type: section
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1256
#, no-wrap
msgid "The error reporting function"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1258
#, no-wrap
msgid "error reporting"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1262
msgid ""
"When the parser encounters a syntax error it calls a user-defined function. "
"It must be an Emacs Lisp function with one argument: a string containing the "
"message to report."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1264
msgid "By default the parser uses this function to report error messages:"
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1265
#, no-wrap
msgid "wisent-message"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1266
#, no-wrap
msgid "wisent-message string &rest args"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1269
msgid ""
"Print a one-line message if @code{wisent-parse-verbose-flag} is set. Pass "
"@var{string} and @var{args} arguments to @dfn{message}."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1272
#, no-wrap
msgid "Please Note:"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1275
msgid "@code{wisent-message} uses the following function to print lexical tokens:"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1276
#, no-wrap
msgid "wisent-token-to-string token"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1278
msgid "Return a printed representation of lexical token @var{token}."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1281
msgid "The general printed form of a lexical token is:"
msgstr ""
#. type: code{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1283
msgid "@var{token}(@var{value})@@@var{location}"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1287
msgid ""
"To control the verbosity of the parser you can set to non-@code{nil} this "
"variable:"
msgstr ""
#. type: vindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1288
#, no-wrap
msgid "wisent-parse-verbose-flag"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1289
#, no-wrap
msgid "Option wisent-parse-verbose-flag"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1291
msgid "non-@code{nil} means to issue more messages while parsing."
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1295
#, no-wrap
msgid "wisent-parse-toggle-verbose-flag"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1296
#, no-wrap
msgid "Command wisent-parse-toggle-verbose-flag"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1298
msgid "Toggle whether to issue more messages while parsing."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1303
msgid ""
"When the error reporting function is entered the variable "
"@code{wisent-input} contains the unexpected token as returned by the lexer."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1308
msgid ""
"The error reporting function can be called from a semantic action too using "
"the special macro @code{wisent-error}. When called from a semantic action "
"entered by error recovery (@pxref{Error recovery}) the value of the variable "
"@code{wisent-recovering} is non-@code{nil}."
msgstr ""
#. type: section
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1309
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1310
#, no-wrap
msgid "Error recovery"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1312
#, no-wrap
msgid "error recovery"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1316
msgid ""
"The error recovery mechanism of the Wisent's parser conforms to the one "
"Bison uses. See @ref{Error Recovery, , , bison}, in the Bison manual for "
"details."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1317
#, no-wrap
msgid "error token"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1321
msgid ""
"To recover from a syntax error you must write rules to recognize the special "
"token @code{error}. This is a terminal symbol that is automatically defined "
"and reserved for error handling."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1327
msgid ""
"When the parser encounters a syntax error, it pops the state stack until it "
"finds a state that allows shifting the @code{error} token. After it has "
"been shifted, if the old look-ahead token is not acceptable to be shifted "
"next, the parser reads tokens and discards them until it finds a token which "
"is acceptable."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1328
#, no-wrap
msgid "error recovery strategy"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1332
msgid ""
"Strategies for error recovery depend on the choice of error rules in the "
"grammar. A simple and useful strategy is simply to skip the rest of the "
"current statement if an error is detected:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1337
#, no-wrap
msgid ""
"(statement (( error ?; )) ;; on error, skip until ';' is read\n"
" )\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1342
msgid ""
"It is also useful to recover to the matching close-delimiter of an "
"opening-delimiter that has already been parsed:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1349
#, no-wrap
msgid ""
"(primary (( ?@{ expr ?@} ))\n"
" (( ?@{ error ?@} ))\n"
" @dots{}\n"
" )\n"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1352
#, no-wrap
msgid "error recovery actions"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1356
msgid ""
"Note that error recovery rules may have actions, just as any other rules "
"can. Here are some predefined hooks, variables, functions or macros, useful "
"in such actions:"
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1357
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1358
#, no-wrap
msgid "wisent-nerrs"
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1360
msgid "The number of parse errors encountered so far."
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1362
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1363
#, no-wrap
msgid "wisent-recovering"
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1366
msgid ""
"non-@code{nil} means that the parser is recovering. This variable only has "
"meaning in the scope of @code{wisent-parse}."
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1368
#, no-wrap
msgid "wisent-error"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1369
#, no-wrap
msgid "wisent-error msg"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1372
msgid ""
"Call the user supplied error reporting function with message @var{msg} "
"(@pxref{Report errors})."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1374
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1390
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1407
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1423
msgid "For an example of use, @xref{wisent-skip-token}."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1376
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1377
#, no-wrap
msgid "wisent-errok"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1380
msgid "Resume generating error messages immediately for subsequent syntax errors."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1384
msgid ""
"The parser suppress error message for syntax errors that happens shortly "
"after the first, until three consecutive input tokens have been successfully "
"shifted."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1388
msgid ""
"Calling @code{wisent-errok} in an action, make error messages resume "
"immediately. No error messages will be suppressed if you call it in an "
"error rule's action."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1392
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1393
#, no-wrap
msgid "wisent-clearin"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1396
msgid ""
"Discard the current lookahead token. This will cause a new lexical token to "
"be read."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1399
msgid ""
"In an error rule's action the previous lookahead token is reanalyzed "
"immediately. @code{wisent-clearin} may be called to clear this token."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1405
msgid ""
"For example, suppose that on a parse error, an error handling routine is "
"called that advances the input stream to some point where parsing should "
"once again commence. The next symbol returned by the lexical scanner is "
"probably correct. The previous lookahead token ought to be discarded with "
"@code{wisent-clearin}."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1409
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1410
#, no-wrap
msgid "wisent-abort"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1412
msgid "Abort parsing and save the lookahead token."
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1414
#, no-wrap
msgid "wisent-set-region"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1415
#, no-wrap
msgid "wisent-set-region start end"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1421
msgid ""
"Change the region of text matched by the current nonterminal. @var{start} "
"and @var{end} are respectively the beginning and end positions of the region "
"occupied by the group of components associated to this nonterminal. If "
"@var{start} or @var{end} values are not a valid positions the region is set "
"to @code{nil}."
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1425
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1426
#, no-wrap
msgid "wisent-discarding-token-functions"
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1436
msgid ""
"List of functions to be called when discarding a lexical token. These "
"functions receive the lexical token discarded. When the parser encounters "
"unexpected tokens, it can discards them, based on what directed by error "
"recovery rules. Either when the parser reads tokens until one is found that "
"can be shifted, or when an semantic action calls the function "
"@code{wisent-skip-token} or @code{wisent-skip-block}. For language specific "
"hooks, make sure you define this as a local hook."
msgstr ""
#. type: defvar
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1440
msgid ""
"For example, in @semantic{}, this hook is set to the function "
"@code{wisent-collect-unmatched-syntax} to collect unmatched lexical tokens "
"(@pxref{Useful functions})."
msgstr ""
#. type: anchor{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1442
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1443
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1448
#, no-wrap
msgid "wisent-skip-token"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1448
msgid ""
"Skip the lookahead token in order to resume parsing. Return @code{nil}. "
"Must be used in error recovery semantic actions."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1450
msgid "It typically looks like this:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1459
#, no-wrap
msgid ""
"(wisent-message \"%s: skip %s\" $action\n"
" (wisent-token-to-string wisent-input))\n"
"(run-hook-with-args\n"
" 'wisent-discarding-token-functions wisent-input)\n"
"(wisent-clearin)\n"
"(wisent-errok)))\n"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1463
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1464
#, no-wrap
msgid "wisent-skip-block"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1468
msgid ""
"Safely skip a block in order to resume parsing. Return @code{nil}. Must be "
"used in error recovery semantic actions."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1471
msgid ""
"A block is data between an open-delimiter (syntax class @code{(}) and a "
"matching close-delimiter (syntax class @code{)}):"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1477
#, no-wrap
msgid ""
"(a parenthesized block)\n"
"[a block between brackets]\n"
"@{a block between braces@}\n"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1484
msgid ""
"The following example uses @code{wisent-skip-block} to safely skip a block "
"delimited by @samp{LBRACE} (@code{@{}) and @samp{RBRACE} (@code{@}}) tokens, "
"when a syntax error occurs in @samp{other-components}:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1492
#, no-wrap
msgid ""
"(block ((LBRACE other-components RBRACE))\n"
" ((LBRACE RBRACE))\n"
" ((LBRACE error)\n"
" (wisent-skip-block))\n"
" )\n"
msgstr ""
#. type: section
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1497
#, no-wrap
msgid "Debugging semantic actions"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1499
#, no-wrap
msgid "semantic action symbols"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1504
msgid ""
"Each semantic action is represented by a symbol interned in an @dfn{obarray} "
"that is part of the @acronym{LALR(1)} automaton (@pxref{Compiling a "
"grammar}). @code{symbol-function} on a semantic action symbol return the "
"semantic action lambda expression."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1510
msgid ""
"A semantic action symbol name has the form "
"@code{@var{nonterminal}:@var{index}}, where @var{nonterminal} is the name of "
"the nonterminal symbol the action belongs to, and @var{index} is an action "
"sequence number within the scope of @var{nonterminal}. For example, this "
"nonterminal definition:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1518
#, no-wrap
msgid ""
"input:\n"
" line [@code{input:0}]\n"
" | input line\n"
" (format \"%s %s\" $1 $2) [@code{input:1}]\n"
" ;\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1522
msgid "Will produce two semantic actions, and associated symbols:"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1524
#, no-wrap
msgid "input:0"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1526
msgid "A default action that returns @code{$1}."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1527
#, no-wrap
msgid "input:1"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1529
msgid "That returns @code{(format \"%s %s\" $1 $2)}."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1531
#, no-wrap
msgid "debugging semantic actions"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1536
msgid ""
"Debugging uses the Lisp debugger to investigate what is happening during "
"execution of semantic actions. Three commands are available to debug "
"semantic actions. They receive two arguments:"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1538
#, no-wrap
msgid "The automaton that contains the semantic action."
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1540
#, no-wrap
msgid "The semantic action symbol."
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1543
#, no-wrap
msgid "wisent-debug-on-entry"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1544
#, no-wrap
msgid "Command wisent-debug-on-entry automaton function"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1547
msgid ""
"Request @var{automaton}'s @var{function} to invoke debugger each time it is "
"called. @var{function} must be a semantic action symbol that exists in "
"@var{automaton}."
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1549
#, no-wrap
msgid "wisent-cancel-debug-on-entry"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1550
#, no-wrap
msgid "Command wisent-cancel-debug-on-entry automaton function"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1553
msgid ""
"Undo effect of @code{wisent-debug-on-entry} on @var{automaton}'s "
"@var{function}. @var{function} must be a semantic action symbol that exists "
"in @var{automaton}."
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1555
#, no-wrap
msgid "wisent-debug-show-entry"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1556
#, no-wrap
msgid "Command wisent-debug-show-entry automaton function"
msgstr ""
#. type: deffn
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1559
msgid ""
"Show the source of @var{automaton}'s semantic action @var{function}. "
"@var{function} must be a semantic action symbol that exists in "
"@var{automaton}."
msgstr ""
#. type: node
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1561
#, no-wrap
msgid "Wisent Semantic"
msgstr ""
#. type: chapter
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1562
#, no-wrap
msgid "How to use Wisent with Semantic"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1564
#, no-wrap
msgid "tags"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1567
msgid ""
"This section presents how the Wisent's parser can be used to produce "
"@dfn{tags} for the @semantic{} tool set."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1572
msgid ""
"@semantic{} tags form a hierarchy of Emacs Lisp data structures that "
"describes a program in a way independent of programming languages. Tags map "
"program declarations, like functions, methods, variables, data types, "
"classes, includes, grammar rules, etc.."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1573
#, no-wrap
msgid "WY grammar format"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1577
msgid ""
"To use the Wisent parser with @semantic{} you have to define your grammar in "
"@dfn{WY} form, a grammar format very close to the one used by Bison."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1580
msgid ""
"Please see @ref{top, Semantic Grammar Framework Manual,, grammar-fw}, for "
"more information on @semantic{} grammars."
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1584
msgid "Grammar styles::"
msgstr ""
#. type: node
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1584
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1960
#, no-wrap
msgid "Wisent Lex"
msgstr ""
#. type: section
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1586
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1587
#, no-wrap
msgid "Grammar styles"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1589
#, no-wrap
msgid "grammar styles"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1595
msgid ""
"@semantic{} parsing heavily depends on how you wrote the grammar. There are "
"mainly two styles to write a Wisent's grammar intended to be used with the "
"@semantic{} tool set: the @dfn{Iterative style} and the @dfn{Bison style}. "
"Each one has pros and cons, and in certain cases it can be worth a mix of "
"the two styles!"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1602
msgid "Iterative style::"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1602
msgid "Bison style::"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1602
msgid "Mixed style::"
msgstr ""
#. type: menuentry
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1602
msgid "Start nonterminals::"
msgstr ""
#. type: subsection
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1602
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1945
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1946
#, no-wrap
msgid "Useful functions"
msgstr ""
#. type: subsection
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1604
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1605
#, no-wrap
msgid "Iterative style"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1607
#, no-wrap
msgid "grammar iterative style"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1612
msgid ""
"The @dfn{iterative style} is the preferred style to use with @semantic{}. "
"It relies on an iterative parser back-end mechanism which parses start "
"nonterminals one at a time and automagically skips unexpected lexical tokens "
"in input."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1616
msgid ""
"Compared to rule-based iterative functions (@pxref{Bison style}), iterative "
"parsers are better in that they can handle obscure errors more cleanly."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1617
#, no-wrap
msgid "raw tag"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1621
msgid ""
"Each start nonterminal must produces a @dfn{raw tag} by calling a "
"@code{TAG}-like grammar macro with appropriate parameters. See also "
"@ref{Start nonterminals}."
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1622
#, no-wrap
msgid "expanded tag"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1626
msgid ""
"Then, each parsing iteration automatically translates a raw tag into "
"@dfn{expanded tags}, updating the raw tag structure with internal properties "
"and buffer related data."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1628
msgid "After parsing completes, it results in a tree of expanded tags."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1632
msgid ""
"The following example is a snippet of the iterative style Java grammar "
"provided in the @semantic{} distribution in the file "
"@file{semantic/wisent/java-tags.wy}."
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1643
#, no-wrap
msgid ""
"@dots{}\n"
";; Alternate entry points\n"
";; - Needed by partial re-parse\n"
"%start formal_parameter\n"
"@dots{}\n"
";; - Needed by EXPANDFULL clauses\n"
"%start formal_parameters\n"
"@dots{}\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1648
#, no-wrap
msgid ""
"formal_parameter_list\n"
" : PAREN_BLOCK\n"
" (EXPANDFULL $1 formal_parameters)\n"
" ;\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1657
#, no-wrap
msgid ""
"formal_parameters\n"
" : LPAREN\n"
" ()\n"
" | RPAREN\n"
" ()\n"
" | formal_parameter COMMA\n"
" | formal_parameter RPAREN\n"
" ;\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1662
#, no-wrap
msgid ""
"formal_parameter\n"
" : formal_parameter_modifier_opt type variable_declarator_id\n"
" (VARIABLE-TAG $3 $2 nil :typemodifiers $1)\n"
" ;\n"
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1665
#, no-wrap
msgid "EXPANDFULL"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1672
msgid ""
"It shows the use of the @code{EXPANDFULL} grammar macro to parse a "
"@samp{PAREN_BLOCK} which contains a @samp{formal_parameter_list}. "
"@code{EXPANDFULL} tells to recursively parse @samp{formal_parameters} inside "
"@samp{PAREN_BLOCK}. The parser iterates until it digested all available "
"input data inside the @samp{PAREN_BLOCK}, trying to match any of the "
"@samp{formal_parameters} rules:"
msgstr ""
#. type: samp{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1674
#, no-wrap
msgid "LPAREN"
msgstr ""
#. type: samp{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1676
#, no-wrap
msgid "RPAREN"
msgstr ""
#. type: samp{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1678
#, no-wrap
msgid "formal_parameter COMMA"
msgstr ""
#. type: samp{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1680
#, no-wrap
msgid "formal_parameter RPAREN"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1687
msgid ""
"At each iteration it will return a @samp{formal_parameter} raw tag, or "
"@code{nil} to skip unwanted (single @samp{LPAREN} or @samp{RPAREN} for "
"example) or unexpected input data. Those raw tags will be automatically "
"expanded by the iterative back-end parser."
msgstr ""
#. type: subsection
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1688
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1689
#, no-wrap
msgid "Bison style"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1691
#, no-wrap
msgid "grammar bison style"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1699
msgid ""
"What we call the @dfn{Bison style} is the traditional style of Bison's "
"grammars. Compared to iterative style, it is not straightforward to use "
"grammars written in Bison style in @semantic{}. Mainly because such "
"grammars are designed to parse the whole input data in one pass, and don't "
"use the iterative parser back-end mechanism (@pxref{Iterative style}). With "
"Bison style the parser is called once to parse the grammar start "
"nonterminal."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1703
msgid ""
"The following example is a snippet of the Bison style Java grammar provided "
"in the @semantic{} distribution in the file @file{semantic/wisent/java.wy}."
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1708
#, no-wrap
msgid ""
"%start formal_parameter\n"
"@dots{}\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1715
#, no-wrap
msgid ""
"formal_parameter_list\n"
" : formal_parameter_list COMMA formal_parameter\n"
" (cons $3 $1)\n"
" | formal_parameter\n"
" (list $1)\n"
" ;\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1722
#, no-wrap
msgid ""
"formal_parameter\n"
" : formal_parameter_modifier_opt type variable_declarator_id\n"
" (EXPANDTAG\n"
" (VARIABLE-TAG $3 $2 :typemodifiers $1)\n"
" )\n"
" ;\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1729
msgid ""
"The first consequence is that syntax errors are not automatically handled by "
"@semantic{}. Thus, it is necessary to explicitly handle them at the grammar "
"level, providing error recovery rules to skip unexpected input data."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1736
msgid ""
"The second consequence is that the iterative parser can't do automatic tag "
"expansion, except for the start nonterminal value. It is necessary to "
"explicitly expand tags from concerned semantic actions by calling the "
"grammar macro @code{EXPANDTAG} with a raw tag as parameter. See also "
"@ref{Start nonterminals}, for incremental re-parse considerations."
msgstr ""
#. type: subsection
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1737
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1738
#, no-wrap
msgid "Mixed style"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1740
#, no-wrap
msgid "grammar mixed style"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1747
#, no-wrap
msgid ""
"%start grammar\n"
";; Reparse\n"
"%start prologue epilogue declaration nonterminal rule\n"
"@dots{}\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1758
#, no-wrap
msgid ""
"grammar:\n"
" prologue\n"
" | epilogue\n"
" | declaration\n"
" | nonterminal\n"
" | PERCENT_PERCENT\n"
" ;\n"
"@dots{}\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1763
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1813
#, no-wrap
msgid ""
"nonterminal:\n"
" SYMBOL COLON rules SEMI\n"
" (TAG $1 'nonterminal :children $3)\n"
" ;\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1768
#, no-wrap
msgid ""
"rules:\n"
" lifo_rules\n"
" (apply 'nconc (nreverse $1))\n"
" ;\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1775
#, no-wrap
msgid ""
"lifo_rules:\n"
" lifo_rules OR rule\n"
" (cons $3 $1)\n"
" | rule\n"
" (list $1)\n"
" ;\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1785
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1936
#, no-wrap
msgid ""
"rule:\n"
" rhs\n"
" (let* ((rhs $1)\n"
" name type comps prec action elt)\n"
" @dots{}\n"
" (EXPANDTAG\n"
" (TAG name 'rule :type type :value comps :prec prec :expr action)\n"
" ))\n"
" ;\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1792
msgid ""
"This example shows how iterative and Bison styles can be combined in the "
"same grammar to obtain a good compromise between grammar complexity and an "
"efficient parsing strategy in an interactive environment."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1796
msgid ""
"@samp{nonterminal} is parsed using iterative style via the main "
"@samp{grammar} rule. The semantic action uses the @code{TAG} macro to "
"produce a raw tag, automagically expanded by @semantic{}."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1798
msgid "But @samp{rules} part is parsed in Bison style! Why?"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1806
msgid ""
"Rule delimiters are the colon (@code{:}), that follows the nonterminal name, "
"and a final semicolon (@code{;}). Unfortunately these delimiters are not "
"@code{open-paren}/@code{close-paren} type, and the Emacs' syntactic analyzer "
"can't easily isolate data between them to produce a @samp{RULES_PART} "
"parenthesis-block-like lexical token. Consequently it is not possible to "
"use @code{EXPANDFULL} to iterate in @samp{RULES_PART}, like this:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1818
#, no-wrap
msgid ""
"rules:\n"
" RULES_PART ;; @strong{Map a parenthesis-block-like lexical token}\n"
" (EXPANDFULL $1 'rules)\n"
" ;\n"
"\n"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1834
#, no-wrap
msgid ""
"rules:\n"
" COLON\n"
" ()\n"
" OR\n"
" ()\n"
" SEMI\n"
" ()\n"
" rhs\n"
" rhs\n"
" (let* ((rhs $1)\n"
" name type comps prec action elt)\n"
" @dots{}\n"
" (TAG name 'rule :type type :value comps :prec prec :expr action)\n"
" )\n"
" ;\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1840
msgid ""
"In such cases, when it is difficult for Emacs to obtain "
"parenthesis-block-like lexical tokens, the best solution is to use the "
"traditional Bison style with error recovery!"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1843
msgid ""
"In some extreme cases, it can also be convenient to extend the lexer, to "
"deliver new lexical tokens, to simplify the grammar."
msgstr ""
#. type: subsection
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1844
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1845
#, no-wrap
msgid "Start nonterminals"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1847
#, no-wrap
msgid "start nonterminals"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1848
#, no-wrap
msgid "@code{reparse-symbol} property"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1853
msgid ""
"When you write a grammar for @semantic{}, it is important to carefully "
"indicate the start nonterminals. Each one defines an entry point in the "
"grammar, and after parsing its semantic value is returned to the back-end "
"iterative engine. Consequently:"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1856
msgid ""
"@strong{The semantic value of a start nonterminal must be a produced by a "
"TAG like grammar macro}."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1860
msgid ""
"Start nonterminals are declared by @code{%start} statements. When nothing "
"is specified the first nonterminal that appears in the grammar is the start "
"nonterminal."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1863
msgid "Generally, the following nonterminals must be declared as start symbols:"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1865
#, no-wrap
msgid "The main grammar entry point"
msgstr ""
#. type: quotation
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1868
msgid "Of course!"
msgstr ""
#. type: item
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1870
#, no-wrap
msgid "nonterminals passed to @code{EXPAND}/@code{EXPANDFULL}"
msgstr ""
#. type: quotation
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1874
msgid ""
"These grammar macros recursively parse a part of input data, based on rules "
"of the given nonterminal."
msgstr ""
#. type: quotation
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1877
msgid ""
"For example, the following will parse @samp{PAREN_BLOCK} data using the "
"@samp{formal_parameters} rules:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1884
#, no-wrap
msgid ""
"formal_parameter_list\n"
" : PAREN_BLOCK\n"
" (EXPANDFULL $1 formal_parameters)\n"
" ;\n"
msgstr ""
#. type: quotation
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1890
msgid ""
"The semantic value of @samp{formal_parameters} becomes the value of the "
"@code{EXPANDFULL} expression. It is a list of @semantic{} tags spliced in "
"the tags tree."
msgstr ""
#. type: quotation
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1893
msgid ""
"Because the automaton must know that @samp{formal_parameters} is a start "
"symbol, you must declare it like this:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1897
#, no-wrap
msgid "%start formal_parameters\n"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1902
#, no-wrap
msgid "incremental re-parse"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1903
#, no-wrap
msgid "reparse-symbol"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1909
msgid ""
"The @code{EXPANDFULL} macro has a side effect it is important to know, "
"related to the incremental re-parse mechanism of @semantic{}: the "
"nonterminal symbol parameter passed to @code{EXPANDFULL} also becomes the "
"@code{reparse-symbol} property of the tag returned by the @code{EXPANDFULL} "
"expression."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1913
msgid ""
"When buffer's data mapped by a tag is modified, @semantic{} schedules an "
"incremental re-parse of that data, using the tag's @code{reparse-symbol} "
"property as start nonterminal."
msgstr ""
#. type: strong{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1916
msgid ""
"The rules associated to such start symbols must be carefully reviewed to "
"ensure that the incremental parser will work!"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1919
msgid ""
"Things are a little bit different when the grammar is written in Bison "
"style."
msgstr ""
#. type: strong{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1922
msgid ""
"The @code{reparse-symbol} property is set to the nonterminal symbol the rule "
"that explicitly uses @code{EXPANDTAG} belongs to."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1924
msgid "For example:"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1941
msgid ""
"Set the @code{reparse-symbol} property of the expanded tag to @samp{rule}. "
"An important consequence is that:"
msgstr ""
#. type: strong{#1}
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1944
msgid ""
"Every nonterminal having any rule that calls @code{EXPANDTAG} in a semantic "
"action, should be declared as a start symbol!"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1950
msgid ""
"Here is a description of some predefined functions it might be useful to "
"know when writing new code to use Wisent in @semantic{}:"
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1951
#, no-wrap
msgid "wisent-collect-unmatched-syntax"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1952
#, no-wrap
msgid "wisent-collect-unmatched-syntax input"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1955
msgid ""
"Add @var{input} lexical token to the cache of unmatched tokens, in variable "
"@code{semantic-unmatched-syntax-cache}."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1958
msgid ""
"See implementation of the function @code{wisent-skip-token} in @ref{Error "
"recovery}, for an example of use."
msgstr ""
#. type: section
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1961
#, no-wrap
msgid "The Wisent Lex lexer"
msgstr ""
#. type: findex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1963
#, no-wrap
msgid "semantic-lex"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1967
msgid ""
"The lexical analysis step of @semantic{} is performed by the general "
"function @code{semantic-lex}. For more information, see @ref{Writing "
"Lexers, Semantic Language Development,,semantic-langdev}."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1969
msgid "@code{semantic-lex} produces lexical tokens of the form:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1973
#, no-wrap
msgid "@code{(@var{token-class start} . @var{end})}\n"
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1980
msgid ""
"Is a symbol that identifies a lexical token class, like @code{symbol}, "
"@code{string}, @code{number}, or @code{PAREN_BLOCK}."
msgstr ""
#. type: table
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1984
msgid "Are the start and end positions of mapped data in the input buffer."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1989
msgid ""
"The Wisent's parser doesn't depend on the nature of analyzed input stream "
"(buffer, string, etc.), and requires that lexical tokens have a different "
"form (@pxref{Writing a lexer}):"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1993
#, no-wrap
msgid "@code{(@var{token-class value} [@var{start} . @var{end}])}\n"
msgstr ""
#. type: cindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1996
#, no-wrap
msgid "lexical token mapping"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1998
msgid "@code{wisent-lex} is the default Wisent's lexer used in @semantic{}."
msgstr ""
#. type: vindex
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:1999
#, no-wrap
msgid "wisent-lex-istream"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:2000
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:2001
#, no-wrap
msgid "wisent-lex"
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:2003
msgid "Return the next available lexical token in Wisent's form."
msgstr ""
#. type: defun
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:2007
msgid ""
"The variable @code{wisent-lex-istream} contains the list of lexical tokens "
"produced by @code{semantic-lex}. Pop the next token available and convert "
"it to a form suitable for the Wisent's parser."
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:2011
msgid ""
"Mapping of lexical tokens as produced by @code{semantic-lex} into equivalent "
"Wisent lexical tokens is straightforward:"
msgstr ""
#. type: group
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:2016
#, no-wrap
msgid ""
"(@var{token-class start} . @var{end})\n"
" @result{} (@var{token-class value start} . @var{end})\n"
msgstr ""
#. type: Plain text
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:2021
msgid ""
"@var{value} is the input @code{buffer-substring} from @var{start} to "
"@var{end}."
msgstr ""
#. type: appendix
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:2022
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:2023
#, no-wrap
msgid "GNU Free Documentation License"
msgstr ""
#. type: include
#: /Users/suzume/Documents/Repositories/Projet OmegaT de Documentation Emacs -
#: Sources/doc/misc/wisent.texi:2025
#, no-wrap
msgid "doclicense.texi"
msgstr ""