-
Notifications
You must be signed in to change notification settings - Fork 0
/
bnf-mode.html
262 lines (189 loc) · 9.96 KB
/
bnf-mode.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
<!DOCTYPE HTML PUBLIC>
<html lang="en" xml:lang="en">
<head>
<title>GNU ELPA - bnf-mode</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="shortcut icon" type="image/png" href="../favicon.png">
<link rel="stylesheet" href="//code.cdn.mozilla.net/fonts/fira.css">
<link rel="stylesheet" type="text/css" href="../layout.css">
<script src="../javascript/jquery.min.js" type="text/javascript"></script>
<script src="../javascript/jquery.filtertable.min.js" type="text/javascript"></script>
<script src="../javascript/package-search.js" type="text/javascript"></script>
<meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,width=device-width" />
</head>
<body>
<div class="wrapper">
<div class="header small">
<div class="container">
<h1><a href="index.html">GNU ELPA</a> - bnf-mode</h1>
</div>
</div>
<div class="container">
<h2 class="package">bnf-mode</h2><dl><dt>Description</dt><dd>Major mode for editing BNF grammars.</dd>
<dt>Latest</dt> <dd><a href="bnf-mode-0.4.5.tar">bnf-mode-0.4.5.tar</a>, 2021-May-19, 80.0 KiB</dd>
<dt>Maintainer</dt> <dd>Serghei Iakovlev <[email protected]></dd>
<dt>Home page</dt> <dd><a href="https://github.com/sergeyklay/bnf-mode">https://github.com/sergeyklay/bnf-mode</a></dd>
<dt>Browse ELPA's repository</dt> <dd><a href="https://git.savannah.gnu.org/cgit/emacs/elpa.git/?h=externals/bnf-mode">CGit</a> or <a href="https://git.savannah.gnu.org/gitweb/?p=emacs/elpa.git;a=shortlog;h=refs/heads/externals/bnf-mode">Gitweb</a></dd>
</dl><p>To install this package, run in Emacs:</p>
<pre>M-x <span class="kw">package-install</span> RET <span class="kw">bnf-mode</span> RET</pre><h2>Full description</h2><pre>
* BNF Mode for GNU Emacs
[[https://www.gnu.org/licenses/gpl-3.0.txt][https://img.shields.io/badge/license-GPL_3-green.svg]]
[[https://github.com/sergeyklay/bnf-mode/actions][https://github.com/sergeyklay/bnf-mode/workflows/build/badge.svg]]
[[https://codecov.io/gh/sergeyklay/bnf-mode][https://codecov.io/gh/sergeyklay/bnf-mode/branch/master/graph/badge.svg]]
[[https://melpa.org/#/bnf-mode][https://melpa.org/packages/bnf-mode-badge.svg]]
[[https://stable.melpa.org/#/bnf-mode][https://stable.melpa.org/packages/bnf-mode-badge.svg]]
A GNU Emacs major mode for editing BNF grammars.
#+begin_quote
“Precise language is not the problem. Clear language is the problem.”
Richard Feynman
#+end_quote
Currently provides basic syntax and font-locking for BNF files. BNF notation is
supported exactly form as it was first announced in the ALGOL 60 report.
EBNF and ABNF are not supported but their implementation is planned in the near
future.
When developing this mode, the following documents were taken into account:
- [[https://www.masswerk.at/algol60/report.htm][Revised Report on the Algorithmic Language Algol 60]]
- [[https://tools.ietf.org/html/rfc822][RFC822]]: Standard for ARPA Internet Text Messages
- [[https://tools.ietf.org/html/rfc5234][RFC5234]]: Augmented BNF for Syntax Specifications: ABNF
- [[https://tools.ietf.org/html/rfc7405][RFC7405]]: Case-Sensitive String Support in ABNF
** Features
- Basic syntax definition
- Syntax highlighting
** Installation
Known to work with GNU Emacs 24.3 and later. BNF Mode may work with
older versions of Emacs, or with other flavors of Emacs (e.g. XEmacs)
but this is /not/ guaranteed. Bug reports for problems related to using
BNF Mode with older versions of Emacs will most like not be addressed.
The master of all the material is the Git repository at
https://github.com/sergeyklay/bnf-mode .
NOTE: The ~master~ branch will always contain the latest unstable version.
If you wish to check older versions or formal, tagged release, please switch
to the relevant [[https://github.com/sergeyklay/bnf-mode/tags][tag]].
The recommended way is to use [[https://elpa.gnu.org/][ELPA]], [[https://stable.melpa.org/][MELPA Stable]] or [[https://melpa.org/][MELPA]]. If either is in your
=package-archives=, do:
#+begin_src
M-x package-install RET bnf-mode RET
#+end_src
To learn on how to use any other installation methods refer to relevant
documentation.
** Usage
*** Interactive Commands
| Command (For the ~M-x~ prompt.) | Description |
|---------------------------------+----------------------------------|
| ~bnf-mode~ | Switches to BNF Mode. |
By default any file that matches the glob ~*.bnf~ is automatically opened
in ~bnf-mode~.
** Customization
To customize various options, use command as follows:
#+begin_src
M-x customize-group RET bnf RET
#+end_src
** Support
Feel free to ask question or make suggestions in our [[https://github.com/sergeyklay/bnf-mode/issues][issue tracker]] .
** Changes
To see what has changed in recent versions of BNF Mode see:
https://github.com/sergeyklay/bnf-mode/blob/master/NEWS .
** External Links
- [[https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form][Wikipedia: Backus–Naur form]]
- [[https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form][Wikipedia: Extended Backus–Naur form]]
- [[https://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_form][Wikipedia: Augmented Backus–Naur form]]
- [[https://www.cl.cam.ac.uk/~mgk25/iso-14977.pdf][ISO/IEC 14977: EBNF]]
- [[https://www.ics.uci.edu/~pattis/ICS-33/lectures/ebnf.pdf][EBNF: A Notation to Describe Syntax]]
** License
BNF Mode is open source software licensed under the [[https://github.com/sergeyklay/bnf-mode/blob/master/LICENSE][GNU General Public Licence version 3]].
Copyright © 2019, 2020, Free Software Foundation, Inc.
*** Note On Copyright Years
In copyright notices where the copyright holder is the Free Software Foundation,
then where a range of years appears, this is an inclusive range that applies to
every year in the range. For example: 2005-2008 represents the years 2005,
2006, 2007, and 2008.
</pre>
<h2>News</h2><pre>
bnf-mode NEWS -- history of user-visible changes.
Copyright (C) 2019-2020 Free Software Foundation, Inc.
See the end of the file for license conditions.
This file is about changes in BNF Mode.
* BNF Mode 0.4.5
** Tests were migrated from ert-runner to buttercup.
Previously BNF Mode used `ert' through `ert-runner' for testing
purposes. However, it seems `ert-runner' is semi-abandoned. Thus,
tests were migrated to use more aggressively maintained test
framework calles `buttercup'.
** Removed support of ALGOL 60 style comments.
Actually, this syntax was never part of the BNF and was mistakenly
interpreted as an alternative way of commenting BNF grammars
introduced by Peter Naur.
* BNF Mode 0.4.4
** Rework documentation and provide Info-file.
Previous releases of BNF Mode were bundled with incorrect “dir” file
that contained an invalid link to documentation. This was
resolved. All documentation now lives in “info bnf-mode”.
* BNF Mode 0.4.3
** Fixed dependency list in the Cask file.
Dependency list was fixed by specifying `cl-lib' version as well as
removing `rx' (`rx' is part of GNU Emacs actually). This fixed the
issue reported in <https://github.com/sergeyklay/bnf-mode/issues/5>.
The issue is related to installation from the TAR file.
** CI/CD process was moved on GitHub Actions.
* BNF Mode 0.4.2
** First release in ELPA.
** Introduced ALGOL 60 comments style. Disabled by default.
** Use semicolons as a comments.
Only setting `bnf-mode-algol-comments-style' to non-nil will allow use
semicolons as a regular terminal symbols.
* BNF Mode 0.4.1
** Minor fix related to build & deploy BNF Mode on Travis CI.
* BNF Mode 0.4.0
** Added comment-start-skip to improve recognize comments.
** Return back comment-start and comment-end.
** Use more intelligent terminal syntax recognition.
Added support of ";" character as an extra character used in terminals.
** Provided ability to build installation package.
See make help for more.
* BNF Mode 0.3.2
** First release in MELPA.
** Treat ' and " as a regular symbols.
** Removed no longer needed comment-* variables.
** In the BNF there are no grouping brackets except angle ones.
** Removed the bnf-mode-version function.
Users can easily call describe-package or pkg-info-package-version
interactively if they want to get this information.
* BNF Mode 0.3.1
** Fixed BNF rule name definition to follow ALGOL 60 report.
* BNF Mode 0.3.0
** Nonterminals may be preceded by an unlimited number of spaces.
* BNF Mode 0.2.0
** Comments are no longer use syntax table.
** Changed comment syntax from "#" to ";" to follow RFC822#2.8.
* BNF Mode 0.1.0
** Initial stable release.
----------------------------------------------------------------------
GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
Local variables:
coding: utf-8
mode: outline
paragraph-separate: "[ ]*$"
end:
</pre>
<div class="footer">
<div class="container">
<p>Copyright 2016-2021 <a href="https://fsf.org">Free Software Foundation</a>, Inc.</p>
<p>Design provided by <a href="https://nicolas.petton.fr">Nicolas Petton</a></p>
<p>
This website is licensed under the
<a href="https://creativecommons.org/licenses/by-nd/4.0/">CC BY-ND 4.0</a>
International License.
</p>
<p><a href="/jslicense.html" data-jslicense="1">JavaScript Licenses</a></p>
</div>
</div>
</body>