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