bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#25071: 26.0.50; Various Forth related improvements for etags


From: Helmut Eller
Subject: bug#25071: 26.0.50; Various Forth related improvements for etags
Date: Wed, 30 Nov 2016 12:29:40 +0100

I'd like to propose a patch to etags for better Forth support.

With the patch, etags creates explicit tag names.  That works better in
combination with tag-exact-match-p.

It also adds supports for some keywords from the (relatively new)
Forth-2012 Standard.

>From 17dc260dd2a609e69d303cdbe1e81375d8d25519 Mon Sep 17 00:00:00 2001
From: Helmut Eller <eller.helmut@gmail.com>
Date: Wed, 30 Nov 2016 12:20:34 +0100
Subject: [PATCH] Various Forth related improvements for etags

Create explicit tag names for Forth files, so that names like "(foo)"
can be found.  Previously only "(foo" was found due to C-isms.

Fix a bug where a tag for "-bar" was created when encountering things
like "create-bar".

Recognize more words from the Forth-2012 Standard.

* lib-src/etags.c (Forth_words): Check for whitespace after defining
words.  Create explict tag name with pfnote.

* test/manual/etags/forth-src/test-forth.fth: Add some test cases.

* test/etags/ETAGS.good_1:
* test/etags/ETAGS.good_2:
* test/etags/ETAGS.good_3:
* test/etags/ETAGS.good_4:
* test/etags/ETAGS.good_5:
* test/etags/ETAGS.good_6:
* test/etags/CTAGS.good: Adapt to the changes in etags.c and new test cases.
---
 lib-src/etags.c                            | 40 ++++++++++++++++++++++--------
 test/manual/etags/CTAGS.good               | 15 ++++++++++-
 test/manual/etags/ETAGS.good_1             | 37 ++++++++++++++++++---------
 test/manual/etags/ETAGS.good_2             | 37 ++++++++++++++++++---------
 test/manual/etags/ETAGS.good_3             | 37 ++++++++++++++++++---------
 test/manual/etags/ETAGS.good_4             | 37 ++++++++++++++++++---------
 test/manual/etags/ETAGS.good_5             | 37 ++++++++++++++++++---------
 test/manual/etags/ETAGS.good_6             | 37 ++++++++++++++++++---------
 test/manual/etags/forth-src/test-forth.fth | 21 ++++++++++++++++
 9 files changed, 215 insertions(+), 83 deletions(-)

diff --git a/lib-src/etags.c b/lib-src/etags.c
index 6a722e0..f680d20 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -5469,16 +5469,36 @@ Forth_words (FILE *inf)
        do                      /* skip to ) or eol */
          bp++;
        while (*bp != ')' && *bp != '\0');
-      else if ((bp[0] == ':' && c_isspace (bp[1]) && bp++)
-              || LOOKING_AT_NOCASE (bp, "constant")
-              || LOOKING_AT_NOCASE (bp, "code")
-              || LOOKING_AT_NOCASE (bp, "create")
-              || LOOKING_AT_NOCASE (bp, "defer")
-              || LOOKING_AT_NOCASE (bp, "value")
-              || LOOKING_AT_NOCASE (bp, "variable")
-              || LOOKING_AT_NOCASE (bp, "buffer:")
-              || LOOKING_AT_NOCASE (bp, "field"))
-       get_tag (skip_spaces (bp), NULL); /* Yay!  A definition! */
+      else if (((bp[0] == ':' && c_isspace (bp[1]) && bp++)
+               || LOOKING_AT_NOCASE (bp, "constant")
+               || LOOKING_AT_NOCASE (bp, "2constant")
+               || LOOKING_AT_NOCASE (bp, "fconstant")
+               || LOOKING_AT_NOCASE (bp, "code")
+               || LOOKING_AT_NOCASE (bp, "create")
+               || LOOKING_AT_NOCASE (bp, "defer")
+               || LOOKING_AT_NOCASE (bp, "value")
+               || LOOKING_AT_NOCASE (bp, "2value")
+               || LOOKING_AT_NOCASE (bp, "fvalue")
+               || LOOKING_AT_NOCASE (bp, "variable")
+               || LOOKING_AT_NOCASE (bp, "2variable")
+               || LOOKING_AT_NOCASE (bp, "fvariable")
+               || LOOKING_AT_NOCASE (bp, "buffer:")
+               || LOOKING_AT_NOCASE (bp, "field:")
+               || LOOKING_AT_NOCASE (bp, "+field")
+               || LOOKING_AT_NOCASE (bp, "field") /* not standard? */
+               || LOOKING_AT_NOCASE (bp, "begin-structure")
+               || LOOKING_AT_NOCASE (bp, "synonym")
+               )
+              && c_isspace (bp[0]))
+       {
+         /* Yay!  A definition! */
+         char* name_start = skip_spaces (bp);
+         char* name_end = skip_non_spaces (name_start);
+         char* name = savenstr (name_start, name_end - name_start);
+         pfnote (name, true, lb.buffer, name_end - lb.buffer,
+                 lineno, linecharno);
+         bp = name_end;
+       }
       else
        bp = skip_non_spaces (bp);
 }
