Negation in production rules

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Negation in production rules

Andrew Smellie-2

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
[hidden email]
http://lists.nongnu.org/mailman/listinfo/grammatica-users
Reply | Threaded
Open this post in threaded view
|

Re: Negation in production rules

Per Cederberg
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 <[hidden email]> 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
> [hidden email]
> http://lists.nongnu.org/mailman/listinfo/grammatica-users
>


_______________________________________________
Grammatica-users mailing list
[hidden email]
http://lists.nongnu.org/mailman/listinfo/grammatica-users
Reply | Threaded
Open this post in threaded view
|

Re: Negation in production rules

Oliver Gramberg
In reply to this post by Andrew Smellie-2

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
...
---------------------------------------------------------------------

_______________________________________________
Grammatica-users mailing list
[hidden email]
http://lists.nongnu.org/mailman/listinfo/grammatica-users
Reply | Threaded
Open this post in threaded view
|

RE: Negation in production rules

Andrew Smellie-2
In reply to this post by Andrew Smellie-2
 
Oliver
 
Many thanks for your help. We will try tis solution asap and let you know how it goes
 
Regards
Andrew

________________________________

From: Oliver Gramberg [mailto:[hidden email]]
Sent: Tue 5/4/2010 6:27 AM
To: [hidden email]
Cc: Andrew Smellie
Subject: Re: [Grammatica-users] Negation in production rules



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
  line(2002)
    contents(2003)
      key(2004)
        identifier(1008): "ATOM_SYMTYPE", line: 41, col: 1
        key(2)(3002)
          lbracket(1003): "[", line: 41, col: 13
          integer_literal(1006): "0014", line: 41, col: 14
          rbracket(1004): "]", line: 41, col: 18
      equals(1002): "=", line: 41, col: 19
    newline(1010): "(...)", line: 41, col: 20
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          identifier(1008): "S", line: 43, col: 1
        value(2006)
          identifier(1008): "PX", line: 43, col: 3
        value(2006)
          identifier(1008): "PY", line: 43, col: 6
        value(2006)
          identifier(1008): "PZ", line: 43, col: 9
        value(2006)
          identifier(1008): "S", line: 43, col: 12
        value(2006)
          identifier(1008): "PX", line: 43, col: 14
        value(2006)
          identifier(1008): "PY", line: 43, col: 17
        value(2006)
          identifier(1008): "PZ", line: 43, col: 20
        value(2006)
          identifier(1008): "S", line: 43, col: 23
        value(2006)
          identifier(1008): "S", line: 43, col: 25
        value(2006)
          identifier(1008): "S", line: 43, col: 27
        value(2006)
          identifier(1008): "S", line: 43, col: 29
        value(2006)
          identifier(1008): "S", line: 43, col: 31
        value(2006)
          identifier(1008): "S", line: 43, col: 33
    newline(1010): "(...)", line: 43, col: 34
  line(2002)
    contents(2003)
      key(2004)
        identifier(1008): "AO_ZETA", line: 45, col: 1
        key(2)(3002)
          lbracket(1003): "[", line: 45, col: 8
          integer_literal(1006): "0014", line: 45, col: 9
          rbracket(1004): "]", line: 45, col: 13
      equals(1002): "=", line: 45, col: 14
    newline(1010): "(...)", line: 45, col: 15
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          real_literal(1007): "1.8087", line: 47, col: 1
        value(2006)
          real_literal(1007): "1.6851", line: 47, col: 8
        value(2006)
          real_literal(1007): "1.6851", line: 47, col: 15
        value(2006)
          real_literal(1007): "1.6851", line: 47, col: 22
        value(2006)
          real_literal(1007): "1.8087", line: 47, col: 29
        value(2006)
          real_literal(1007): "1.6851", line: 47, col: 36
        value(2006)
          real_literal(1007): "1.6851", line: 47, col: 43
        value(2006)
          real_literal(1007): "1.6851", line: 47, col: 50
        value(2006)
          real_literal(1007): "1.1881", line: 47, col: 57
        value(2006)
          real_literal(1007): "1.1881", line: 47, col: 64
    newline(1010): "(...)", line: 47, col: 70
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          real_literal(1007): "1.1881", line: 49, col: 1
        value(2006)
          real_literal(1007): "1.1881", line: 49, col: 8
        value(2006)
          real_literal(1007): "1.1881", line: 49, col: 15
        value(2006)
          real_literal(1007): "1.1881", line: 49, col: 22
    newline(1010): "(...)", line: 49, col: 28
  line(2002)
    contents(2003)
      key(2004)
        identifier(1008): "ATOM_PQN", line: 51, col: 1
        key(2)(3002)
          lbracket(1003): "[", line: 51, col: 9
          integer_literal(1006): "0014", line: 51, col: 10
          rbracket(1004): "]", line: 51, col: 14
      equals(1002): "=", line: 51, col: 15
    newline(1010): "(...)", line: 51, col: 16
  line(2002)
    contents(2003)
      values(2005)
        value(2006)
          integer_literal(1006): "2", line: 53, col: 1
        value(2006)
          integer_literal(1006): "2", line: 53, col: 3
        value(2006)
          integer_literal(1006): "2", line: 53, col: 5
        value(2006)
          integer_literal(1006): "2", line: 53, col: 7
        value(2006)
          integer_literal(1006): "2", line: 53, col: 9
        value(2006)
          integer_literal(1006): "2", line: 53, col: 11
        value(2006)
          integer_literal(1006): "2", line: 53, col: 13
        value(2006)
          integer_literal(1006): "2", line: 53, col: 15
        value(2006)
          integer_literal(1006): "1", line: 53, col: 17
        value(2006)
          integer_literal(1006): "1", line: 53, col: 19
        value(2006)
          integer_literal(1006): "1", line: 53, col: 21
        value(2006)
          integer_literal(1006): "1", line: 53, col: 23
        value(2006)
          integer_literal(1006): "1", line: 53, col: 25
        value(2006)
          integer_literal(1006): "1", line: 53, col: 27
    newline(1010): "(...)", line: 53, col: 28
---------------------------------------------------------------------


_______________________________________________
Grammatica-users mailing list
[hidden email]
http://lists.nongnu.org/mailman/listinfo/grammatica-users