123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- MODULE FoxOberonFrontend; (** AUTHOR "fof"; PURPOSE "Oberon Compiler: Oberon frontend module"; **)
- IMPORT
- Streams, Diagnostics, SyntaxTree := FoxSyntaxTree, Parser := FoxParser, Scanner := FoxScanner,FoxFrontend, Compiler;
- TYPE
- Frontend* = OBJECT (FoxFrontend.Frontend)
- VAR
- scanner: Scanner.Scanner;
- parser: Parser.Parser;
- PROCEDURE Initialize*(diagnostics: Diagnostics.Diagnostics; flags: SET; reader: Streams.Reader; CONST fileName, definitions: ARRAY OF CHAR; pos: LONGINT);
- BEGIN
- Initialize^(diagnostics, flags, reader, fileName, definitions, pos);
- scanner := Scanner.NewScanner(fileName, reader, pos, diagnostics);
- scanner.useLineNumbers := Compiler.UseLineNumbers IN flags;
- parser := Parser.NewParser( scanner, diagnostics, definitions );
- END Initialize;
- PROCEDURE Parse*(): SyntaxTree.Module;
- BEGIN
- RETURN parser.Module();
- END Parse;
- PROCEDURE Error*(): BOOLEAN;
- BEGIN
- RETURN parser.error;
- END Error;
- PROCEDURE Done*(): BOOLEAN;
- BEGIN
- RETURN ~parser.NextModule()
- END Done;
- END Frontend;
- PROCEDURE Get*():FoxFrontend.Frontend;
- VAR frontend: Frontend;
- BEGIN
- NEW(frontend);
- RETURN frontend;
- END Get;
- END FoxOberonFrontend.
|