-- PGS.model
-- Copyright (c) 1985 by Xerox Corporation.  All rights reserved.
-- last edit by Satterthwaite, May 30, 1986 12:21:05 pm PDT

LET @///SML/OSBasics.modelBcd!581021414 IN 
LET @///SML/CedarBasics.modelBcd!581021540 IN 
LET @///SML/LoaderBasics.modelBcd!581021616 IN 
LET [
    ConvertUnsafe: TYPE~@/Cedar/Cedar6.1/Rope/ConvertUnsafe.bcd!541570785, 
    ProcessorFace: TYPE~@/Cedar/Cedar6.1/Heads/ProcessorFace.bcd!541571125, 
    RuntimeError: TYPE~@/Cedar/Cedar6.1/MesaRuntime/RuntimeError.bcd!541570482, 
    SymbolTable: TYPE~@/Cedar/Cedar6.1/BcdStuff/SymbolTable.bcd!541573286, 
    UnsafeStorage: TYPE~
      @/Cedar/Cedar6.1/SafeStorage/UnsafeStorage.bcd!541573222] IN 

LAMBDA [
    AsciiImpl: Ascii, 
    BasicsImpl: Basics, 
    BasicTimeImpl: BasicTime, 
    CommanderImpl: Commander, 
    ConvertUnsafeImpl: ConvertUnsafe, 
    FSImpl: FS, 
    IOImpl: IO, 
    LoaderImpl: Loader, 
    PrincOpsUtilsImpl: PrincOpsUtils, 
    ProcessorFaceImpl: ProcessorFace, 
    RopeImpl: Rope, 
    RuntimeErrorImpl: RuntimeError, 
    SymbolTableImpl: SymbolTable, 
    UnsafeStorageImpl: UnsafeStorage, 
    VMImpl: VM] IN 
  
  LET REC [
      
      &options: STRING~"j-b-ns"; 
      --&options: STRING~"j-b-n"; 
      
      -- these come from BasicLoadState.df
      -- Table: TYPE~@Table.mesa!541530693*["s-z"]; 
      -- BcdDefs: TYPE~@BcdDefs.mesa!541530938*["s-z"]; 
      FileSegment: TYPE~@/Cedar/Cedar6.1/BcdStuff/FileSegment.bcd!541573263; 
      
      OSMiscOps: TYPE~@///compiler/OSMiscOps.mesa!563132423*[]; 
      OSMiscOpsImpl: OSMiscOps~@///compiler/OSMiscOpsImpl.mesa!577672349*[]*[]; 
      CommandUtil: TYPE~@///compiler/CommandUtil.mesa!542181810*[]; 
      CommandUtilImpl: CommandUtil~
        @///compiler/CommandPack.mesa!542204761*[]*[]; 
      
      PGSOps: TYPE~@PGSOps.mesa!561515078*[]; 
      PGSTypes: TYPE~@PGSTypes.mesa!561515273*[]; 
      PGSConDefs: TYPE~@PGSConDefs.mesa!561515530*[]; 
      
      Formatter: PGSConDefs~@PGSFormat.mesa!561515929*[]*[]; 
      
      ParseTable: TYPE ParseTable~@PGSParseTable.mesa!580586105*[]; 
      P1: TYPE P1~@///Binder/ProtoP1.mesa!571097911*[]; 
      [PGSParseData: TYPE, PGSParseDataImpl: PGSParseData]~
        @PGSParseData.bcd!580326020*[]; 
      Parser:~
        REC [
          [P1ScanImpl: P1, ControlImpl: PGSConDefs]~
            @PGSScan.mesa!580586099*[]*[]; 
          P1Impl: P1~P1ScanImpl + @///Compiler/ProtoParser.mesa!580755205*[]*[]]; 
      P1Impl: P1~Parser.P1Impl; 
      
      LALRImpl: PGSConDefs~@PGSLALR.mesa!561516443*[]*[]; 
      
      TablesImpl: PGSConDefs~@PGSTab.mesa!561662654*[]*[]; 
      
      BcdImpl: PGSConDefs~
        REC [
          Symbols: TYPE~@/Cedar/Cedar6.1/BcdStuff/Symbols.bcd!541573249; 
          TableCommand: TYPE~@TableCommand.mesa!543261365*[]; 
          
          SymbolInput: TableCommand~@TableSymbols.mesa!543261856*[]*[]; 
          
          SymbolOutput: PGSConDefs~
            REC [
              Alloc: TYPE~@///Compiler/InternalAlloc.mesa!561081477*[]; 
              AllocImpl: Alloc~
                @///Compiler/InternalAllocImpl.mesa!561081501*[]*[]; 
              BcdDefs: TYPE~@///Compiler/InternalBcdDefs.mesa!564432582*[]; 
              Bcd:~@///Compiler/InternalBcdStuff.modelBcd!581022104; 
              Tree: TYPE~Bcd.Tree*[]; 
              Literals: TYPE~Bcd.Literals*[]; 
              Symbols: TYPE~Bcd.Symbols*[]; 
              SymbolSegment: TYPE~Bcd.SymbolSegment*[]; 
              SymbolOps: TYPE~Bcd.SymbolOps*[]; 
              [
              SymbolPack: TYPE, SymbolPackImpl: SymbolPack, 
              SymbolOpsBase: SymbolOps]~Bcd.SymbolPack*[]*[]; 
              SymbolOpsImpl: SymbolOps~
                SymbolOpsBase + Bcd.SymbolPackExt*[]*[own:~SymbolPackImpl]; 
              OutputImpl: PGSConDefs~@PGSSymbols.mesa!577404561*[]*[]].OutputImpl; 
          
          ControlImpl: PGSConDefs~
            @PGSBcd.mesa!561661754*[]*[TableCommandImpl:~SymbolInput] 
              + SymbolOutput].ControlImpl; 
      
      [ControlImpl: PGSConDefs, PGSOpsImpl: PGSOps]~
        @PGSControl.mesa!561662440*[]*[]; 
      
      PGSConDefsImpl: PGSConDefs~
        Formatter + Parser.ControlImpl + LALRImpl + TablesImpl + BcdImpl 
          + ControlImpl; 
      
      PGS: CONTROL~@PGSInterface.mesa!561510092*[]*[]] IN []