# ACTIVESTATE TEAPOT-PKG BEGIN TM -*- tcl -*- # -- Tcl Module # @@ Meta Begin # Package page::gen::peg::ser 0.1 # Meta as::build::date 2015-05-25 # Meta as::origin http://sourceforge.net/projects/tcllib # Meta license BSD # Meta platform tcl # Meta require grammar::peg # Meta require page::util::peg # Meta require page::util::quote # @@ Meta End # ACTIVESTATE TEAPOT-PKG BEGIN REQUIREMENTS package require grammar::peg package require page::util::peg package require page::util::quote # ACTIVESTATE TEAPOT-PKG END REQUIREMENTS # ACTIVESTATE TEAPOT-PKG BEGIN DECLARE package provide page::gen::peg::ser 0.1 # ACTIVESTATE TEAPOT-PKG END DECLARE # ACTIVESTATE TEAPOT-PKG END TM # -*- tcl -*- # # Copyright (c) 2005 by Andreas Kupries # Parser Generator / Backend - PEG as serialized PEG container. # ### ### ### ######### ######### ######### ## Requisites package require grammar::peg package require page::util::quote package require page::util::peg namespace eval ::page::gen::peg::ser { # Get the peg char de/encoder commands. # (unquote, quote'tcl), and other utilities. namespace import ::page::util::quote::* namespace import ::page::util::peg::* } # ### ### ### ######### ######### ######### ## API proc ::page::gen::peg::ser {t chan} { ser::printWarnings [ser::getWarnings $t] ::grammar::peg gr set gstart [$t get root start] if {$gstart ne ""} { gr start [ser::peOf $t $gstart] } else { page_info "No start expression." } foreach {sym def} [$t get root definitions] { set eroot [lindex [$t children $def] 0] gr nonterminal add $sym [ser::peOf $t $eroot] gr nonterminal mode $sym [$t get $def mode] } puts $chan [gr serialize] gr destroy return } # ### ### ### ######### ######### ######### ## Internal. Helpers proc ::page::gen::peg::ser::GetRules {t} { return $res } # ### ### ### ######### ######### ######### ## Internal. Strings. namespace eval ::page::gen::peg::ser {} # ### ### ### ######### ######### ######### ## Ready package provide page::gen::peg::ser 0.1