From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.help Subject: Re: Convert some Latex expressions in Emacs. Date: Wed, 18 May 2022 01:45:20 +0200 Message-ID: <87fsl7n2pb.fsf@web.de> References: <87k0alvxf4.fsf@web.de> <87zgjg2676.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="34431"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:1yFXLB8rd4aHHIWVE5I/17M1pkE= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Wed May 18 01:46:51 2022 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nr6tv-0008nh-IQ for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 18 May 2022 01:46:51 +0200 Original-Received: from localhost ([::1]:33598 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nr6tu-0007ud-0Y for geh-help-gnu-emacs@m.gmane-mx.org; Tue, 17 May 2022 19:46:50 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57996) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nr6se-0007tz-0u for help-gnu-emacs@gnu.org; Tue, 17 May 2022 19:45:32 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:38130) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nr6sc-0002cA-AS for help-gnu-emacs@gnu.org; Tue, 17 May 2022 19:45:31 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1nr6sZ-00077W-UH for help-gnu-emacs@gnu.org; Wed, 18 May 2022 01:45:27 +0200 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -13 X-Spam_score: -1.4 X-Spam_bar: - X-Spam_report: (-1.4 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:137296 Archived-At: Hongyi Zhao writes: > I rechecked the description here [1], and still can't find any > difference. Why do you say they are different? > > [1] https://www.emacswiki.org/emacs/peg.el PEGs can match more "complicated" things than regexps can, e.g. mathematical formulas. Theory here: https://en.wikipedia.org/wiki/Parsing_expression_grammar Unlike regexps, a PEG contains a set of named "rules" (as know from formal grammars). These are allowed to be recursive and interdependent. This also allows to describe a "matcher" in a more structured and better (human)readable way. peg.el is implemented in Elisp and has some additional features like executing Elisp code while matching is performed. Still, when familiar with regexps, PEGs also look familiar, as you have already noticed. But I mentioned this only because I noticed your academical background, and thought that somebody who likes GAP also might be interested in that approach. If you just want to get things done, DON'T look at PEGs, use regexps (`query-replace-regexp', C-M-%) for now. Should not be hard to do: removing stuff works by replacing with the empty string. You may want to know how to refer to the matched string and how to use Lisp expressions to calculate parts of the replacement string, that's explained here: (info "(emacs) Regexp Replace") and the rest should be doable quite trivially. Or do you have any concrete questions or problems? Or should we spell some things out? Michael.