Component Pascal - Syntax

Syntax

The full syntax for CP, as given by the Language Report, is shown below. Note that in the extended Backus–Naur form only 34 grammatical productions are required, just one more than for Oberon-2, although it is a rather more advanced language.

Module = MODULE ident ";" DeclSeq END ident ".". ImportList = IMPORT ident {"," ident} ";". DeclSeq = { CONST {ConstDecl ";" } | TYPE {TypeDecl ";"} | VAR {VarDecl ";"}} { ProcDecl ";" | ForwardDecl ";"}. ConstDecl = IdentDef "=" ConstExpr. TypeDecl = IdentDef "=" Type. VarDecl = IdentList ":" Type. ProcDecl = PROCEDURE IdentDef MethAttributes END ident]. MethAttributes = . ForwardDecl = PROCEDURE "^" IdentDef MethAttributes. FormalPars = "(" ")" . FPSection = ident {"," ident} ":" Type. Receiver = "(" ident ":" ident ")". Type = Qualident | ARRAY OF Type | RECORD FieldList {";" FieldList} END | POINTER TO Type | PROCEDURE . FieldList = . StatementSeq = Statement {";" Statement}. Statement = [ Designator ":=" Expr | Designator ")"] | IF Expr THEN StatementSeq {ELSIF Expr THEN StatementSeq} END | CASE Expr OF Case {"|" Case} END | WHILE Expr DO StatementSeq END | REPEAT StatementSeq UNTIL Expr | FOR ident ":=" Expr TO Expr DO StatementSeq END | LOOP StatementSeq END | WITH {"|" } END | EXIT | RETURN ]. Case = . CaseLabels = ConstExpr . Guard = Qualident ":" Qualident. ConstExpr = Expr. Expr = SimpleExpr . SimpleExpr = Term {AddOp Term}. Term = Factor {MulOp Factor}. Factor = Designator | number | character | string | NIL | Set | "(" Expr ")" | " ~ " Factor. Set = "{" "}". Element = Expr . Relation = "=" | "#" | "<" | "<=" | ">" | ">=" | IN | IS. AddOp = "+" | "-" | OR. MulOp = "*" | "/" | DIV | MOD | "&". Designator = Qualident {"." ident | "" | "^" | "(" Qualident ")" | "(" ")"} . ExprList = Expr {"," Expr}. IdentList = IdentDef {"," IdentDef}. Qualident = ident. IdentDef = ident .

Read more about this topic:  Component Pascal