diff --git a/test/manual/etags/CTAGS.good b/test/manual/etags/CTAGS.good
index e652989..6f9df19 100644
--- a/test/manual/etags/CTAGS.good
+++ b/test/manual/etags/CTAGS.good
@@ -36,7 +36,8 @@ ${CHECKOBJS}  make-src/Makefile       /^${CHECKOBJS}: 
CFLAGS=-g3 -DNULLFREECHECK=0$/
 ($prog,$_,@list        perl-src/yagrip.pl      39
 ($string,$flag,@string,@temp,@last     perl-src/yagrip.pl      40
 (a-forth-constant      forth-src/test-forth.fth        /^constant 
(a-forth-constant$/
-(another-forth-word    forth-src/test-forth.fth        /^: 
(another-forth-word) ( -- )$/
+(another-forth-word)   forth-src/test-forth.fth        /^: 
(another-forth-word) ( -- )$/
+(foo)  forth-src/test-forth.fth        /^: (foo) 1 ;$/
 +      ruby-src/test.rb        /^        def +(y)$/
 +      tex-src/texinfo.tex     /^\\def+{{\\tt \\char 43}}$/
 .PRECIOUS      make-src/Makefile       /^.PRECIOUS: ETAGS CTAGS ETAGS16 
CTAGS16 ETAGS17 CTA/
@@ -170,6 +171,9 @@ ${CHECKOBJS}        make-src/Makefile       /^${CHECKOBJS}: 
CFLAGS=-g3 -DNULLFREECHECK=0$/
 /wbytes        ps-src/rfc1245.ps       /^\/wbytes { $/
 /wh    ps-src/rfc1245.ps       /^\/wh { $/
 /yen   ps-src/rfc1245.ps       /^\/yen \/.notdef \/.notdef \/.notdef \/.notdef 
\/.notdef /
+2const forth-src/test-forth.fth        /^3 4 2constant 2const$/
+2val   forth-src/test-forth.fth        /^2const 2value 2val$/
+2var   forth-src/test-forth.fth        /^2variable 2var$/
 :a-forth-dictionary-entry      forth-src/test-forth.fth        /^create 
:a-forth-dictionary-entry$/
 <      tex-src/texinfo.tex     /^\\def<{{\\tt \\less}}$/
 <<     ruby-src/test.rb        /^        def <<(y)$/
@@ -2725,6 +2729,7 @@ counter   cp-src/c.C      36
 cow    cp-src/c.C      127
 cow    cp-src/c.C      131
 cplpl  c-src/etags.c   2935
+create-bar     forth-src/test-forth.fth        /^: create-bar foo ;$/
 createPOEntries        php-src/lce_functions.php       /^      function 
createPOEntries()$/
 createWidgets  pyt-src/server.py       /^    def createWidgets(self, host):$/
 createWidgets  pyt-src/server.py       /^    def createWidgets(self):$/
@@ -2944,6 +2949,7 @@ fastmap   c-src/emacs/src/regex.h 355
 fastmap_accurate       c-src/emacs/src/regex.h 383
 fatal  c-src/etags.c   /^fatal (const char *s1, const char *s2)$/
 fatala c.c     /^void fatala () __attribute__ ((noreturn));$/
+fconst forth-src/test-forth.fth        /^3.1415e fconstant fconst$/
 fdHandler      objc-src/Subprocess.m   /^- fdHandler:(int)theFd$/
 fdHandler      objc-src/Subprocess.m   /^fdHandler (int theFd, id self)$/
 fdefunkey      c-src/etags.c   2409
@@ -3015,6 +3021,7 @@ foo       cp-src/x.cc     /^XX::foo()$/
 foo    f-src/entry.for /^       character*(*) function foo()$/
 foo    f-src/entry.strange_suffix      /^       character*(*) function foo()$/
 foo    f-src/entry.strange     /^       character*(*) function foo()$/
+foo    forth-src/test-forth.fth        /^: foo (foo) ;$/
 foo    php-src/ptest.php       /^foo()$/
 foo    ruby-src/test1.ru       /^    attr_reader :foo$/
 foo!   ruby-src/test1.ru       /^    def foo!$/
@@ -3057,6 +3064,8 @@ function  c-src/emacs/src/lisp.h  694
 function       c-src/emacs/src/lisp.h  1685
 function       c-src/emacs/src/lisp.h  2197
 functionp      c-src/emacs/src/lisp.h  /^functionp (Lisp_Object object)$/
+fval   forth-src/test-forth.fth        /^fconst fvalue fval$/
+fvar   forth-src/test-forth.fth        /^fvariable fvar$/
 fvdef  c-src/etags.c   2418
 fvextern       c-src/etags.c   2420
 fvnameseen     c-src/etags.c   2412
@@ -3515,6 +3524,7 @@ my_struct c.c     226
 my_struct      c-src/h.h       91
 my_typedef     c.c     228
 my_typedef     c-src/h.h       93
+mypi   forth-src/test-forth.fth        /^synonym mypi fconst$/
 n      c-src/exit.c    28
 n      c-src/exit.strange_suffix       28
 name   c-src/getopt.h  76
@@ -3719,6 +3729,8 @@ outputtable       html-src/algrthms.html  /^Output$/
 outsyn prol-src/natded.prolog  /^outsyn(['Any'],_).$/
 p      c-src/emacs/src/lisp.h  4673
 p      c-src/emacs/src/lisp.h  4679
+p.x    forth-src/test-forth.fth        /^  1 CELLS +FIELD p.x    \\ A single 
cell filed name/
+p.y    forth-src/test-forth.fth        /^  1 CELLS +FIELD p.y    \\ A single 
cell field name/
 p/f    ada-src/etags-test-for.ada      /^   function p pragma Import (C,$/
 p/f    ada-src/etags-test-for.ada      /^function p ("p");$/
 pD     c-src/emacs/src/lisp.h  165
@@ -3767,6 +3779,7 @@ plist     c-src/emacs/src/lisp.h  697
 plus   cp-src/functions.cpp    /^void Date::plus ( int days , int month , int 
year /
 plus   go-src/test1.go 5
 plusvalseq     prol-src/natded.prolog  /^plusvalseq([]) --> [].$/
+point  forth-src/test-forth.fth        /^BEGIN-STRUCTURE point \\ create the 
named structure/
 pointer        c-src/emacs/src/lisp.h  2125
 poll_for_input c-src/emacs/src/keyboard.c      /^poll_for_input (struct atimer 
*timer)$/
 poll_for_input_1       c-src/emacs/src/keyboard.c      /^poll_for_input_1 
(void)$/
diff --git a/test/manual/etags/ETAGS.good_1 b/test/manual/etags/ETAGS.good_1
index 374692c..4067a80 100644
--- a/test/manual/etags/ETAGS.good_1
+++ b/test/manual/etags/ETAGS.good_1
@@ -2311,19 +2311,32 @@ f-src/entry.strange,172
      & intensity1(577,12231
        character*(*) function foo(579,12307
 
-forth-src/test-forth.fth,408
-: a-forth-word 20,301
-99 constant a-forth-constant!22,343
-55 value a-forth-value?23,373
-create :a-forth-dictionary-entry24,397
-defer #a-defer-word27,460
-: (another-forth-word)(another-forth-word29,481
-   9   field   >field136,582
-   5   field   >field237,605
+forth-src/test-forth.fth,948
+: a-forth-worda-forth-word20,301
+99 constant a-forth-constant!a-forth-constant!22,343
+55 value a-forth-value?a-forth-value?23,373
+create :a-forth-dictionary-entry:a-forth-dictionary-entry24,397
+defer #a-defer-word#a-defer-word27,460
+: (another-forth-word)(another-forth-word)29,481
+   9   field   >field1>field136,582
+   5   field   >field2>field237,605
 constant (a-forth-constant(a-forth-constant38,628
-2000 buffer: #some-storage41,657
-code assemby-code-word 43,685
-: a-forth-word 50,870
+2000 buffer: #some-storage#some-storage41,657
+code assemby-code-wordassemby-code-word43,685
+: a-forth-worda-forth-word50,870
+: (foo)(foo)55,988
+: foofoo56,1000
+: create-barcreate-bar58,1015
+3 4 2constant 2const2const61,1074
+2const 2value 2val2val62,1095
+2variable 2var2var63,1114
+3.1415e fconstant fconstfconst65,1130
+fconst fvalue fvalfval66,1155
+fvariable fvarfvar67,1174
+synonym mypimypi69,1190
+BEGIN-STRUCTURE pointpoint71,1211
+  1 CELLS +FIELD p.xp.x72,1262
+  1 CELLS +FIELD p.yp.y73,1318
 
 go-src/test.go,48
 package main1,0
diff --git a/test/manual/etags/ETAGS.good_2 b/test/manual/etags/ETAGS.good_2
index a21717a..71634d4 100644
--- a/test/manual/etags/ETAGS.good_2
+++ b/test/manual/etags/ETAGS.good_2
@@ -2880,19 +2880,32 @@ f-src/entry.strange,172
      & intensity1(577,12231
        character*(*) function foo(579,12307
 
-forth-src/test-forth.fth,408
-: a-forth-word 20,301
-99 constant a-forth-constant!22,343
-55 value a-forth-value?23,373
-create :a-forth-dictionary-entry24,397
-defer #a-defer-word27,460
-: (another-forth-word)(another-forth-word29,481
-   9   field   >field136,582
-   5   field   >field237,605
+forth-src/test-forth.fth,948
+: a-forth-worda-forth-word20,301
+99 constant a-forth-constant!a-forth-constant!22,343
+55 value a-forth-value?a-forth-value?23,373
+create :a-forth-dictionary-entry:a-forth-dictionary-entry24,397
+defer #a-defer-word#a-defer-word27,460
+: (another-forth-word)(another-forth-word)29,481
+   9   field   >field1>field136,582
+   5   field   >field2>field237,605
 constant (a-forth-constant(a-forth-constant38,628
-2000 buffer: #some-storage41,657
-code assemby-code-word 43,685
-: a-forth-word 50,870
+2000 buffer: #some-storage#some-storage41,657
+code assemby-code-wordassemby-code-word43,685
+: a-forth-worda-forth-word50,870
+: (foo)(foo)55,988
+: foofoo56,1000
+: create-barcreate-bar58,1015
+3 4 2constant 2const2const61,1074
+2const 2value 2val2val62,1095
+2variable 2var2var63,1114
+3.1415e fconstant fconstfconst65,1130
+fconst fvalue fvalfval66,1155
+fvariable fvarfvar67,1174
+synonym mypimypi69,1190
+BEGIN-STRUCTURE pointpoint71,1211
+  1 CELLS +FIELD p.xp.x72,1262
+  1 CELLS +FIELD p.yp.y73,1318
 
 go-src/test.go,48
 package main1,0
diff --git a/test/manual/etags/ETAGS.good_3 b/test/manual/etags/ETAGS.good_3
index 33bf110..9b56bb2 100644
--- a/test/manual/etags/ETAGS.good_3
+++ b/test/manual/etags/ETAGS.good_3
@@ -2628,19 +2628,32 @@ f-src/entry.strange,172
      & intensity1(577,12231
        character*(*) function foo(579,12307
 
-forth-src/test-forth.fth,408
-: a-forth-word 20,301
-99 constant a-forth-constant!22,343
-55 value a-forth-value?23,373
-create :a-forth-dictionary-entry24,397
-defer #a-defer-word27,460
-: (another-forth-word)(another-forth-word29,481
-   9   field   >field136,582
-   5   field   >field237,605
+forth-src/test-forth.fth,948
+: a-forth-worda-forth-word20,301
+99 constant a-forth-constant!a-forth-constant!22,343
+55 value a-forth-value?a-forth-value?23,373
+create :a-forth-dictionary-entry:a-forth-dictionary-entry24,397
+defer #a-defer-word#a-defer-word27,460
+: (another-forth-word)(another-forth-word)29,481
+   9   field   >field1>field136,582
+   5   field   >field2>field237,605
 constant (a-forth-constant(a-forth-constant38,628
-2000 buffer: #some-storage41,657
-code assemby-code-word 43,685
-: a-forth-word 50,870
+2000 buffer: #some-storage#some-storage41,657
+code assemby-code-wordassemby-code-word43,685
+: a-forth-worda-forth-word50,870
+: (foo)(foo)55,988
+: foofoo56,1000
+: create-barcreate-bar58,1015
+3 4 2constant 2const2const61,1074
+2const 2value 2val2val62,1095
+2variable 2var2var63,1114
+3.1415e fconstant fconstfconst65,1130
+fconst fvalue fvalfval66,1155
+fvariable fvarfvar67,1174
+synonym mypimypi69,1190
+BEGIN-STRUCTURE pointpoint71,1211
+  1 CELLS +FIELD p.xp.x72,1262
+  1 CELLS +FIELD p.yp.y73,1318
 
 go-src/test.go,48
 package main1,0
diff --git a/test/manual/etags/ETAGS.good_4 b/test/manual/etags/ETAGS.good_4
index 3d9d626..8629294 100644
--- a/test/manual/etags/ETAGS.good_4
+++ b/test/manual/etags/ETAGS.good_4
@@ -2475,19 +2475,32 @@ f-src/entry.strange,172
      & intensity1(577,12231
        character*(*) function foo(579,12307
 
-forth-src/test-forth.fth,408
-: a-forth-word 20,301
-99 constant a-forth-constant!22,343
-55 value a-forth-value?23,373
-create :a-forth-dictionary-entry24,397
-defer #a-defer-word27,460
-: (another-forth-word)(another-forth-word29,481
-   9   field   >field136,582
-   5   field   >field237,605
+forth-src/test-forth.fth,948
+: a-forth-worda-forth-word20,301
+99 constant a-forth-constant!a-forth-constant!22,343
+55 value a-forth-value?a-forth-value?23,373
+create :a-forth-dictionary-entry:a-forth-dictionary-entry24,397
+defer #a-defer-word#a-defer-word27,460
+: (another-forth-word)(another-forth-word)29,481
+   9   field   >field1>field136,582
+   5   field   >field2>field237,605
 constant (a-forth-constant(a-forth-constant38,628
-2000 buffer: #some-storage41,657
-code assemby-code-word 43,685
-: a-forth-word 50,870
+2000 buffer: #some-storage#some-storage41,657
+code assemby-code-wordassemby-code-word43,685
+: a-forth-worda-forth-word50,870
+: (foo)(foo)55,988
+: foofoo56,1000
+: create-barcreate-bar58,1015
+3 4 2constant 2const2const61,1074
+2const 2value 2val2val62,1095
+2variable 2var2var63,1114
+3.1415e fconstant fconstfconst65,1130
+fconst fvalue fvalfval66,1155
+fvariable fvarfvar67,1174
+synonym mypimypi69,1190
+BEGIN-STRUCTURE pointpoint71,1211
+  1 CELLS +FIELD p.xp.x72,1262
+  1 CELLS +FIELD p.yp.y73,1318
 
 go-src/test.go,48
 package main1,0
diff --git a/test/manual/etags/ETAGS.good_5 b/test/manual/etags/ETAGS.good_5
index 1dff768..8e246c1 100644
--- a/test/manual/etags/ETAGS.good_5
+++ b/test/manual/etags/ETAGS.good_5
@@ -3361,19 +3361,32 @@ f-src/entry.strange,172
      & intensity1(577,12231
        character*(*) function foo(579,12307
 
-forth-src/test-forth.fth,408
-: a-forth-word 20,301
-99 constant a-forth-constant!22,343
-55 value a-forth-value?23,373
-create :a-forth-dictionary-entry24,397
-defer #a-defer-word27,460
-: (another-forth-word)(another-forth-word29,481
-   9   field   >field136,582
-   5   field   >field237,605
+forth-src/test-forth.fth,948
+: a-forth-worda-forth-word20,301
+99 constant a-forth-constant!a-forth-constant!22,343
+55 value a-forth-value?a-forth-value?23,373
+create :a-forth-dictionary-entry:a-forth-dictionary-entry24,397
+defer #a-defer-word#a-defer-word27,460
+: (another-forth-word)(another-forth-word)29,481
+   9   field   >field1>field136,582
+   5   field   >field2>field237,605
 constant (a-forth-constant(a-forth-constant38,628
-2000 buffer: #some-storage41,657
-code assemby-code-word 43,685
-: a-forth-word 50,870
+2000 buffer: #some-storage#some-storage41,657
+code assemby-code-wordassemby-code-word43,685
+: a-forth-worda-forth-word50,870
+: (foo)(foo)55,988
+: foofoo56,1000
+: create-barcreate-bar58,1015
+3 4 2constant 2const2const61,1074
+2const 2value 2val2val62,1095
+2variable 2var2var63,1114
+3.1415e fconstant fconstfconst65,1130
+fconst fvalue fvalfval66,1155
+fvariable fvarfvar67,1174
+synonym mypimypi69,1190
+BEGIN-STRUCTURE pointpoint71,1211
+  1 CELLS +FIELD p.xp.x72,1262
+  1 CELLS +FIELD p.yp.y73,1318
 
 go-src/test.go,48
 package main1,0
diff --git a/test/manual/etags/ETAGS.good_6 b/test/manual/etags/ETAGS.good_6
index fdcbd57..37294aa 100644
--- a/test/manual/etags/ETAGS.good_6
+++ b/test/manual/etags/ETAGS.good_6
@@ -3361,19 +3361,32 @@ f-src/entry.strange,172
      & intensity1(577,12231
        character*(*) function foo(579,12307
 
-forth-src/test-forth.fth,408
-: a-forth-word 20,301
-99 constant a-forth-constant!22,343
-55 value a-forth-value?23,373
-create :a-forth-dictionary-entry24,397
-defer #a-defer-word27,460
-: (another-forth-word)(another-forth-word29,481
-   9   field   >field136,582
-   5   field   >field237,605
+forth-src/test-forth.fth,948
+: a-forth-worda-forth-word20,301
+99 constant a-forth-constant!a-forth-constant!22,343
+55 value a-forth-value?a-forth-value?23,373
+create :a-forth-dictionary-entry:a-forth-dictionary-entry24,397
+defer #a-defer-word#a-defer-word27,460
+: (another-forth-word)(another-forth-word)29,481
+   9   field   >field1>field136,582
+   5   field   >field2>field237,605
 constant (a-forth-constant(a-forth-constant38,628
-2000 buffer: #some-storage41,657
-code assemby-code-word 43,685
-: a-forth-word 50,870
+2000 buffer: #some-storage#some-storage41,657
+code assemby-code-wordassemby-code-word43,685
+: a-forth-worda-forth-word50,870
+: (foo)(foo)55,988
+: foofoo56,1000
+: create-barcreate-bar58,1015
+3 4 2constant 2const2const61,1074
+2const 2value 2val2val62,1095
+2variable 2var2var63,1114
+3.1415e fconstant fconstfconst65,1130
+fconst fvalue fvalfval66,1155
+fvariable fvarfvar67,1174
+synonym mypimypi69,1190
+BEGIN-STRUCTURE pointpoint71,1211
+  1 CELLS +FIELD p.xp.x72,1262
+  1 CELLS +FIELD p.yp.y73,1318
 
 go-src/test.go,48
 package main1,0
diff --git a/test/manual/etags/forth-src/test-forth.fth 
b/test/manual/etags/forth-src/test-forth.fth
index ce4069d..4521d32 100644
--- a/test/manual/etags/forth-src/test-forth.fth
+++ b/test/manual/etags/forth-src/test-forth.fth
@@ -51,3 +51,24 @@ c;
     a-forth-word dup 200 > abort" Eek.  The number is too big"
     ." Result is " . cr
 ;
+
+: (foo) 1 ;
+: foo (foo) ;
+
+: create-bar foo ;
+create-bar  \ Do NOT create a tag here
+
+3 4 2constant 2const
+2const 2value 2val
+2variable 2var
+
+3.1415e fconstant fconst
+fconst fvalue fval
+fvariable fvar
+
+synonym mypi fconst
+
+BEGIN-STRUCTURE point \ create the named structure
+  1 CELLS +FIELD p.x    \ A single cell filed named p.x
+  1 CELLS +FIELD p.y    \ A single cell field named p.y
+END-STRUCTURE
-- 
2.1.4


reply via email to

[Prev in Thread] Current Thread [Next in Thread]