Function stack at time s

each element in the stack contains the context of the running program at a particular scope

Format:

stack at time s

Input:

number s -

Output:

list - None

Conditional properties that reference this function:

  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k > j

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = pair ("while", while_line)

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • number of lines = i - 1
    • value at (j - 1) in map (Control Map at time t) = pair ("while", while_line)

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • number of lines = i - 1
    • value at (j - 1) in map (Control Map at time t) = pair ("if", if_value)

    then stack at time (t + 1) = stack at time t

    (link)
  • if "break" state at t = "breaking", then stack at time (t + 1) = stack at time t (link)
  • if "continue" state at t = "continuing", then stack at time (t + 1) = stack at time t (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = function call with name: name and arguments: args
    • expression state at time t = "end_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = function call with name: name and arguments: args

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = c
    • c is constant

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = x
    • x is a variable

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = x = c
    • c is constant

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = x = c
    • c is a variable

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = assign statement with target x and expression (function call with name: name and arguments: args)
    • expression state at time t = "not_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if expression state at time t = "begin_expr", then stack at time (t + 1) = stack at time t (link)
  • if expression state at time t = "iterate_args", then stack at time (t + 1) = stack at time t (link)
  • if expression state at time t = "call_function_begin", then stack at time (t + 1) = stack at time t (link)
  • if the following are true:
    • expression state at time t = "call_build_args"
    • Parameters List at time t = [ var, frest ]
    • Argument Values at time t = [ value, vrest ]

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • expression state at time t = "call_build_args"
    • Parameters List at time t = [ ]

    then stack at time (t + 1) = [ program context with variables: (Variables Map at time t) and expression state: (expression state with parent stack: (parent stack at time t) arguments: (arguments stack at time t) values: (Value Stack at time t) line: (the line at time t) tab: (the tab at time t)) and control map: (Control Map at time t), stack at time t ]

    (link)
  • if expression state at time t = "call_returned", then stack at time (t + 1) = stack at time t (link)
  • if expression state at time t = "return", then stack at time (t + 1) = stack at time t (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = assign statement with target x and expression (function call with name: name and arguments: args)
    • expression state at time t = "end_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = if test:

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = elif test:

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = else:

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = pair ("if", if_value)

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = "while" statement with condition (function call with name: name and arguments: args)

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = break

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = continue

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = function definition where name: name and parameters: params

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = return rex
    • expression state at time t = "not_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = return rex
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
    • expression state at time t = "end_expr"

    then Variables Map at time (t + 1) = varis

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = return rex
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
    • expression state at time t = "end_expr"

    then the line at time (t + 1) = line

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = return rex
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
    • expression state at time t = "end_expr"

    then the tab at time (t + 1) = tab

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = return rex
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
    • expression state at time t = "end_expr"

    then expression state at time (t + 1) = "call_returned"

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = return rex
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
    • expression state at time t = "end_expr"

    then parent stack at time (t + 1) = parent_stack

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = return rex
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
    • expression state at time t = "end_expr"

    then Control Map at time (t + 1) = control_map

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = return rex
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
    • expression state at time t = "end_expr"

    then stack at time (t + 1) = rest

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = return rex
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
    • expression state at time t = "end_expr"

    then Value Stack at time (t + 1) = value_stack

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = return rex
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
    • expression state at time t = "end_expr"

    then arguments stack at time (t + 1) = arg_stack

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = return rex
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
    • expression state at time t = "end_expr"

    then Return Value at time (t + 1) = Return Value at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = Python list elements

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = assign statement with target x and expression (Python list elements)
    • expression state at time t = "not_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = assign statement with target x and expression (Python list elements)
    • expression state at time t = "end_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = obj_name.method_name(args)
    • expression state at time t = "not_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = assign statement with target target and expression (obj_name.method_name(args))
    • expression state at time t = "not_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = obj."append"(el)

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = assign statement with target x and expression (Python dictionary elements)
    • expression state at time t = "not_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = assign statement with target x and expression (Python dictionary elements)
    • expression state at time t = "end_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = a class named name with bases: bases

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = pair ("class", class_name)

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = a method named method_name with parameters params

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = obj.mn(args)
    • expression state at time t = "end_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = assign statement with target x and expression (obj_name.method_name(args))
    • expression state at time t = "end_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = assign statement with target x and expression (Python constructor with name: name and arguments: args)
    • expression state at time t = "not_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • expression state at time t = "call_build_args"
    • the expression at time t = Python constructor with name: class_name and arguments: args
    • Function Variables Map at time t = [ ]
    • Parameters List at time t = [ self, p_rest ]

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = assign statement with target x and expression (Python constructor with name: class_name and arguments: args)
    • expression state at time t = "end_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = assign statement with target x and expression (obj.attr)
    • expression state at time t = "not_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = assign statement with target x and expression (obj.attr)
    • expression state at time t = "end_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = obj.key = value

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = x.y = z
    • expression state at time t = "end_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = pair ("method", mname)
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]

    then Variables Map at time (t + 1) = varis

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = pair ("method", mname)
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]

    then the line at time (t + 1) = line

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = pair ("method", mname)
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]

    then the tab at time (t + 1) = tab

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = pair ("method", mname)
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]

    then expression state at time (t + 1) = "call_returned"

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = pair ("method", mname)
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]

    then parent stack at time (t + 1) = parent_stack

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = pair ("method", mname)
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]

    then stack at time (t + 1) = rest

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = pair ("method", mname)
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]

    then Value Stack at time (t + 1) = value_stack

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = pair ("method", mname)
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]

    then arguments stack at time (t + 1) = arg_stack

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = pair ("method", mname)
    • stack at time t = [ program context with variables: varis and expression state: (expression state with parent stack: parent_stack arguments: arg_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]

    then Control Map at time (t + 1) = control_map

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = for target in iterable:
    • iterable is a variable

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = for target in iterable:
    • expression state at time t = "end_expr"

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = for target in iterable_ex:
    • value at j in map (Control Map at time t) = trio ("for", i, [ elem, rest ])

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab j = for target in iterable_ex:
    • value at j in map (Control Map at time t) = trio ("for", i, [ ])

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • statement at line i, tab k = s
    • k < j
    • value at (j - 1) in map (Control Map at time t) = trio ("for", for_line, iterable)

    then stack at time (t + 1) = stack at time t

    (link)
  • if the following are true:
    • the line at time t = i
    • the tab at time t = j
    • number of lines = i - 1
    • value at (j - 1) in map (Control Map at time t) = trio ("for", for_line, iterable)

    then stack at time (t + 1) = stack at time t

    (link)


Comments

Please log in to add comments