gen_peg_ser.tcl

Go to the documentation of this file.
00001 /*  -*- tcl -*-*/
00002 /* */
00003 /*  Copyright (c) 2005 by Andreas Kupries <andreas_kupries@users.sourceforge.net>*/
00004 /*  Parser Generator / Backend - PEG as serialized PEG container.*/
00005 
00006 /*  ### ### ### ######### ######### #########*/
00007 /*  Requisites*/
00008 
00009 package require grammar::peg
00010 package require page::util::quote
00011 package require page::util::peg
00012 
00013 namespace ::page::gen::peg::ser {
00014     /*  Get the peg char de/encoder commands.*/
00015     /*  (unquote, quote'tcl), and other utilities.*/
00016 
00017     namespace import ::page::util::quote::*
00018     namespace import ::page::util::peg::*
00019 }
00020 
00021 /*  ### ### ### ######### ######### #########*/
00022 /*  API*/
00023 
00024 ret  ::page::gen::peg::ser (type t , type chan) {
00025     ser::printWarnings [ser::getWarnings $t]
00026 
00027     ::grammar::peg gr
00028 
00029     set gstart [$t get root start]
00030     if {$gstart ne ""} {
00031     gr start [ser::peOf $t $gstart]
00032     } else {
00033     page_info "No start expression."
00034     }
00035 
00036     foreach {sym def} [$t get root definitions] {
00037     set eroot [lindex [$t children $def] 0]
00038 
00039     gr nonterminal add  $sym [ser::peOf $t $eroot]
00040     gr nonterminal mode $sym [$t get $def mode]
00041     }
00042 
00043     puts $chan [gr serialize]
00044     gr destroy
00045     return
00046 }
00047 
00048 /*  ### ### ### ######### ######### #########*/
00049 /*  Internal. Helpers*/
00050 
00051 ret  ::page::gen::peg::ser::GetRules (type t) {
00052     return $res
00053 }
00054 
00055 /*  ### ### ### ######### ######### #########*/
00056 /*  Internal. Strings.*/
00057 
00058 namespace ::page::gen::peg::ser {}
00059 
00060 /*  ### ### ### ######### ######### #########*/
00061 /*  Ready*/
00062 
00063 package provide page::gen::peg::ser 0.1
00064 

Generated on 21 Sep 2010 for Gui by  doxygen 1.6.1