# File kwartz.rb, line 4210
        def self.analyze(pdata_str, plogic_str, toppings)
            converter  = Kwartz::DefaultConverter.new(pdata_str)
            scanner    = Kwartz::Scanner.new(converter.convert() + plogic_str)
            parser     = Kwartz::Parser.new(scanner)
            nodelist   = parser.parse()
            analyzer   = Kwartz::Analyzer.new(nodelist)
            analyzer.analyze()
            newline    = scanner.newline
            s = ''
            analyzer.warnings.each do |message|
                s << '*** warning: ' << message << newline
            end
            s << "global variables:"
            analyzer.globals.each { |varname| s << ' ' << varname }
            s << newline
            s << "local variables: "
            analyzer.locals.each { |varname| s << ' ' << varname }
            s << newline
            return s
        end