## -*- tcl -*-
##
## OO-based Tcl/PARAM implementation of the parsing
## expression grammar
##
##	TEMPLATE
##
## Generated from file	TEST
##            for user  unknown
##
# # ## ### ##### ######## ############# #####################
## Requirements

package require Tcl 8.5 9
package require TclOO
package require pt::rde::oo ; # OO-based implementation of the
			      # PARAM virtual machine
			      # underlying the Tcl/PARAM code
			      # used below.

# # ## ### ##### ######## ############# #####################
##

oo::class create PARSER {
    # # ## ### ##### ######## #############
    ## Public API

    superclass pt::rde::oo ; # TODO - Define this class.
                             # Or can we inherit from a snit
                             # class too ?

    method parse {channel} {
	my reset $channel
	my MAIN ; # Entrypoint for the generated code.
	return [my complete]
    }

    method parset {text} {
	my reset {}
	my data $text
	my MAIN ; # Entrypoint for the generated code.
	return [my complete]
    }

    # # ## ### ###### ######## #############
    ## BEGIN of GENERATED CODE. DO NOT EDIT.

    #
    # Grammar Start Expression
    #
    
    method MAIN {} {
        my sym_Expression
        return
    }
    
    #
    # value Symbol 'Expression'
    #
    
    method sym_Expression {} {
        # (Function)
    
        my si:value_symbol_start Expression
        my sym_Function
        my si:reduce_symbol_end Expression
        return
    }
    
    #
    # value Symbol 'Function'
    #
    
    method sym_Function {} {
        # (Sinus)
    
        my si:value_symbol_start Function
        my sym_Sinus
        my si:reduce_symbol_end Function
        return
    }
    
    #
    # value Symbol 'Sinus'
    #
    
    method sym_Sinus {} {
        # x
        #     "sin\("
        #     (Expression)
        #     '\)'
    
        my si:value_symbol_start Sinus
        my sequence_9
        my si:reduce_symbol_end Sinus
        return
    }
    
    method sequence_9 {} {
        # x
        #     "sin\("
        #     (Expression)
        #     '\)'
    
        my si:void_state_push
        my si:next_str sin\50
        my si:voidvalue_part
        my sym_Expression
        my si:valuevalue_part
        my si:next_char \51
        my si:value_state_merge
        return
    }
    
    ## END of GENERATED CODE. DO NOT EDIT.
    # # ## ### ###### ######## #############
}

# # ## ### ##### ######## ############# #####################
## Ready

package provide OO_PACKAGE 1
return
