You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

540 lines
11 KiB

## -*- tcl -*-
##
## OO-based Tcl/PARAM implementation of the parsing
## expression grammar
##
## calculator grammar
##
## Generated from file calctest.tcl
## for user jnoble
##
# # ## ### ##### ######## ############# #####################
## 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 calculator_test {
# # ## ### ##### ######## #############
## 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 'AddOp'
#
method sym_AddOp {} {
# [+-]
my si:void_symbol_start AddOp
my si:next_class +-
my si:void_leaf_symbol_end AddOp
return
}
#
# value Symbol 'Digit'
#
method sym_Digit {} {
# [0123456789]
my si:void_symbol_start Digit
my si:next_class 0123456789
my si:void_leaf_symbol_end Digit
return
}
#
# value Symbol 'Expression'
#
method sym_Expression {} {
# x
# (Term)
# *
# x
# *
# '<blank>'
# (AddOp)
# *
# '<blank>'
# (Term)
my si:value_symbol_start Expression
my sequence_18
my si:reduce_symbol_end Expression
return
}
method sequence_18 {} {
# x
# (Term)
# *
# x
# *
# '<blank>'
# (AddOp)
# *
# '<blank>'
# (Term)
my si:value_state_push
my sym_Term
my si:valuevalue_part
my kleene_16
my si:value_state_merge
return
}
method kleene_16 {} {
# *
# x
# *
# '<blank>'
# (AddOp)
# *
# '<blank>'
# (Term)
while {1} {
my si:void2_state_push
my sequence_14
my si:kleene_close
}
return
}
method sequence_14 {} {
# x
# *
# '<blank>'
# (AddOp)
# *
# '<blank>'
# (Term)
my si:void_state_push
my kleene_8
my si:voidvalue_part
my sym_AddOp
my si:valuevalue_part
my kleene_8
my si:valuevalue_part
my sym_Term
my si:value_state_merge
return
}
method kleene_8 {} {
# *
# '<blank>'
while {1} {
my si:void2_state_push
my si:next_char \40
my si:kleene_close
}
return
}
#
# value Symbol 'Factor'
#
method sym_Factor {} {
# x
# (Fragment)
# *
# x
# *
# '<blank>'
# (PowOp)
# *
# '<blank>'
# (Fragment)
my si:value_symbol_start Factor
my sequence_32
my si:reduce_symbol_end Factor
return
}
method sequence_32 {} {
# x
# (Fragment)
# *
# x
# *
# '<blank>'
# (PowOp)
# *
# '<blank>'
# (Fragment)
my si:value_state_push
my sym_Fragment
my si:valuevalue_part
my kleene_30
my si:value_state_merge
return
}
method kleene_30 {} {
# *
# x
# *
# '<blank>'
# (PowOp)
# *
# '<blank>'
# (Fragment)
while {1} {
my si:void2_state_push
my sequence_28
my si:kleene_close
}
return
}
method sequence_28 {} {
# x
# *
# '<blank>'
# (PowOp)
# *
# '<blank>'
# (Fragment)
my si:void_state_push
my kleene_8
my si:voidvalue_part
my sym_PowOp
my si:valuevalue_part
my kleene_8
my si:valuevalue_part
my sym_Fragment
my si:value_state_merge
return
}
#
# value Symbol 'Fragment'
#
method sym_Fragment {} {
# /
# x
# '\('
# *
# '<blank>'
# (Expression)
# *
# '<blank>'
# '\)'
# (Number)
# (Var)
my si:value_symbol_start Fragment
my choice_46
my si:reduce_symbol_end Fragment
return
}
method choice_46 {} {
# /
# x
# '\('
# *
# '<blank>'
# (Expression)
# *
# '<blank>'
# '\)'
# (Number)
# (Var)
my si:value_state_push
my sequence_42
my si:valuevalue_branch
my sym_Number
my si:valuevalue_branch
my sym_Var
my si:value_state_merge
return
}
method sequence_42 {} {
# x
# '\('
# *
# '<blank>'
# (Expression)
# *
# '<blank>'
# '\)'
my si:void_state_push
my si:next_char \50
my si:voidvoid_part
my kleene_8
my si:voidvalue_part
my sym_Expression
my si:valuevalue_part
my kleene_8
my si:valuevalue_part
my si:next_char \51
my si:value_state_merge
return
}
#
# value Symbol 'MulOp'
#
method sym_MulOp {} {
# [*/]
my si:void_symbol_start MulOp
my si:next_class */
my si:void_leaf_symbol_end MulOp
return
}
#
# value Symbol 'Number'
#
method sym_Number {} {
# x
# ?
# (Sign)
# +
# (Digit)
my si:value_symbol_start Number
my sequence_57
my si:reduce_symbol_end Number
return
}
method sequence_57 {} {
# x
# ?
# (Sign)
# +
# (Digit)
my si:value_state_push
my optional_52
my si:valuevalue_part
my poskleene_55
my si:value_state_merge
return
}
method optional_52 {} {
# ?
# (Sign)
my si:void2_state_push
my sym_Sign
my si:void_state_merge_ok
return
}
method poskleene_55 {} {
# +
# (Digit)
my i_loc_push
my sym_Digit
my si:kleene_abort
while {1} {
my si:void2_state_push
my sym_Digit
my si:kleene_close
}
return
}
#
# value Symbol 'PowOp'
#
method sym_PowOp {} {
# "**"
my si:void_symbol_start PowOp
my si:next_str **
my si:void_leaf_symbol_end PowOp
return
}
#
# value Symbol 'Sign'
#
method sym_Sign {} {
# [-+]
my si:void_symbol_start Sign
my si:next_class -+
my si:void_leaf_symbol_end Sign
return
}
#
# value Symbol 'Term'
#
method sym_Term {} {
# x
# (Factor)
# *
# x
# *
# '<blank>'
# (MulOp)
# *
# '<blank>'
# (Factor)
my si:value_symbol_start Term
my sequence_75
my si:reduce_symbol_end Term
return
}
method sequence_75 {} {
# x
# (Factor)
# *
# x
# *
# '<blank>'
# (MulOp)
# *
# '<blank>'
# (Factor)
my si:value_state_push
my sym_Factor
my si:valuevalue_part
my kleene_73
my si:value_state_merge
return
}
method kleene_73 {} {
# *
# x
# *
# '<blank>'
# (MulOp)
# *
# '<blank>'
# (Factor)
while {1} {
my si:void2_state_push
my sequence_71
my si:kleene_close
}
return
}
method sequence_71 {} {
# x
# *
# '<blank>'
# (MulOp)
# *
# '<blank>'
# (Factor)
my si:void_state_push
my kleene_8
my si:voidvalue_part
my sym_MulOp
my si:valuevalue_part
my kleene_8
my si:valuevalue_part
my sym_Factor
my si:value_state_merge
return
}
#
# value Symbol 'Var'
#
method sym_Var {} {
# x
# '$'
# [xyz]
my si:void_symbol_start Var
my sequence_80
my si:void_leaf_symbol_end Var
return
}
method sequence_80 {} {
# x
# '$'
# [xyz]
my si:void_state_push
my si:next_char $
my si:voidvoid_part
my si:next_class xyz
my si:void_state_merge
return
}
## END of GENERATED CODE. DO NOT EDIT.
# # ## ### ###### ######## #############
}
# # ## ### ##### ######## ############# #####################
## Ready
package provide calculator_test 999999.0a1.0
return