[PATCH] gnu: Add peg.

  • Open
  • quality assurance status badge
Details
2 participants
  • Josh Holland
  • Jakub K?dzio?ka
Owner
unassigned
Submitted by
Josh Holland
Severity
normal
J
J
Josh Holland wrote on 6 Jan 2020 12:30
(address . guix-patches@gnu.org)(name . Josh Holland)(address . josh@inv.alid.pw)
20200106113042.33516-1-josh@inv.alid.pw
* gnu/packages/parser.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
gnu/local.mk | 2 ++
gnu/packages/parser.scm | 55 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 57 insertions(+)
create mode 100644 gnu/packages/parser.scm

Toggle diff (83 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index b7fa503257..c4f75ec775 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -26,6 +26,7 @@
# Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
# Copyright © 2019 Brett Gilio <brettg@gnu.org>
# Copyright © 2019 Amin Bandali <bandali@gnu.org>
+# Copyright © 2020 Josh Holland <josh@inv.alid.pw>
#
# This file is part of GNU Guix.
#
@@ -384,6 +385,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/ots.scm \
%D%/packages/package-management.scm \
%D%/packages/parallel.scm \
+ %D%/packages/parser.scm \
%D%/packages/password-utils.scm \
%D%/packages/patchutils.scm \
%D%/packages/pciutils.scm \
diff --git a/gnu/packages/parser.scm b/gnu/packages/parser.scm
new file mode 100644
index 0000000000..40a16915df
--- /dev/null
+++ b/gnu/packages/parser.scm
@@ -0,0 +1,55 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Josh Holland <josh@inv.alid.pw>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix 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 Guix 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 Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages parser)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix download)
+ #:use-module (guix licenses)
+ #:use-module (guix packages))
+
+(define-public peg
+ (package
+ (name "peg")
+ (version "0.1.18")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://www.piumarta.com/software/peg/peg-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "114h1y4k8fwcq9m0hfk33dsp7ah8zxzjjzlk71x4iirzczfkn690"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags (list "CC=gcc"
+ (string-append "PREFIX=" (assoc-ref %outputs "out")))
+ #:phases (modify-phases %standard-phases
+ (delete 'configure))))
+ (synopsis "Parser generators for Parsing Expression Grammars (PEGs)")
+ (description "peg and leg are tools for generating recursive-descent
+parsers: programs that perform pattern matching on text. They processes a
+Parsing Expression Grammar (PEG) [Ford 2004] to produce a program that
+recognises legal sentences of that grammar. peg processes PEGs written using
+the original syntax described by Ford; leg processes PEGs written using
+slightly different syntax and conventions that are intended to make it an
+attractive replacement for parsers built with lex and yacc. Unlike lex and
+yacc, peg and leg support unlimited backtracking, provide ordered choice as a
+means for disambiguation, and can combine scanning (lexical analysis) and
+parsing (syntactic analysis) into a single activity.")
+ (home-page "https://www.piumarta.com/software/peg/")
+ (license (x11-style "file://LICENSE.txt"))))
--
2.24.1
J
J
Josh Holland wrote on 6 Jan 2020 12:34
Re: bug#38986: Acknowledgement ([PATCH] gnu: Add peg.)
(address . 38986@debbugs.gnu.org)
87imlo7r9e.fsf@inv.alid.pw
FWIW, if maintainers prefer, this package could also justifiably be
named `pegleg`. I stuck with the upstream tarball name for now.

--
Josh Holland
J
J
Jakub K?dzio?ka wrote on 15 Feb 2020 12:07
Re: [PATCH] gnu: Add peg.
(name . Josh Holland)(address . josh@inv.alid.pw)(address . 38986@debbugs.gnu.org)
20200215110744.wijpaboho72a574h@gravity
On Mon, Jan 06, 2020 at 11:30:43AM +0000, Josh Holland wrote:
Toggle quote (8 lines)
> * gnu/packages/parser.scm: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
> ---
> gnu/local.mk | 2 ++
> gnu/packages/parser.scm | 55 +++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 57 insertions(+)
> create mode 100644 gnu/packages/parser.scm

Hi Josh,
it seems that PEG doesn't build fully from source, src/peg.peg-c is a
pre-generated file that's pretty much not human-readable. While
bootstrapping fully from source is not a hard requirement, sidestepping
it is usually reserved to highly-desirable packages. Could you take a
look at the possibility of generating src/peg.peg-c during build?

Meanwhile, I have fixed up the description a bit (texinfo markup,
grammar):

(description "@command{peg} and @command{leg} are tools for generating
recursive-descent parsers: programs that perform pattern matching on text.
They process a Parsing Expression Grammar (PEG) to produce a program that
recognises legal sentences of that grammar. @command{peg} processes PEGs
written using the original syntax described by Ford; @command{leg} processes
PEGs written using slightly different syntax and conventions that are intended
to make it an attractive replacement for parsers built with @command{lex}
and @command{yacc}. Unlike @command{lex} and @command{yacc}, @command{peg}
and @command{leg} support unlimited backtracking, provide ordered choice
as a means for disambiguation, and can combine scanning (lexical analysis) and
parsing (syntactic analysis) into a single activity.")

Regards,
Jakub K?dzio?ka
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEE5Xa/ss9usT31cTO54xWnWEYTFWQFAl5H0PwACgkQ4xWnWEYT
FWSV0A/6Azdown2PF+4H5+fs25Out3lF77iYhAMOPvZ1oP8EvYqK1HsdQ4xSbj4q
IFNNUDyKwWR2MHO39JqE7018bnY+qU5tTVz3i5z3xpenNwntuybjn13xZbFt2P+I
E23R6pO97In9E0XJoJrKmICVg3PgnT/RHiPAMHN7fYvSpKxAwGAgbi3tOSsltTQl
ok335l8kxWLIy7+0QztzvWvZlU/WAuEfhqoKAKQuo4KZMu6QtY67QW40XZLN7lf5
lg3rmVBvtcg1r/3IWTvmcbDbIsT50+49M4MLFsJRobSV+iAp6zicAj89IdxgUjbc
FyaiKs1lJfiyCi7CuzbNc4KjRnHjATYEu61ZXpf5103YAJAUSEolMtBIk9U5Act2
eZ17sptJUk50y13xPfDnD7TaXIzjJWr+KviewYhC2r+HsPLcKnW2DSWfiGiq/Go5
VU7Ud9H+j1rTvQp1EnRhR7/ujX0jAyUmsBc4mqnmNJj2TgBP9jd9XCu6lz759/xG
jTAOzhxSF4TDvfv5BQD+rJ2XYdAXLcXQ/O0ratR+ZGe9/2duEKlzdUT3VI/nzoy6
CeFiZWi0R6621LQ1tns+ytCuka2fCHCY52vc6NKwbq6STPpOTOlJ5AYY9zaSddit
crZUqVVo8zud4i1+iowls1WW+lRaT7Lz7bgFcyDkMcKkXHcynps=
=0qDb
-----END PGP SIGNATURE-----


?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 38986@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 38986
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch