Difference between revisions of "CoCoA:Grammar"

From ApCoCoAWiki
(tidying up the wiki...)
 
(8 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
A few rules to start the formal language definition.
 
A few rules to start the formal language definition.
  
  [[PROGRAM]] ::= {{flist|[[COMMAND]]}} | <math>\Lambda</math>
+
  [[CoCoA:Grammar/Program|PROGRAM]] ::= {{flist|[[CoCoA:Grammar/Command|COMMAND]]}} | <math>\Lambda</math>
  
  [[COMMAND]] ::= [[HELP_QUERY]] ''newline''
+
  [[CoCoA:Grammar/Command|COMMAND]] ::= [[HELP_QUERY]] ''newline''
 
     | [[COMMENT]]
 
     | [[COMMENT]]
     | [[PACKAGE_DECL]]
+
     | [[CoCoA:Grammar/Package|PACKAGE_DECL]]
 
     | [[FUNCTION_DECL]]
 
     | [[FUNCTION_DECL]]
 
     | [[STATEMENT]];
 
     | [[STATEMENT]];
Line 17: Line 17:
 
     | '''/*''' {{flist|*}} '''*/'''
 
     | '''/*''' {{flist|*}} '''*/'''
  
  [[PACKAGE_DECL]] ::=
+
  [[CoCoA:Grammar/Package|PACKAGE_DECL]] ::=
 
       Package [[PACKAGE_ID]]
 
       Package [[PACKAGE_ID]]
         {{fopt|{{flist|[[EXPORT_DECL]]}}}}
+
         {{fopt|{{flist|[[EXPORT_DECL]] ;}}}}
         {{fopt|{{flist|[[VARIABLE_DECL]]}}}}
+
         {{fopt|{{flist|[[VARIABLE_DECL]] ;}}}}
 
         {{fopt|{{flist|[[FUNCTION_DECL]]}}}}
 
         {{fopt|{{flist|[[FUNCTION_DECL]]}}}}
 
       EndPackage
 
       EndPackage
 +
 +
[[EXPORT_DECL]] ::= Export {{flist|[[IDENTIFIER]] ,}};
 +
 +
[[VARIABLE_DECL]] ::= Declare {{flist|{{fopt|[[TYPE]]}} [[IDENTIFIER]] ,}};
  
 
  [[FUNCTION_DECL]] ::=
 
  [[FUNCTION_DECL]] ::=
Line 50: Line 54:
 
     | Break
 
     | Break
 
     | Block [[STATEMENTS]] EndBlock
 
     | Block [[STATEMENTS]] EndBlock
     | Declare {{fopt|[[TYPE]]}} {{flist|[[IDENTIFIER]] ,}}
+
     | [[VARIABLE_DECL]]
 
     | Delete {{flist|[[IDENTIFIER]] ,}}
 
     | Delete {{flist|[[IDENTIFIER]] ,}}
 
     | Quit
 
     | Quit
Line 63: Line 67:
  
 
  [[FUNCTION_ID]] ::= [[IDENTIFIER]] | [[EXPRESSION]]'''.'''[[IDENTIFIER]] | [[PACKAGE_ID]]'''.'''[[IDENTIFIER]]
 
  [[FUNCTION_ID]] ::= [[IDENTIFIER]] | [[EXPRESSION]]'''.'''[[IDENTIFIER]] | [[PACKAGE_ID]]'''.'''[[IDENTIFIER]]
 +
 +
[[Category:CoCoA5Client]]

Latest revision as of 17:34, 20 October 2007

Base grammar

A few rules to start the formal language definition.

PROGRAM ::= COMMAND | 
COMMAND ::= HELP_QUERY newline
   | COMMENT
   | PACKAGE_DECL
   | FUNCTION_DECL
   | STATEMENT;
HELP_QUERY ::= ? *
COMMENT ::= -- * newline
   | // * newline
   | /* * */
PACKAGE_DECL ::=
     Package PACKAGE_ID
       EXPORT_DECL ;
       VARIABLE_DECL ;
       FUNCTION_DECL
     EndPackage
EXPORT_DECL ::= Export IDENTIFIER ,;
VARIABLE_DECL ::= Declare TYPE IDENTIFIER ,;
FUNCTION_DECL ::=
     Define IDENTIFIER( PARAMS ) STATEMENTS EndDefine
   | Define IDENTIFIER( PARAMS ) BuiltIn
   | Define IDENTIFIER( PARAMS ) PlugIn
PARAMS ::= PARAM ,
PARAM ::= TYPE IDENTIFIER
STATEMENTS ::= STATEMENT ;
STATEMENT ::= 
   | ASSIGNMENT
   | EXPRESSION
   | FUNCTION_CALL
   | Return EXPRESSION
   | Print EXPRESSIONS
   | PrintLn EXPRESSIONS
   | If EXPRESSION Then STATEMENTS ELSE_LIST EndIf
   | While EXPRESSION Do STATEMENTS EndWhile
   | Repeat STATEMENTS Until EXPRESSION
   | For IDENTIFIER := EXPRESSION To EXPRESSION Step EXPRESSION
   	Do STATEMENTS EndFor
   | ForEach IDENTIFIER In EXPRESSION Do STATEMENTS EndForEach
   | Break
   | Block STATEMENTS EndBlock
   | VARIABLE_DECL
   | Delete IDENTIFIER ,
   | Quit
ASSIGNMENT ::= LEFT_EXPRESSION := EXPRESSION
LEFT_EXPR ::= IDENTIFIER
	| LEFT_EXPR.IDENTIFIER
	| LEFT_EXPR.[EXPRESSION ,]
FUNCTION_CALL ::= FUNCTION_ID( EXPRESSION , )
FUNCTION_ID ::= IDENTIFIER | EXPRESSION.IDENTIFIER | PACKAGE_ID.IDENTIFIER