CoCoA:Grammar: Difference between revisions

From ApCoCoAWiki
Fran (talk | contribs)
No edit summary
Fran (talk | contribs)
No edit summary
Line 23: Line 23:
         {{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]] ::=

Revision as of 13:54, 6 June 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
   | Declare [TYPE] IDENTIFIER ,
   | 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