| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330 |
- (* Pasta80 Pascal-S ATG for Coco/R *)
- (* Ported from Arzu/Terry Coco/R-Turbo Pascal-S (1996-97);
- actions and attributes stripped for V1.53 *)
- COMPILER Pasta80
- IGNORE CASE
- IGNORE CHR(1) .. CHR(32)
- COMMENTS FROM "(*" TO "*)"
- COMMENTS FROM "{" TO "}"
- CHARACTERS
- digit = "0123456789" .
- letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" .
- noQuote1 = ANY - "'" - CHR(13) .
- TOKENS
- ident = letter { letter | digit } .
- pnumber = digit { digit } | digit { digit } CONTEXT ( ".." ) .
- preal = digit { digit } "." digit { digit }
- | digit { digit } "." digit { digit } "E" [ "+" | "-" ] digit { digit } .
- pstring = "'" { noQuote1 | "''" } "'" .
- PRODUCTIONS
- Pasta80
- =
- "PROGRAM" Ident
- [ "(" ident {"," ident }
- ")"
- ]
- Block
- "."
- .
- Block
-
- =
- [ "(" ParameterList
- ")" ]
- [ ":" Ident
- ]
- ";"
- { ConstDecl
- | TypeDecl
- | VarDecl
- | ProcDecl
- }
- SYNC
- "BEGIN"
- [ Statement
- { ";" [ Statement ] } ]
- "END"
- .
- Statement
- = AssignCallStat
- | CompStat
- | CaseStat
- | IfStat
- | WhileStat
- | RepeatStat
- | ForStat
- | StandardProc
- .
- AssignCallStat
- =
- Ident
- { Selector }
- ( ":=" Expression
- |
- [ ActualParams ]
-
- )
- .
- CompStat
- = "BEGIN" [ Statement { ";" [ Statement ] } ] "END" .
- IfStat
- = "IF" Expression
- "THEN" Statement
- ( "ELSE"
- Statement
- | (* empty *)
- )
- .
- RepeatStat
- = "REPEAT"
- [ Statement { ";" [ Statement ] } ]
- "UNTIL"
- Expression
- .
- WhileStat
- = "WHILE"
- Expression
- "DO"
- Statement
- .
- ForStat
- = "FOR" Ident
- ":=" Expression
- ( "TO"
- | "DOWNTO"
- )
- Expression
- "DO"
- Statement
- .
- StandardProc
- = "READ" [ "(" ReadArg {"," ReadArg} ")" ]
- | "READLN" [ "(" ReadArg {"," ReadArg} ")" ]
- | "WRITE" [ "(" WriteArg {"," WriteArg} ")" ]
- | "WRITELN" [ "(" WriteArg {"," WriteArg} ")" ]
- .
- CaseStat = "CASE" Expression "OF" [ CaseItem { ";" [ CaseItem ] } ] "END" .
- CaseItem = CaseLabels ":" Statement .
- CaseLabels = CaseLabel { "," CaseLabel } .
- CaseLabel = pnumber | ident | pstring .
- ReadArg
- = Ident
- { Selector }
- .
- WriteArg = Expression [ ":" Expression [ ":" Expression ] ] .
- Selector
- = "." Ident
- | "["
- Expression
- { ","
- Expression
- }
- "]"
- .
- ActualParams
-
- = "("
- Expression
-
- { ","
- Expression
-
- }
- ")"
- .
- Expression
-
- = SimpExpr
- { RelOp
- SimpExpr
- }
- .
- SimpExpr
-
- =
- [ "+" | "-"
- ]
- Term
- { AddOp
- Term
- }
- .
- Term
-
- = Factor
- { MultOp
- Factor
- }
- .
- Factor
-
- =
- Ident
- ( Selector
- { Selector
- }
- | ActualParams
-
- | (*empty bug fix pdt *)
- )
- | RealConst
- | IntConst
- | ChrConst
- | "(" Expression ")"
- | "NOT" Factor
- .
- RelOp
- = "="
- | "<>"
- | "<"
- | "<="
- | ">"
- | ">="
- .
- AddOp
- = "+"
- | "-"
- | "OR"
- .
- MultOp
- = "DIV"
- | "MOD"
- | "AND"
- | "/"
- | "*"
- .
- ProcDecl
- = (
- "PROCEDURE" Ident
- | "FUNCTION" Ident
- )
- Block
- ";"
- .
- VarDecl
-
- = "VAR"
- {
- Ident
- { "," Ident
- }
- ":" Typ
- ";"
- }
- .
- ArrayTyp
- =
- Const
- ".." Const
- ( "," ArrayTyp
- | "]" "OF" Typ
- )
- .
- Typ
- =
- Ident
- | "ARRAY" "[" ArrayTyp
- | "RECORD"
- [ RecField { ";" [ RecField ] } ]
- "END"
- .
- ParameterList
- = ParameterItem
- { ";" [ ParameterItem ] }
- .
- RecField = Ident { "," Ident } ":" Typ .
- ParameterItem
- =
- ("VAR"
- |
- )
- Ident
- { "," Ident
- }
- ":"
- Ident
- .
- ConstDecl
- = "CONST"
- { Ident
- "="
- Const
- ";"
- }
- .
- TypeDecl
- = "TYPE"
- { Ident
- "="
- Typ
- ";"
- }
- .
- Const
- =
- (
- ChrConst
- | [ "+" | "-"
- ]
- ( Ident
- | IntConst
- | RealConst
- )
- )
- .
- Ident
- = ident
- .
- IntConst
- = pnumber
- .
- RealConst = preal .
- ChrConst
- = pstring
- .
- END Pasta80.
|