FoxCSharpFrontend.Mod 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. MODULE FoxCSharpFrontend; (** AUTHOR "fof"; PURPOSE "Oberon Compiler: CSharp frontend module"; **)
  2. IMPORT
  3. Streams, Diagnostics, SyntaxTree := FoxSyntaxTree, Parser := FoxCSharpParser, Scanner := FoxCSharpScanner, FoxFrontend;
  4. TYPE
  5. Frontend* = OBJECT (FoxFrontend.Frontend)
  6. VAR
  7. scanner: Scanner.Scanner;
  8. parser: Parser.Parser;
  9. PROCEDURE Initialize*(diagnostics: Diagnostics.Diagnostics; flags: SET; reader: Streams.Reader; CONST fileName: ARRAY OF CHAR; pos: LONGINT);
  10. BEGIN
  11. Initialize^(diagnostics, flags, reader, fileName, pos);
  12. scanner := Scanner.NewScanner(fileName, reader, pos, diagnostics);
  13. parser := Parser.NewParser( scanner, diagnostics );
  14. END Initialize;
  15. PROCEDURE Parse*(): SyntaxTree.Module;
  16. BEGIN
  17. RETURN parser.Module();
  18. END Parse;
  19. PROCEDURE Error(): BOOLEAN;
  20. BEGIN
  21. RETURN parser.error;
  22. END Error;
  23. END Frontend;
  24. PROCEDURE Get*():FoxFrontend.Frontend;
  25. VAR frontend: Frontend;
  26. BEGIN
  27. NEW(frontend);
  28. RETURN frontend;
  29. END Get;
  30. END FoxCSharpFrontend.