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 | ||
− | + | | [[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