[comp.lang.forth] LANGUAGE OF ANS FORTH

GEnie@willett.UUCP (ForthNet articles from GEnie) (12/19/89)

 Date: 12-17-89 (09:38)              Number: 328
   To: JERRY SHIFRIN                 Refer#: 326
 From: IAN GREEN                       Read: NO
 Subj: LANGUAGE OF ANS FORTH         Status: PUBLIC MESSAGE

    Yes that is the idea I was looking for. That and examples of code 
 relative to the syntax charts.

 >Actually, for reasons which are beyond me, CH Ting did do a BNF
 >for Forth. You can find it in his FORTH Notebook from Offete
 >Enterprises or in the 2/82 issue of Dr. Dobb's. As near as I can
 >tell, the BNF description of Forth should be something like:
   <word> ::= (<non-blank character> ... )
   <Forth program> ::= { <Forth program> [<word> ...]}


     If you or someone has the complete BNF syntax for Forth (I am 
 currently playing with L&Ps F83.COM). This I feel would go a long way 
 towards clarifying the way the language works.

 To be more in keeping with EBNF I would suspect that that Forth would 
 be defined something like:

 Program := { Word }            
 Word := ":" Identifier { Word | Number } ";"
  :          :
  :          :

 The problem is though I can write the syntax for a familiar language 
 fairly easily Forth is not so easily figured out.

 Thanks, Ian Green

 NET/Mail : British Columbia Forth Board - Burnaby BC - (604)434-5886   
 ------------
-----
This message came from GEnie via willett through a semi-automated program.
Report problems to: 'uunet!willett!dwp' or 'willett!dwp@gateway.sei.cmu.edu'

files@willett.UUCP (Mailed File Repository) (12/20/89)

 Date: 12-18-89 (23:34)              Number: 332 (Echo)
   To: IAN GREEN                     Refer#: 328
 From: SYSOP (ECFB/SHIFRIN)            Read: NO
 Subj: LANGUAGE OF ANS FORTH         Status: PUBLIC MESSAGE

 IG>    If you or someone has the complete BNF syntax for Forth (I am 
 IG>currently playing with L&Ps F83.COM). This I feel would go a long way 
 IG>towards clarifying the way the language works.

 Actually, Ian, the point I was trying to make is that Forth isn't
 usually willing to sit still long enough for someone to develop a
 detailed syntax. <grin>

 By that I mean that every Forth token is eligible for
 redefinition and may alter the syntax of itself and subsequent
 string.  For example, Forth programs may redefine or add IF or DO
 type control sructures, may redefine constants e.g.
         99 CONSTANT 5                     \ 5 now means 99!
 can even redefine existing functions in terms of themselves e.g.
         : DUP DUP ." DUPing " . CR DUP  ;  \ Trace uses of DUP
 and, in fact, can even redefine defining words like
         : CONSTANT CREATE ! DOES> @ DUP .S  ;
         : : : 1 #DEFS +! ;
 which redefines colon in terms of itself and adds a little
 counter.

 So, while you could get a BNF description of typical usage, it
 doesn't really define the language.
 ---
  * QDeLuxe 1.10 #214s

GEnie@willett.UUCP (ForthNet articles from GEnie) (12/21/89)

 Date: 12-19-89 (14:45)              Number: 333
   To: JERRY SHIFRIN                 Refer#: 332
 From: IAN GREEN                       Read: NO
 Subj: LANGUAGE OF ANS FORTH         Status: PUBLIC MESSAGE

    To be more clear what I guess I want is a EBNF of the primitives for 
 Forth, not the whole show. After all Forth, as I understand it, is built
 up from a small set of static words. These are what I need defined, not 
 an extended (obese) implementation.

 NET/Mail : British Columbia Forth Board - Burnaby BC - (604)434-5886   
-----
This message came from GEnie via willett through a semi-automated program.
Report problems to: 'uunet!willett!dwp' or 'willett!dwp@gateway.sei.cmu.edu'

ForthNet@willett.UUCP (ForthNet articles from GEnie) (01/06/90)

 Date: 12-22-89 (00:42)              Number: 335 (Echo)
   To: IAN GREEN                     Refer#: 333
 From: SYSOP (ECFB/SHIFRIN)            Read: NO
 Subj: LANGUAGE OF ANS FORTH         Status: PUBLIC MESSAGE

 IG>   To be more clear what I guess I want is a EBNF of the primitives for 
 IG>Forth, not the whole show. After all Forth, as I understand it, is built

 Ian, none of the Forth primitives affects the syntax of the
 language, believe it or not. The closest we get at the primitive
 level is BRANCH and 0BRANCH which is typical, but non-standard,
 or MARK and RESOLVE which is semi-standard.  None of these
 actually imposes a syntax, though they each can affect or imply a
 flow of control.

 For this to approach making sense, you have to understand that
 most Forths implement a virtual machine, one part of which is
 typically the IP or instruction pointer. The traditional Forth
 "inner interpreter" modifies the IP based on words like BRANCH
 which carry along an address offset.

 Does any of this help? probably not.
 ---
  * QDeLuxe 1.10 #214s
