This is COWS Interpreter Parsing Grammar.rtf in view mode; [Download] [Up]
Copyright © 1994 by Sean Luke COWS Interpreter Parser Grammar COWS Version 1.4 March 20, 1994 This file describes the grammar used by the COWS Interpreter when it parses through code, breaking the code into functions and global variables. It should give you a peek into how the parser's private methods work. Special Functions The following methods do special things along with parsing: ¨ variablelist loads globals into global_dictionary. ¨ localvariablelist loads variables into a local dictionary. ¨ argumentlist loads arguments into a local argument list. ¨ itemlist grabs the remainder of the function. ¨ functionform loads arguments from the argument list into the local dictionary and puts the local dictionary and item list into function_dictionary. Non-Terminals program :- <programlist> programlist :- EOF | <globalform> <programlist> | <functionform> <programlist> globalform :- ( <globalkeyword> <variablelist> ) functionform :- (function <functionname> <argumentlist> variable <localvariablelist> do <itemlist> | (function <functionname> <argumentlist> do <itemlist> variablelist :- <symbolname> <variablelist> | NULL localvariablelist :- <symbolname> <localvariablelist> | NULL argumentlist :- <symbolname> <argumentlist> | NULL itemlist :-<item>* ) note I use a while-loop here. Less recursive. item :-<atom> | ( <itemlist> Terminals ¨ globalkeyword is the word "variable". ¨ functionkeyword is the word "function". ¨ symbolname is any non-string, non-truth, non-number, non-keyword, non-delimiter. ¨ atom is any non-delimiter.
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.