/** * Main module for parsing PHP sources for version 4 and 5. * * @author Eric Bouwers */ module php/parse/main imports php/parse/options php/parse/tables php/parse/postprocess /** * Actual parse strategies. There are strtegies for: * - files * - streams * - strings */ strategies /** * @type FILE -> Document or TemplateDocument */ parse-php = parse-php(|<get-start-symbol>) parse-php(|symbol) = where(?FILE(name) ; <set-current-php-file> name) // current file being processed ; parse-xtc-file-pt-report-errors(|<get-parse-table(|symbol); php-open-parse-table>, symbol) ; process-parse-php-options /** * @type FILE -> Document or TemplateDocument */ parse-php4 = using-php4(parse-php) /** * @type FILE -> Document or TemplateDocument */ parse-php5 = using-php5(parse-php) /** * @type String -> Document or TemplateDocument */ parse-php4-string = using-php4(parse-php-string) /** * @type String -> Document or TemplateDocument * @param Symbol (String or None()) */ parse-php4-string(|symbol) = using-php4(parse-php-string(|symbol)) /** * @type String -> Document or TemplateDocument */ parse-php5-string = using-php5(parse-php-string) /** * @type String -> Document or TemplateDocument * @param Symbol (String or None()) */ parse-php5-string(|symbol) = using-php5(parse-php-string(|symbol)) /** * Parses a PHP string using the default start symbol. * * @type String -> Document or TemplateDocument */ parse-php-string = parse-php-string(|<get-start-symbol>) /** * Parses a PHP string using the given start symbol. * * @param Symbol (String or None()) * @type String -> Start symbol */ parse-php-string(|symbol) = parse-string(|<get-parse-table(|symbol) ; php-open-parse-table>, symbol) ; post-process-structures strategies /** * Parses a stream with PHP-source to a Document * * @type Stream -> Document or TemplateDocument */ parse-php-stream = parse-php-stream(|<get-input-path>) /** * Parses a stream with PHP-source to a Document * * @param path The path to the stream * @type Stream -> Document or TemplateDocument */ parse-php-stream(|path) = parse-php-stream(|<get-start-symbol>,path) /** * Parses a stream with PHP-source to the given * start symbol. * * @param symbol The start symbol to use * @param path The path to the stream * @type Stream -> Document or Start symbol */ parse-php-stream(|symbol,path) = log(|Debug(), "Parsing file: ", path) ;parse-stream-pt(strsglr-report-parse-error | <get-parse-table(|symbol) ; php-open-parse-table> , symbol , path) ;process-parse-php-options /** * @type STREAM -> Document or TemplateDocument */ parse-php4-stream = using-php4(parse-php-stream) /** * @type STREAM -> Document or TemplateDocument */ parse-php5-stream = using-php5(parse-php-stream) /** * Processes a php stream. Matches the input- and output-streams, * applies the given strategy and prints the result in the right * format. * * @type (Stream, Stream) -> (Stream, Stream) */ process-php-stream(s) = ?(<id>, fout) ; s ; if <get-config> "-b" then <write-in-baf-to-stream> (fout, <id>) else <fprint> (fout, [<id>]) end