-----
This message came from GEnie via willett through a semi-automated program.
Report problems to: 'uunet!willett!dwp' or 'willett!dwp@gateway.sei.cmu.edu'

ForthNet@willett.UUCP (ForthNet articles from GEnie) (01/06/90)

 Date: 12-22-89 (17:32)              Number: 341
   To: JERRY SHIFRIN                 Refer#: 335
 From: IAN GREEN                       Read: NO
 Subj: LANGUAGE OF ANS FORTH         Status: PUBLIC MESSAGE

    Interesting. The reason for a formal definition is simple. This way 
 developers can design with a standard and be assured that code will run.
 As it is now I have difficulty learning the language because no two 
 Forths a totally compatible with one another.
    What I need is a clean clear formal standard in EBNF or other simular
 gramnmar description. Perhaps if I get time I will try to develope my 
 own formal definition and work from there.
    Perhaps a good place to start would be to define a Forth machine 
 standard that can execute Forth instructions. The question is what is 
 needed? Is this OK?

 TYPE ForthCPU = RECORD
        CC: CARDINAL;      (* condition code register *)
        IP: CARDINAL;      (* Instruction pointer *)
        RS: CARDINAL;      (* return stack *)
        DS: CARDINAL;      (* data stack *)
    END;

 My question is this. What other 'registers' do I need?

 After that what are the bare minimum words that the 'machine' has to 
 know? (execute)
 From there other words can be added in terms of the original 'machine' 
 instructions. This is the idea I think is best. Comments?

 NET/Mail : British Columbia Forth Board - Burnaby BC - (604)434-5886   
-----
This message came from GEnie via willett through a semi-automated program.
Report problems to: 'uunet!willett!dwp' or 'willett!dwp@gateway.sei.cmu.edu'

ForthNet@willett.UUCP (ForthNet articles from GEnie) (01/06/90)

 Date: 12-23-89 (14:21)              Number: 342 (Echo)
   To: IAN GREEN                     Refer#: 341
 From: SYSOP (ECFB/SHIFRIN)            Read: NO
 Subj: LANGUAGE OF ANS FORTH         Status: PUBLIC MESSAGE

 IG>After that what are the bare minimum words that the 'machine' has to 
 IG>know? (execute)

 The point is that the syntax of Forth is trivial; it's the
 semantics of a handful of words which make Forth Forth. I think
 Chuck once proposed a dozen or so words as the minimum necessary,
 perhaps in a file here, but I don't recall for certain.
 ---
  * QDeLuxe 1.10 #214s
-----
This message came from GEnie via willett through a semi-automated program.
Report problems to: 'uunet!willett!dwp' or 'willett!dwp@gateway.sei.cmu.edu'

ForthNet@willett.UUCP (ForthNet articles from GEnie) (01/06/90)

 Date: 12-24-89 (09:26)              Number: 349
   To: JERRY SHIFRIN                 Refer#: 342
 From: IAN GREEN                       Read: NO
 Subj: LANGUAGE OF ANS FORTH         Status: PUBLIC MESSAGE

 >IG>After that what are the bare minimum words that the 'machine' has to
 >IG>know? (execute)
 >
 >The point is that the syntax of Forth is trivial; it's the
 >semantics of a handful of words which make Forth Forth. I think
 >Chuck once proposed a dozen or so words as the minimum necessary,
 >perhaps in a file here, but I don't recall for certain.

    Perhaps you could list the words I need to  start up the project. I 
 will of cource need the corresponding semantics for each word. The goal 
 is to write a Forth (minimal) in Modula-2 so that I can ultimately 
 understand what makes Forth what it is. At the same time it would be 
 reasonable simple (one the kernal is implementated) to move the 
 implemenattion over to another platform.
    I guess by now you realize I am not much of a Forther so I often ask 
 what maye be stupid questions. Still I am a good programmer, I just 
 haven't made it very far down the Forth learning curve.

 NET/Mail : British Columbia Forth Board - Burnaby BC - (604)434-5886   
-----
This message came from GEnie via willett through a semi-automated program.
Report problems to: 'uunet!willett!dwp' or 'willett!dwp@gateway.sei.cmu.edu'