CoCoA:Grammar

From ApCoCoAWiki
Revision as of 09:17, 20 May 2006 by Fran (talk | contribs) (Initial C5 grammar)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Base grammar

A few rules to start the formal language definition. (They will slowly get more readable as soon as I get confidence with the wiki)

PROGRAM ::= <COMMAND> |

COMMAND ::= HELP_QUERY \newline | PACKAGE_DECL | FUNCTION_DECL | STATEMENT;

HELP_QUERY ::= ? <*>

PACKAGE_DECL ::= Package PACKAGE_ID <FUNCTION_DECL> End[Package]

FUNCTION_DECL ::= Define IDENTIFIER(PARAMS) STATEMENTS End[Define] | Define [Internal/External] IDENTIFIER(PARAMS)

PARAMS ::= <PARAM ,>

PARAM ::= [TYPE] IDENTIFIER

STATEMENT ::= \lambda | ASSIGNMENT | EXPRESSION | [[FUNCTION_CALL] | Return [[[EXPRESSION]]] | Print EXPRESSIONS | PrintLn [[[EXPRESSIONS]] | If EXPRESSION Then STATEMENTS [[[ELSE_LIST]]] End[If] | While EXPRESSION Do STATEMENTS End[While] | Repeat STATEMENTS Until EXPRESSION | For IDENTIFIER := EXPRESSION To EXPRESSION Step EXPRESSION Do STATEMENTS End[For] | ForEach IDENTIFIER In EXPRESSION Do STATEMENTS End[ForEach] | Break | Block STATEMENTS End[Block] | 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