From MAILER-DAEMON Mon May 03 12:31:38 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1O8yYT-0005ac-Tx for mharc-grammatica-users@gnu.org; Mon, 03 May 2010 12:31:37 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O8yYS-0005Zp-Ew for grammatica-users@nongnu.org; Mon, 03 May 2010 12:31:36 -0400 Received: from [140.186.70.92] (port=44694 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O8yYR-0005Zb-7R for grammatica-users@nongnu.org; Mon, 03 May 2010 12:31:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O8yYP-0002DK-DI for grammatica-users@nongnu.org; Mon, 03 May 2010 12:31:35 -0400 Received: from outgoing.cambridgesoft.com ([72.5.24.56]:2391) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O8yYO-0002D2-SZ for grammatica-users@nongnu.org; Mon, 03 May 2010 12:31:33 -0400 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; d=cambridgesoft.com; s=mail; h=Received:X-MimeOLE:Content-class:X-MS-Has-Attach:X-MS-TNEF-Correlator:Thread-Topic:Thread-Index:References:From:To:Subject:Date:X-Assembled-By:Message-ID:Mime-Version:Content-Type:Content-Transfer-Encoding; b=MLwXYONGpkMUketcT72WYD0IbvBbX+QU0XPHMT7BdZvr0IpSEnwpulBL3aTvGWGBcCBs7NWz8ILr0FhCTCxbN5o/jx/P3nrBAibLKOoatN+Jd1RIE8Fzm49hl00aAPK0rR5i4lysp5EYd1GB+F0NqrDizBIRV4dsCvpcW10Ch58=; Received: from 172.16.1.208 ([172.16.1.208]) by outgoing.cambridgesoft.com with XWall v3.45 ; Mon, 3 May 2010 12:31:31 -0400 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Negation in production rules Thread-Index: Acrq1gJryRrI/Cu/R9yX6jA1ne9c7gACABL2 References: <454AE9BB48EE394BB56B1719E53E214D07B93421@exchange2.camsoft.com> From: Andrew Smellie To: "grammatica-users@nongnu.org" Date: Mon, 3 May 2010 12:30:58 -0400 X-Assembled-By: XWall v3.45 Message-ID: <454AE9BB48EE394BB56B1719E53E214D07B93424@exchange2.camsoft.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Windows XP SP1+, 2000 SP3 Subject: [Grammatica-users] Negation in production rules X-BeenThere: grammatica-users@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: grammatica-users@nongnu.org List-Id: grammatica-users.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 May 2010 16:31:36 -0000 Hi I have a very simple grammar that captures data of the form KEY=3DVALUE I have written the rule to parse a KEY, but the complexity comes in parsing = the data. It can span multiple lines, be of arbitrary length and data type (= int, float, date, string). In fact the only thing you can really say about i= t is that it is not a KEY. I really want to say something like KEY=3D(NOT A KEY) and parse the three parts (KEY, EQUALS, NOT A KEY) accordingly. How do I write a production rule that says "not a token"? I have pasted some of the file below as an example: DATE=3D"Thu Apr 22 20:41:15 2010" METHOD=3DAM1 TITLE=3D"Untitled-1" KEYWORDS=3D" AUX AM1 ALLVEC CHARGE=3D0 COSMO ESP ESR GRAPH HYPERFINE MULLIK = POLAR SHIFT=3D80 SPIN" COMMENTS=3D"" ATOM_EL[0008]=3D C C H H H H H H ATOM_CORE[0008]=3D 4 4 1 1 1 1 1 1 ATOM_X:ANGSTROMS[0024]=3D -0.3893 0.6545 0.0000 0.3893 -0.6545 0.0000 0.3150 1.5163 0.0000 -1.0344 0.7137 0.9050 -1.0344 0.7137 -0.9050 -0.3150 -1.5163 0.0000 1.0344 -0.7137 0.9050 1.0344 -0.7137 -0.9050 AO_ATOMINDEX[0014]=3D 1 1 1 1 2 2 2 2 3 4 5 6 7 8 ATOM_SYMTYPE[0014]=3D S PX PY PZ S PX PY PZ S S S S S S AO_ZETA[0014]=3D 1.8087 1.6851 1.6851 1.6851 1.8087 1.6851 1.6851 1.6851 1.1881 1.1881 1.1881 1.1881 1.1881 1.1881 ATOM_PQN[0014]=3D 2 2 2 2 2 2 2 2 1 1 1 1 1 1 From MAILER-DAEMON Mon May 03 13:06:04 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1O8z5o-0006hh-Mn for mharc-grammatica-users@gnu.org; Mon, 03 May 2010 13:06:04 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O8z5n-0006h7-Bm for grammatica-users@nongnu.org; Mon, 03 May 2010 13:06:03 -0400 Received: from [140.186.70.92] (port=58698 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O8z5h-0006f6-S6 for grammatica-users@nongnu.org; Mon, 03 May 2010 13:06:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O8z5c-0008FQ-2d for grammatica-users@nongnu.org; Mon, 03 May 2010 13:05:57 -0400 Received: from mail-wy0-f173.google.com ([74.125.82.173]:64195) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O8z5b-0008F6-UE for grammatica-users@nongnu.org; Mon, 03 May 2010 13:05:52 -0400 Received: by wyj26 with SMTP id 26so1704427wyj.4 for ; Mon, 03 May 2010 10:05:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:content-type; bh=GwAsvomVWsC5uBFjnt+W4ZaKhgZj2jARhiOAE55TfZs=; b=J5HPqTMOfk/OtXqTPHH9nIO45dab5UMmT7VEb61OBMGJ2p191AWzcV3zBHMTOf40pp O1GQPlTSZx9Xehaxui6PMhOrZ81RNRdy6Kl7uEwt/wn7blTRDvQQzx4LDQQGePsFMnub maBIaHfNSj9n3tpNrAsRk/M+HRG40wmfeNDDw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:content-type; b=JM7KWzwoNcDmfGBovmAdY+a/LfD/TdKxroDnhBRFRSJslZae9nASTtW0QVlfVs/vA3 Lt/+nicfibPyluAel0pF0fiP8EKWin8ut7Y1aVX3j9eQ/xA/EHhtQX4PbwgBm4rFFUEL xwZB84sCxdxDPn2XwOoS8g/RqYy5eW4Q/X54g= MIME-Version: 1.0 Received: by 10.216.157.134 with SMTP id o6mr6939028wek.201.1272906343893; Mon, 03 May 2010 10:05:43 -0700 (PDT) Sender: cederberg@gmail.com Received: by 10.216.171.212 with HTTP; Mon, 3 May 2010 10:05:43 -0700 (PDT) In-Reply-To: <454AE9BB48EE394BB56B1719E53E214D07B93424@exchange2.camsoft.com> References: <454AE9BB48EE394BB56B1719E53E214D07B93421@exchange2.camsoft.com> <454AE9BB48EE394BB56B1719E53E214D07B93424@exchange2.camsoft.com> Date: Mon, 3 May 2010 19:05:43 +0200 X-Google-Sender-Auth: 28dab7afdac461fc Message-ID: Subject: Re: [Grammatica-users] Negation in production rules From: Per Cederberg To: grammatica-users@nongnu.org Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: grammatica-users@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: grammatica-users@nongnu.org List-Id: grammatica-users.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 May 2010 17:06:03 -0000 I don't think this type of grammar is suitable for Grammatica, or any other EBNF-based tool either for that matter. Try looking into the Properties file format for Java and any open-source parsers for that. There might be one or to you can tweak for your use-case. Or just write your own, using indexOf("=") and such. Cheers, /Per On Mon, May 3, 2010 at 18:30, Andrew Smellie wrote: > > Hi > > I have a very simple grammar that captures data of the form KEY=VALUE > > I have written the rule to parse a KEY, but the complexity comes in parsing the data. It can span multiple lines, be of arbitrary length and data type (int, float, date, string). In fact the only thing you can really say about it is that it is not a KEY. > > I really want to say something like > > KEY=(NOT A KEY) > > and parse the three parts (KEY, EQUALS, NOT A KEY) accordingly. > > How do I write a production rule that says "not a token"? > > > > I have pasted some of the file below as an example: > > DATE="Thu Apr 22 20:41:15 2010" > > METHOD=AM1 > > TITLE="Untitled-1" > > KEYWORDS=" AUX AM1 ALLVEC CHARGE=0 COSMO ESP ESR GRAPH HYPERFINE MULLIK POLAR SHIFT=80 SPIN" > > COMMENTS="" > > ATOM_EL[0008]= > > C C H H H H H H > > ATOM_CORE[0008]= > > 4 4 1 1 1 1 1 1 > > ATOM_X:ANGSTROMS[0024]= > > -0.3893 0.6545 0.0000 > > 0.3893 -0.6545 0.0000 > > 0.3150 1.5163 0.0000 > > -1.0344 0.7137 0.9050 > > -1.0344 0.7137 -0.9050 > > -0.3150 -1.5163 0.0000 > > 1.0344 -0.7137 0.9050 > > 1.0344 -0.7137 -0.9050 > > AO_ATOMINDEX[0014]= > > 1 1 1 1 2 2 2 2 3 4 5 6 7 8 > > ATOM_SYMTYPE[0014]= > > S PX PY PZ S PX PY PZ S S S S S S > > AO_ZETA[0014]= > > 1.8087 1.6851 1.6851 1.6851 1.8087 1.6851 1.6851 1.6851 1.1881 1.1881 > > 1.1881 1.1881 1.1881 1.1881 > > ATOM_PQN[0014]= > > 2 2 2 2 2 2 2 2 1 1 1 1 1 1 > > > > _______________________________________________ > Grammatica-users mailing list > Grammatica-users@nongnu.org > http://lists.nongnu.org/mailman/listinfo/grammatica-users > From MAILER-DAEMON Tue May 04 06:34:58 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1O9FSs-0005hH-Lp for mharc-grammatica-users@gnu.org; Tue, 04 May 2010 06:34:58 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O9FSr-0005gR-4E for grammatica-users@nongnu.org; Tue, 04 May 2010 06:34:57 -0400 Received: from [140.186.70.92] (port=38418 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O9FSo-0005ey-G7 for grammatica-users@nongnu.org; Tue, 04 May 2010 06:34:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O9FSm-0000YZ-0f for grammatica-users@nongnu.org; Tue, 04 May 2010 06:34:54 -0400 Received: from nse3.abb.com ([129.35.204.69]:52311) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O9FSh-0000XN-FV for grammatica-users@nongnu.org; Tue, 04 May 2010 06:34:50 -0400 Received: from mail02.de.abb.com (mail02.de.abb.com [10.51.20.77]) by nse3.abb.com (8.12.11.20060308/8.12.11) with ESMTP id o44AYj9n009565 for ; Tue, 4 May 2010 12:34:45 +0200 To: grammatica-users@nongnu.org Subject: Re: [Grammatica-users] Negation in production rules MIME-Version: 1.0 X-Mailer: Lotus Notes Release 7.0.3 September 26, 2007 From: Oliver Gramberg Message-ID: Date: Tue, 4 May 2010 12:34:43 +0200 X-MIMETrack: Serialize by Router on MAIL02.DE.ABB.COM/SRV/ABB(Release 7.0.3FP1|February 24, 2008) at 04.05.2010 12:34:45, Serialize complete at 04.05.2010 12:34:45 Content-Type: multipart/alternative; boundary="=_alternative 003A1BD7C1257719_=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4-2.6 X-BeenThere: grammatica-users@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: grammatica-users@nongnu.org List-Id: grammatica-users.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 May 2010 10:34:57 -0000 This is a multipart message in MIME format. --=_alternative 003A1BD7C1257719_= Content-Type: text/plain; charset="US-ASCII" Hello Andrew, try this (header omitted, output at the end): --------------------------------------------------------------------- %tokens% colon = ':' equals = '=' lbracket = '[' rbracket = ']' string_literal = <<"[^"]*">> integer_literal = <<[0-9]+>> real_literal = <<-?[0-9]+\.[0-9]+>> identifier = <<[A-Z][A-Z0-9_]*>> whitespace = <<[ \t]+>> %ignore% newline = <<[\n\r]+>> %productions% start = line+ ; line = contents? newline ; contents = key '=' values? | values ; key = identifier ( ':' identifier )? ( '[' integer_literal ']' )? ; values = value+ ; value = string_literal | integer_literal | real_literal | identifier ; --------------------------------------------------------------------- Feel free to come back with questions! Regards Oliver --------------------------------------------------------------------- Parse tree from notakey.sample: start(2001) line(2002) contents(2003) key(2004) identifier(1008): "DATE", line: 1, col: 1 equals(1002): "=", line: 1, col: 5 values(2005) value(2006) string_literal(1005): ""Thu Apr 22 20:41:15 2010"", line: 1, col: 6 newline(1010): "(...)", line: 1, col: 32 line(2002) contents(2003) key(2004) identifier(1008): "METHOD", line: 3, col: 1 equals(1002): "=", line: 3, col: 7 values(2005) value(2006) identifier(1008): "AM1", line: 3, col: 8 newline(1010): "(...)", line: 3, col: 11 line(2002) contents(2003) key(2004) identifier(1008): "TITLE", line: 5, col: 1 equals(1002): "=", line: 5, col: 6 values(2005) value(2006) string_literal(1005): ""Untitled-1"", line: 5, col: 7 newline(1010): "(...)", line: 5, col: 19 line(2002) contents(2003) key(2004) identifier(1008): "KEYWORDS", line: 7, col: 1 equals(1002): "=", line: 7, col: 9 values(2005) value(2006) string_literal(1005): "" AUX AM1 ALLVEC CHARGE=0 (...)", line: 7, col: 10 newline(1010): "(...)", line: 7, col: 93 line(2002) contents(2003) key(2004) identifier(1008): "COMMENTS", line: 9, col: 1 equals(1002): "=", line: 9, col: 9 values(2005) value(2006) string_literal(1005): """", line: 9, col: 10 newline(1010): "(...)", line: 9, col: 12 line(2002) contents(2003) key(2004) identifier(1008): "ATOM_EL", line: 11, col: 1 key(2)(3002) lbracket(1003): "[", line: 11, col: 8 integer_literal(1006): "0008", line: 11, col: 9 rbracket(1004): "]", line: 11, col: 13 equals(1002): "=", line: 11, col: 14 newline(1010): "(...)", line: 11, col: 15 line(2002) contents(2003) values(2005) value(2006) identifier(1008): "C", line: 13, col: 1 value(2006) identifier(1008): "C", line: 13, col: 3 value(2006) identifier(1008): "H", line: 13, col: 5 value(2006) identifier(1008): "H", line: 13, col: 7 value(2006) identifier(1008): "H", line: 13, col: 9 value(2006) identifier(1008): "H", line: 13, col: 11 value(2006) identifier(1008): "H", line: 13, col: 13 value(2006) identifier(1008): "H", line: 13, col: 15 newline(1010): "(...)", line: 13, col: 16 line(2002) contents(2003) key(2004) identifier(1008): "ATOM_CORE", line: 15, col: 1 key(2)(3002) lbracket(1003): "[", line: 15, col: 10 integer_literal(1006): "0008", line: 15, col: 11 rbracket(1004): "]", line: 15, col: 15 equals(1002): "=", line: 15, col: 16 newline(1010): "(...)", line: 15, col: 17 line(2002) contents(2003) values(2005) value(2006) integer_literal(1006): "4", line: 17, col: 1 value(2006) integer_literal(1006): "4", line: 17, col: 3 value(2006) integer_literal(1006): "1", line: 17, col: 5 value(2006) integer_literal(1006): "1", line: 17, col: 7 value(2006) integer_literal(1006): "1", line: 17, col: 9 value(2006) integer_literal(1006): "1", line: 17, col: 11 value(2006) integer_literal(1006): "1", line: 17, col: 13 value(2006) integer_literal(1006): "1", line: 17, col: 15 newline(1010): "(...)", line: 17, col: 16 line(2002) contents(2003) key(2004) identifier(1008): "ATOM_X", line: 19, col: 1 key(1)(3001) colon(1001): ":", line: 19, col: 7 identifier(1008): "ANGSTROMS", line: 19, col: 8 key(2)(3002) lbracket(1003): "[", line: 19, col: 17 integer_literal(1006): "0024", line: 19, col: 18 rbracket(1004): "]", line: 19, col: 22 equals(1002): "=", line: 19, col: 23 newline(1010): "(...)", line: 19, col: 24 line(2002) contents(2003) values(2005) value(2006) real_literal(1007): "-0.3893", line: 21, col: 1 value(2006) real_literal(1007): "0.6545", line: 21, col: 9 value(2006) real_literal(1007): "0.0000", line: 21, col: 16 newline(1010): "(...)", line: 21, col: 22 line(2002) contents(2003) values(2005) value(2006) real_literal(1007): "0.3893", line: 23, col: 1 value(2006) real_literal(1007): "-0.6545", line: 23, col: 8 value(2006) real_literal(1007): "0.0000", line: 23, col: 16 newline(1010): "(...)", line: 23, col: 22 line(2002) contents(2003) values(2005) value(2006) real_literal(1007): "0.3150", line: 25, col: 1 value(2006) real_literal(1007): "1.5163", line: 25, col: 8 value(2006) real_literal(1007): "0.0000", line: 25, col: 15 newline(1010): "(...)", line: 25, col: 21 line(2002) contents(2003) values(2005) value(2006) real_literal(1007): "-1.0344", line: 27, col: 1 value(2006) real_literal(1007): "0.7137", line: 27, col: 9 value(2006) real_literal(1007): "0.9050", line: 27, col: 16 newline(1010): "(...)", line: 27, col: 22 line(2002) contents(2003) values(2005) value(2006) real_literal(1007): "-1.0344", line: 29, col: 1 value(2006) real_literal(1007): "0.7137", line: 29, col: 9 value(2006) real_literal(1007): "-0.9050", line: 29, col: 16 newline(1010): "(...)", line: 29, col: 23 line(2002) contents(2003) values(2005) value(2006) real_literal(1007): "-0.3150", line: 31, col: 1 value(2006) real_literal(1007): "-1.5163", line: 31, col: 9 value(2006) real_literal(1007): "0.0000", line: 31, col: 17 newline(1010): "(...)", line: 31, col: 23 line(2002) contents(2003) values(2005) value(2006) real_literal(1007): "1.0344", line: 33, col: 1 value(2006) real_literal(1007): "-0.7137", line: 33, col: 8 value(2006) real_literal(1007): "0.9050", line: 33, col: 16 newline(1010): "(...)", line: 33, col: 22 line(2002) contents(2003) values(2005) value(2006) real_literal(1007): "1.0344", line: 35, col: 1 value(2006) real_literal(1007): "-0.7137", line: 35, col: 8 value(2006) real_literal(1007): "-0.9050", line: 35, col: 16 newline(1010): "(...)", line: 35, col: 23 line(2002) contents(2003) key(2004) identifier(1008): "AO_ATOMINDEX", line: 37, col: 1 key(2)(3002) lbracket(1003): "[", line: 37, col: 13 integer_literal(1006): "0014", line: 37, col: 14 rbracket(1004): "]", line: 37, col: 18 equals(1002): "=", line: 37, col: 19 newline(1010): "(...)", line: 37, col: 20 line(2002) contents(2003) values(2005) value(2006) integer_literal(1006): "1", line: 39, col: 1 value(2006) integer_literal(1006): "1", line: 39, col: 3 value(2006) integer_literal(1006): "1", line: 39, col: 5 value(2006) integer_literal(1006): "1", line: 39, col: 7 value(2006) integer_literal(1006): "2", line: 39, col: 9 value(2006) integer_literal(1006): "2", line: 39, col: 11 value(2006) integer_literal(1006): "2", line: 39, col: 13 value(2006) integer_literal(1006): "2", line: 39, col: 15 value(2006) integer_literal(1006): "3", line: 39, col: 17 value(2006) integer_literal(1006): "4", line: 39, col: 19 value(2006) integer_literal(1006): "5", line: 39, col: 21 value(2006) integer_literal(1006): "6", line: 39, col: 23 value(2006) integer_literal(1006): "7", line: 39, col: 25 value(2006) integer_literal(1006): "8", line: 39, col: 27 newline(1010): "(...)", line: 39, col: 28 ... --------------------------------------------------------------------- --=_alternative 003A1BD7C1257719_= Content-Type: text/html; charset="US-ASCII"
Hello Andrew,

try this (header omitted, output at the end):

---------------------------------------------------------------------
%tokens%

colon = ':'
equals = '='
lbracket = '['
rbracket = ']'

string_literal = <<"[^"]*">>
integer_literal = <<[0-9]+>>
real_literal = <<-?[0-9]+\.[0-9]+>>
identifier = <<[A-Z][A-Z0-9_]*>>

whitespace = <<[ \t]+>> %ignore%
newline = <<[\n\r]+>>


%productions%

start = line+ ;
line = contents? newline ;
contents = key '=' values? | values ;
key = identifier ( ':' identifier )? ( '[' integer_literal ']' )? ;
values = value+ ;
value = string_literal | integer_literal | real_literal | identifier ;
---------------------------------------------------------------------


Feel free to come back with questions!
Regards
Oliver


---------------------------------------------------------------------
Parse tree from notakey.sample:
start(2001)
  line(2002)
    contents(2003)
      key(2004)
        identifier(1008): "DATE", line: 1, col: 1
      equals(1002): "=", line: 1, col: 5
      values(2005)
        value(2006)
          string_literal(1005): ""Thu Apr 22 20:41:15 2010"", line: 1, col: 6
    newline(1010): "(...)", line: 1, col: 32
  line(2002)
    contents(2003)
      key(2004)
        identifier(1008): "METHOD", line: 3, col: 1
      equals(1002): "=", line: 3, col: 7
      values(2005)
        value(2006)
          identifier(1008): "AM1", line: 3, col: 8
    newline(1010): "(...)", line: 3, col: 11
  line(2002)
    contents(2003)
      key(2004)
        identifier(1008): "TITLE", line: 5, col: 1
      equals(1002): "=", line: 5, col: 6
      values(2005)
        value(2006)
          string_literal(1005): ""Untitled-1"", line: 5, col: 7
    newline(1010): "(...)", line: 5, col: 19
  line(2002)
    contents(2003)
      key(2004)
        identifier(1008): "KEYWORDS", line: 7, col: 1
      equals(1002): "=", line: 7, col: 9
      values(2005)
        value(2006)
          string_literal(1005): "" AUX AM1 ALLVEC CHARGE=0 (...)", line: 7, col: 10
    newline(1010): "(...)", line: 7, col: 93
  line(2002)
    contents(2003)
      key(2004)
        identifier(1008): "COMMENTS", line: 9, col: 1
      equals(1002): "=", line: 9, col: 9
      values(2005)
        value(2006)
          string_literal(1005): """", line: 9, col: 10
    newline(1010): "(...)", line: 9, col: 12
  line(2002)
    contents(2003)
      key(2004)
        identifier(1008): "ATOM_EL", line: 11, col: 1
        key(2)(3002)
          lbracket(1003): "[", line: 11, col: 8
          integer_literal(1006): "0008", line: 11, col: 9
          rbracket(1004): "]", line: 11, col: 13
      equals(1002): "=", line: 11, col: 14
    newline(1010): "(...)", line: 11, col: 15
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          identifier(1008): "C", line: 13, col: 1
        value(2006)
          identifier(1008): "C", line: 13, col: 3
        value(2006)
          identifier(1008): "H", line: 13, col: 5
        value(2006)
          identifier(1008): "H", line: 13, col: 7
        value(2006)
          identifier(1008): "H", line: 13, col: 9
        value(2006)
          identifier(1008): "H", line: 13, col: 11
        value(2006)
          identifier(1008): "H", line: 13, col: 13
        value(2006)
          identifier(1008): "H", line: 13, col: 15
    newline(1010): "(...)", line: 13, col: 16
  line(2002)
    contents(2003)
      key(2004)
        identifier(1008): "ATOM_CORE", line: 15, col: 1
        key(2)(3002)
          lbracket(1003): "[", line: 15, col: 10
          integer_literal(1006): "0008", line: 15, col: 11
          rbracket(1004): "]", line: 15, col: 15
      equals(1002): "=", line: 15, col: 16
    newline(1010): "(...)", line: 15, col: 17
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          integer_literal(1006): "4", line: 17, col: 1
        value(2006)
          integer_literal(1006): "4", line: 17, col: 3
        value(2006)
          integer_literal(1006): "1", line: 17, col: 5
        value(2006)
          integer_literal(1006): "1", line: 17, col: 7
        value(2006)
          integer_literal(1006): "1", line: 17, col: 9
        value(2006)
          integer_literal(1006): "1", line: 17, col: 11
        value(2006)
          integer_literal(1006): "1", line: 17, col: 13
        value(2006)
          integer_literal(1006): "1", line: 17, col: 15
    newline(1010): "(...)", line: 17, col: 16
  line(2002)
    contents(2003)
      key(2004)
        identifier(1008): "ATOM_X", line: 19, col: 1
        key(1)(3001)
          colon(1001): ":", line: 19, col: 7
          identifier(1008): "ANGSTROMS", line: 19, col: 8
        key(2)(3002)
          lbracket(1003): "[", line: 19, col: 17
          integer_literal(1006): "0024", line: 19, col: 18
          rbracket(1004): "]", line: 19, col: 22
      equals(1002): "=", line: 19, col: 23
    newline(1010): "(...)", line: 19, col: 24
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          real_literal(1007): "-0.3893", line: 21, col: 1
        value(2006)
          real_literal(1007): "0.6545", line: 21, col: 9
        value(2006)
          real_literal(1007): "0.0000", line: 21, col: 16
    newline(1010): "(...)", line: 21, col: 22
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          real_literal(1007): "0.3893", line: 23, col: 1
        value(2006)
          real_literal(1007): "-0.6545", line: 23, col: 8
        value(2006)
          real_literal(1007): "0.0000", line: 23, col: 16
    newline(1010): "(...)", line: 23, col: 22
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          real_literal(1007): "0.3150", line: 25, col: 1
        value(2006)
          real_literal(1007): "1.5163", line: 25, col: 8
        value(2006)
          real_literal(1007): "0.0000", line: 25, col: 15
    newline(1010): "(...)", line: 25, col: 21
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          real_literal(1007): "-1.0344", line: 27, col: 1
        value(2006)
          real_literal(1007): "0.7137", line: 27, col: 9
        value(2006)
          real_literal(1007): "0.9050", line: 27, col: 16
    newline(1010): "(...)", line: 27, col: 22
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          real_literal(1007): "-1.0344", line: 29, col: 1
        value(2006)
          real_literal(1007): "0.7137", line: 29, col: 9
        value(2006)
          real_literal(1007): "-0.9050", line: 29, col: 16
    newline(1010): "(...)", line: 29, col: 23
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          real_literal(1007): "-0.3150", line: 31, col: 1
        value(2006)
          real_literal(1007): "-1.5163", line: 31, col: 9
        value(2006)
          real_literal(1007): "0.0000", line: 31, col: 17
    newline(1010): "(...)", line: 31, col: 23
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          real_literal(1007): "1.0344", line: 33, col: 1
        value(2006)
          real_literal(1007): "-0.7137", line: 33, col: 8
        value(2006)
          real_literal(1007): "0.9050", line: 33, col: 16
    newline(1010): "(...)", line: 33, col: 22
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          real_literal(1007): "1.0344", line: 35, col: 1
        value(2006)
          real_literal(1007): "-0.7137", line: 35, col: 8
        value(2006)
          real_literal(1007): "-0.9050", line: 35, col: 16
    newline(1010): "(...)", line: 35, col: 23
  line(2002)
    contents(2003)
      key(2004)
        identifier(1008): "AO_ATOMINDEX", line: 37, col: 1
        key(2)(3002)
          lbracket(1003): "[", line: 37, col: 13
          integer_literal(1006): "0014", line: 37, col: 14
          rbracket(1004): "]", line: 37, col: 18
      equals(1002): "=", line: 37, col: 19
    newline(1010): "(...)", line: 37, col: 20
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          integer_literal(1006): "1", line: 39, col: 1
        value(2006)
          integer_literal(1006): "1", line: 39, col: 3
        value(2006)
          integer_literal(1006): "1", line: 39, col: 5
        value(2006)
          integer_literal(1006): "1", line: 39, col: 7
        value(2006)
          integer_literal(1006): "2", line: 39, col: 9
        value(2006)
          integer_literal(1006): "2", line: 39, col: 11
        value(2006)
          integer_literal(1006): "2", line: 39, col: 13
        value(2006)
          integer_literal(1006): "2", line: 39, col: 15
        value(2006)
          integer_literal(1006): "3", line: 39, col: 17
        value(2006)
          integer_literal(1006): "4", line: 39, col: 19
        value(2006)
          integer_literal(1006): "5", line: 39, col: 21
        value(2006)
          integer_literal(1006): "6", line: 39, col: 23
        value(2006)
          integer_literal(1006): "7", line: 39, col: 25
        value(2006)
          integer_literal(1006): "8", line: 39, col: 27
    newline(1010): "(...)", line: 39, col: 28
...
---------------------------------------------------------------------
--=_alternative 003A1BD7C1257719_=-- From MAILER-DAEMON Tue May 04 11:29:45 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1O9K49-000256-Qg for mharc-grammatica-users@gnu.org; Tue, 04 May 2010 11:29:45 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O9K48-000247-03 for grammatica-users@nongnu.org; Tue, 04 May 2010 11:29:44 -0400 Received: from [140.186.70.92] (port=43888 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O9K46-000232-22 for grammatica-users@nongnu.org; Tue, 04 May 2010 11:29:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O9K44-0006hJ-9l for grammatica-users@nongnu.org; Tue, 04 May 2010 11:29:41 -0400 Received: from outgoing.cambridgesoft.com ([72.5.24.56]:2196) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O9K44-0006gl-4J for grammatica-users@nongnu.org; Tue, 04 May 2010 11:29:40 -0400 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; d=cambridgesoft.com; s=mail; h=Received:X-MimeOLE:Content-class:X-MS-Has-Attach:X-MS-TNEF-Correlator:Thread-Topic:Thread-Index:References:From:To:Cc:Subject:Date:X-Assembled-By:Message-ID:Mime-Version:Content-Type:Content-Transfer-Encoding; b=Lx7eYeHSBxVhRRsNSKdIEULlfdqqqaqozcwpZTSYaVkfD/mw2d+mEDW5Kvq/wbGUjkJPaIuPZP0S2pGEDpgfEDdSCawfrY+qglmiVVwIn5EVMVe8GPojY6QzSc8nbHZaiyaLTXcx2EFvMPFdXBnw8zsDb6/dTM6ArjQF9x39Z3k=; Received: from 172.16.1.208 ([172.16.1.208]) by outgoing.cambridgesoft.com with XWall v3.45 ; Tue, 4 May 2010 11:29:38 -0400 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [Grammatica-users] Negation in production rules Thread-Index: AcrrdGK63qeLrg8aRvm/89Mib0wXrgAKg6OZ References: From: Andrew Smellie To: Oliver Gramberg , "grammatica-users@nongnu.org" Subject: RE: [Grammatica-users] Negation in production rules Date: Tue, 4 May 2010 11:28:27 -0400 X-Assembled-By: XWall v3.45 Message-ID: <454AE9BB48EE394BB56B1719E53E214D07B9343E@exchange2.camsoft.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Windows XP SP1+, 2000 SP3 Cc: Jimesh Thomas X-BeenThere: grammatica-users@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: grammatica-users@nongnu.org List-Id: grammatica-users.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 May 2010 15:29:44 -0000 =20 Oliver =20 Many thanks for your help. We will try tis solution asap and let you know ho= w it goes =20 Regards Andrew ________________________________ From: Oliver Gramberg [mailto:oliver.gramberg@de.abb.com] Sent: Tue 5/4/2010 6:27 AM To: grammatica-users@nongnu.org Cc: Andrew Smellie Subject: Re: [Grammatica-users] Negation in production rules Hello Andrew,=20 try this (header omitted, output at the end):=20 ---------------------------------------------------------------------=20 %tokens%=20 colon =3D ':'=20 equals =3D '=3D'=20 lbracket =3D '['=20 rbracket =3D ']'=20 string_literal =3D <<"[^"]*">>=20 integer_literal =3D <<[0-9]+>>=20 real_literal =3D <<-?[0-9]+\.[0-9]+>>=20 identifier =3D <<[A-Z][A-Z0-9_]*>>=20 whitespace =3D <<[ \t]+>> %ignore%=20 newline =3D <<[\n\r]+>>=20 %productions%=20 start =3D line+ ;=20 line =3D contents? newline ;=20 contents =3D key '=3D' values? | values ;=20 key =3D identifier ( ':' identifier )? ( '[' integer_literal ']' )? ;=20 values =3D value+ ;=20 value =3D string_literal | integer_literal | real_literal | identifier ; ---------------------------------------------------------------------=20 Feel free to come back with questions!=20 Regards=20 Oliver ---------------------------------------------------------------------=20 Parse tree from notakey.sample:=20 start(2001)=20 =20 line(2002)=20 =20 contents(2003)=20 =20 key(2004)=20 =20 identifier(1008): "DATE", line: 1, col: 1=20 =20 equals(1002): "=3D", line: 1, col: 5=20 =20 values(2005)=20 =20 value(2006)=20 =20 string_literal(1005): ""Thu Apr 22 20:41:15 2010"", line: 1, col= : 6=20 =20 newline(1010): "(...)", line: 1, col: 32=20 =20 line(2002)=20 =20 contents(2003)=20 =20 key(2004)=20 =20 identifier(1008): "METHOD", line: 3, col: 1=20 =20 equals(1002): "=3D", line: 3, col: 7=20 =20 values(2005)=20 =20 value(2006)=20 =20 identifier(1008): "AM1", line: 3, col: 8=20 =20 newline(1010): "(...)", line: 3, col: 11=20 =20 line(2002)=20 =20 contents(2003)=20 =20 key(2004)=20 =20 identifier(1008): "TITLE", line: 5, col: 1=20 =20 equals(1002): "=3D", line: 5, col: 6=20 =20 values(2005)=20 =20 value(2006)=20 =20 string_literal(1005): ""Untitled-1"", line: 5, col: 7=20 =20 newline(1010): "(...)", line: 5, col: 19=20 =20 line(2002)=20 =20 contents(2003)=20 =20 key(2004)=20 =20 identifier(1008): "KEYWORDS", line: 7, col: 1=20 =20 equals(1002): "=3D", line: 7, col: 9=20 =20 values(2005)=20 =20 value(2006)=20 =20 string_literal(1005): "" AUX AM1 ALLVEC CHARGE=3D0 (...)", line:= 7, col: 10=20 =20 newline(1010): "(...)", line: 7, col: 93=20 =20 line(2002)=20 =20 contents(2003)=20 =20 key(2004)=20 =20 identifier(1008): "COMMENTS", line: 9, col: 1=20 =20 equals(1002): "=3D", line: 9, col: 9=20 =20 values(2005)=20 =20 value(2006)=20 =20 string_literal(1005): """", line: 9, col: 10=20 =20 newline(1010): "(...)", line: 9, col: 12=20 =20 line(2002)=20 =20 contents(2003)=20 =20 key(2004)=20 =20 identifier(1008): "ATOM_EL", line: 11, col: 1=20 =20 key(2)(3002)=20 =20 lbracket(1003): "[", line: 11, col: 8=20 =20 integer_literal(1006): "0008", line: 11, col: 9=20 =20 rbracket(1004): "]", line: 11, col: 13=20 =20 equals(1002): "=3D", line: 11, col: 14=20 =20 newline(1010): "(...)", line: 11, col: 15=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 identifier(1008): "C", line: 13, col: 1=20 =20 value(2006)=20 =20 identifier(1008): "C", line: 13, col: 3=20 =20 value(2006)=20 =20 identifier(1008): "H", line: 13, col: 5=20 =20 value(2006)=20 =20 identifier(1008): "H", line: 13, col: 7=20 =20 value(2006)=20 =20 identifier(1008): "H", line: 13, col: 9=20 =20 value(2006)=20 =20 identifier(1008): "H", line: 13, col: 11=20 =20 value(2006)=20 =20 identifier(1008): "H", line: 13, col: 13=20 =20 value(2006)=20 =20 identifier(1008): "H", line: 13, col: 15=20 =20 newline(1010): "(...)", line: 13, col: 16=20 =20 line(2002)=20 =20 contents(2003)=20 =20 key(2004)=20 =20 identifier(1008): "ATOM_CORE", line: 15, col: 1=20 =20 key(2)(3002)=20 =20 lbracket(1003): "[", line: 15, col: 10=20 =20 integer_literal(1006): "0008", line: 15, col: 11=20 =20 rbracket(1004): "]", line: 15, col: 15=20 =20 equals(1002): "=3D", line: 15, col: 16=20 =20 newline(1010): "(...)", line: 15, col: 17=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 integer_literal(1006): "4", line: 17, col: 1=20 =20 value(2006)=20 =20 integer_literal(1006): "4", line: 17, col: 3=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 17, col: 5=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 17, col: 7=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 17, col: 9=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 17, col: 11=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 17, col: 13=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 17, col: 15=20 =20 newline(1010): "(...)", line: 17, col: 16=20 =20 line(2002)=20 =20 contents(2003)=20 =20 key(2004)=20 =20 identifier(1008): "ATOM_X", line: 19, col: 1=20 =20 key(1)(3001)=20 =20 colon(1001): ":", line: 19, col: 7=20 =20 identifier(1008): "ANGSTROMS", line: 19, col: 8=20 =20 key(2)(3002)=20 =20 lbracket(1003): "[", line: 19, col: 17=20 =20 integer_literal(1006): "0024", line: 19, col: 18=20 =20 rbracket(1004): "]", line: 19, col: 22=20 =20 equals(1002): "=3D", line: 19, col: 23=20 =20 newline(1010): "(...)", line: 19, col: 24=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 real_literal(1007): "-0.3893", line: 21, col: 1=20 =20 value(2006)=20 =20 real_literal(1007): "0.6545", line: 21, col: 9=20 =20 value(2006)=20 =20 real_literal(1007): "0.0000", line: 21, col: 16=20 =20 newline(1010): "(...)", line: 21, col: 22=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 real_literal(1007): "0.3893", line: 23, col: 1=20 =20 value(2006)=20 =20 real_literal(1007): "-0.6545", line: 23, col: 8=20 =20 value(2006)=20 =20 real_literal(1007): "0.0000", line: 23, col: 16=20 =20 newline(1010): "(...)", line: 23, col: 22=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 real_literal(1007): "0.3150", line: 25, col: 1=20 =20 value(2006)=20 =20 real_literal(1007): "1.5163", line: 25, col: 8=20 =20 value(2006)=20 =20 real_literal(1007): "0.0000", line: 25, col: 15=20 =20 newline(1010): "(...)", line: 25, col: 21=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 real_literal(1007): "-1.0344", line: 27, col: 1=20 =20 value(2006)=20 =20 real_literal(1007): "0.7137", line: 27, col: 9=20 =20 value(2006)=20 =20 real_literal(1007): "0.9050", line: 27, col: 16=20 =20 newline(1010): "(...)", line: 27, col: 22=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 real_literal(1007): "-1.0344", line: 29, col: 1=20 =20 value(2006)=20 =20 real_literal(1007): "0.7137", line: 29, col: 9=20 =20 value(2006)=20 =20 real_literal(1007): "-0.9050", line: 29, col: 16=20 =20 newline(1010): "(...)", line: 29, col: 23=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 real_literal(1007): "-0.3150", line: 31, col: 1=20 =20 value(2006)=20 =20 real_literal(1007): "-1.5163", line: 31, col: 9=20 =20 value(2006)=20 =20 real_literal(1007): "0.0000", line: 31, col: 17=20 =20 newline(1010): "(...)", line: 31, col: 23=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 real_literal(1007): "1.0344", line: 33, col: 1=20 =20 value(2006)=20 =20 real_literal(1007): "-0.7137", line: 33, col: 8=20 =20 value(2006)=20 =20 real_literal(1007): "0.9050", line: 33, col: 16=20 =20 newline(1010): "(...)", line: 33, col: 22=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 real_literal(1007): "1.0344", line: 35, col: 1=20 =20 value(2006)=20 =20 real_literal(1007): "-0.7137", line: 35, col: 8=20 =20 value(2006)=20 =20 real_literal(1007): "-0.9050", line: 35, col: 16=20 =20 newline(1010): "(...)", line: 35, col: 23=20 =20 line(2002)=20 =20 contents(2003)=20 =20 key(2004)=20 =20 identifier(1008): "AO_ATOMINDEX", line: 37, col: 1=20 =20 key(2)(3002)=20 =20 lbracket(1003): "[", line: 37, col: 13=20 =20 integer_literal(1006): "0014", line: 37, col: 14=20 =20 rbracket(1004): "]", line: 37, col: 18=20 =20 equals(1002): "=3D", line: 37, col: 19=20 =20 newline(1010): "(...)", line: 37, col: 20=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 39, col: 1=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 39, col: 3=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 39, col: 5=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 39, col: 7=20 =20 value(2006)=20 =20 integer_literal(1006): "2", line: 39, col: 9=20 =20 value(2006)=20 =20 integer_literal(1006): "2", line: 39, col: 11=20 =20 value(2006)=20 =20 integer_literal(1006): "2", line: 39, col: 13=20 =20 value(2006)=20 =20 integer_literal(1006): "2", line: 39, col: 15=20 =20 value(2006)=20 =20 integer_literal(1006): "3", line: 39, col: 17=20 =20 value(2006)=20 =20 integer_literal(1006): "4", line: 39, col: 19=20 =20 value(2006)=20 =20 integer_literal(1006): "5", line: 39, col: 21=20 =20 value(2006)=20 =20 integer_literal(1006): "6", line: 39, col: 23=20 =20 value(2006)=20 =20 integer_literal(1006): "7", line: 39, col: 25=20 =20 value(2006)=20 =20 integer_literal(1006): "8", line: 39, col: 27=20 =20 newline(1010): "(...)", line: 39, col: 28=20 =20 line(2002)=20 =20 contents(2003)=20 =20 key(2004)=20 =20 identifier(1008): "ATOM_SYMTYPE", line: 41, col: 1=20 =20 key(2)(3002)=20 =20 lbracket(1003): "[", line: 41, col: 13=20 =20 integer_literal(1006): "0014", line: 41, col: 14=20 =20 rbracket(1004): "]", line: 41, col: 18=20 =20 equals(1002): "=3D", line: 41, col: 19=20 =20 newline(1010): "(...)", line: 41, col: 20=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 identifier(1008): "S", line: 43, col: 1=20 =20 value(2006)=20 =20 identifier(1008): "PX", line: 43, col: 3=20 =20 value(2006)=20 =20 identifier(1008): "PY", line: 43, col: 6=20 =20 value(2006)=20 =20 identifier(1008): "PZ", line: 43, col: 9=20 =20 value(2006)=20 =20 identifier(1008): "S", line: 43, col: 12=20 =20 value(2006)=20 =20 identifier(1008): "PX", line: 43, col: 14=20 =20 value(2006)=20 =20 identifier(1008): "PY", line: 43, col: 17=20 =20 value(2006)=20 =20 identifier(1008): "PZ", line: 43, col: 20=20 =20 value(2006)=20 =20 identifier(1008): "S", line: 43, col: 23=20 =20 value(2006)=20 =20 identifier(1008): "S", line: 43, col: 25=20 =20 value(2006)=20 =20 identifier(1008): "S", line: 43, col: 27=20 =20 value(2006)=20 =20 identifier(1008): "S", line: 43, col: 29=20 =20 value(2006)=20 =20 identifier(1008): "S", line: 43, col: 31=20 =20 value(2006)=20 =20 identifier(1008): "S", line: 43, col: 33=20 =20 newline(1010): "(...)", line: 43, col: 34=20 =20 line(2002)=20 =20 contents(2003)=20 =20 key(2004)=20 =20 identifier(1008): "AO_ZETA", line: 45, col: 1=20 =20 key(2)(3002)=20 =20 lbracket(1003): "[", line: 45, col: 8=20 =20 integer_literal(1006): "0014", line: 45, col: 9=20 =20 rbracket(1004): "]", line: 45, col: 13=20 =20 equals(1002): "=3D", line: 45, col: 14=20 =20 newline(1010): "(...)", line: 45, col: 15=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 real_literal(1007): "1.8087", line: 47, col: 1=20 =20 value(2006)=20 =20 real_literal(1007): "1.6851", line: 47, col: 8=20 =20 value(2006)=20 =20 real_literal(1007): "1.6851", line: 47, col: 15=20 =20 value(2006)=20 =20 real_literal(1007): "1.6851", line: 47, col: 22=20 =20 value(2006)=20 =20 real_literal(1007): "1.8087", line: 47, col: 29=20 =20 value(2006)=20 =20 real_literal(1007): "1.6851", line: 47, col: 36=20 =20 value(2006)=20 =20 real_literal(1007): "1.6851", line: 47, col: 43=20 =20 value(2006)=20 =20 real_literal(1007): "1.6851", line: 47, col: 50=20 =20 value(2006)=20 =20 real_literal(1007): "1.1881", line: 47, col: 57=20 =20 value(2006)=20 =20 real_literal(1007): "1.1881", line: 47, col: 64=20 =20 newline(1010): "(...)", line: 47, col: 70=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 real_literal(1007): "1.1881", line: 49, col: 1=20 =20 value(2006)=20 =20 real_literal(1007): "1.1881", line: 49, col: 8=20 =20 value(2006)=20 =20 real_literal(1007): "1.1881", line: 49, col: 15=20 =20 value(2006)=20 =20 real_literal(1007): "1.1881", line: 49, col: 22=20 =20 newline(1010): "(...)", line: 49, col: 28=20 =20 line(2002)=20 =20 contents(2003)=20 =20 key(2004)=20 =20 identifier(1008): "ATOM_PQN", line: 51, col: 1=20 =20 key(2)(3002)=20 =20 lbracket(1003): "[", line: 51, col: 9=20 =20 integer_literal(1006): "0014", line: 51, col: 10=20 =20 rbracket(1004): "]", line: 51, col: 14=20 =20 equals(1002): "=3D", line: 51, col: 15=20 =20 newline(1010): "(...)", line: 51, col: 16=20 =20 line(2002)=20 =20 contents(2003)=20 =20 values(2005)=20 =20 value(2006)=20 =20 integer_literal(1006): "2", line: 53, col: 1=20 =20 value(2006)=20 =20 integer_literal(1006): "2", line: 53, col: 3=20 =20 value(2006)=20 =20 integer_literal(1006): "2", line: 53, col: 5=20 =20 value(2006)=20 =20 integer_literal(1006): "2", line: 53, col: 7=20 =20 value(2006)=20 =20 integer_literal(1006): "2", line: 53, col: 9=20 =20 value(2006)=20 =20 integer_literal(1006): "2", line: 53, col: 11=20 =20 value(2006)=20 =20 integer_literal(1006): "2", line: 53, col: 13=20 =20 value(2006)=20 =20 integer_literal(1006): "2", line: 53, col: 15=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 53, col: 17=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 53, col: 19=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 53, col: 21=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 53, col: 23=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 53, col: 25=20 =20 value(2006)=20 =20 integer_literal(1006): "1", line: 53, col: 27=20 =20 newline(1010): "(...)", line: 53, col: 28=20 ---------------------------------------------------------------------=20