From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ted Zlatanov Newsgroups: gmane.emacs.devel Subject: Re: asking for advice for changing the cfengine.el progmode to support CFEngine 3.x Date: Mon, 20 Jun 2011 15:42:01 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Message-ID: <87r56oz146.fsf@lifelogs.com> References: <87mxhgl44t.fsf@lifelogs.com> Reply-To: emacs-devel@gnu.org NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1308602571 13753 80.91.229.12 (20 Jun 2011 20:42:51 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 20 Jun 2011 20:42:51 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Jun 20 22:42:47 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QYlIy-0003Au-SR for ged-emacs-devel@m.gmane.org; Mon, 20 Jun 2011 22:42:45 +0200 Original-Received: from localhost ([::1]:38641 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QYlIx-0004dV-Hj for ged-emacs-devel@m.gmane.org; Mon, 20 Jun 2011 16:42:43 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:45772) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QYlIc-0004cs-Vg for emacs-devel@gnu.org; Mon, 20 Jun 2011 16:42:23 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QYlIa-0002Vg-Ub for emacs-devel@gnu.org; Mon, 20 Jun 2011 16:42:22 -0400 Original-Received: from lo.gmane.org ([80.91.229.12]:38933) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QYlIa-0002Vb-7P for emacs-devel@gnu.org; Mon, 20 Jun 2011 16:42:20 -0400 Original-Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1QYlIX-0002s6-I8 for emacs-devel@gnu.org; Mon, 20 Jun 2011 22:42:17 +0200 Original-Received: from 38.98.147.133 ([38.98.147.133]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 20 Jun 2011 22:42:17 +0200 Original-Received: from tzz by 38.98.147.133 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 20 Jun 2011 22:42:17 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Original-Lines: 66 Original-X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 38.98.147.133 X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.50 (gnu/linux) Cancel-Lock: sha1:OaBNV1PCFRfGtSy/qB4BZg5ZHLM= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 80.91.229.12 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:140738 Archived-At: On Fri, 17 Jun 2011 18:02:32 -0400 Stefan Monnier wrote: >> 1) (body|bundle).+ sets the indentation to 0 SM> I'd recommend you try the new SMIE thingy (me? biased?). SM> The syntax you show doesn't seem like a perfect fit, but neither does it SM> seem obviously difficult to accomodate. SM> Grep for smie-setup to see some example uses (2 uses in trunk right SM> now. There is another one in an earlier version of prolog.el, plus one SM> in ProofGeneral's coq.el, and I have experimental ones for sh-script, SM> SML, and Pascal, if you're interested). SM> There is also documentation in the Elisp manual. SMIE is very new so I am concerned that relying on it will block Emacs users that haven't upgraded. Can it be distributed with my library? It's also fairly hard to specify an operator precedence grammar for CFEngine using SMIE. I tried it and ended up uncertain how to debug the parse tree of the current buffer or where my grammar's error lay. See below. Perhaps I'm just too accustomed to LALR parsers, but they seem easier and less ambiguous. It's likely I misunderstood the examples, in any case. Thanks Ted #+begin_src lisp (defconst cfengine3-operator-table '((assoc ",") (right "=>") (left ":") (assoc "||") (assoc "&&") (assoc ".") (right "!"))) (defconst cfengine3-smie-bnf-table '((classname) (class_condition (class_condition "&&" class_condition) (class_condition "||" class_condition) (class_condition "." class_condition) ("!" class_condition) (classname)) (promise) (section) (bundle) (bundle_type) (function_parameter) (bundle_parameters (bundle_parameters "," bundle_parameters) (function_parameter)) (bundle_name (bundle) (bundle bundle_parameters)) (bundle_line ("bundle" bundle_type bundle_name)) (promises (promise ";" promise) (promise)) (bundle_section (section ":" "\n" promises) (class_condition "::" "\n" promises)) (bundle_body (bundle_section) (bundle_section "\n" bundle_section)) (bundle_block (bundle_line "{" bundle_body "}")))) (defvar cfengine3-smie-grammar (smie-prec2->grammar (smie-merge-prec2s (smie-bnf->prec2 cfengine3-smie-bnf-table '((assoc "\n" ";"))) (smie-precs->prec2 cfengine3-operator-table)))) #+end_src