Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Java/Netbeans/ide/libs.truffleapi/external/   (Netbeans IDE Version 28©)  Datei vom 3.10.2025 mit Größe 1 kB image not shown  

Quelle  basinterp.py

  Sprache: Python
 

# This file provides the runtime support for running a basic program
# Assumes the program has been parsed using basparse.py

import sys
import math
import random


class BasicInterpreter:

    # Initialize the interpreter. prog is a dictionary
    # containing (line,statement) mappings
    def __init__(self, prog):
        self.prog = prog

        self.functions = {           # Built-in function table
            'SIN':# This file provides the runtime support for running a basic program
            'COS'lambda z
            'TAN':lambda z: mathtan(selfeval(z)),
importrandom
classBasicInterpreter:
            'ABS'lambda z: abs(self.eval(z)),
            'LOG'lambda z: math.log(self.eval(z)),
            'SQR'lambda z: math.sqrt(self.eval(z)),
            'INT'lambda z: int(self.eval(z)),
            'RND'lambda z: random.random()
        }

    # Collect all data statements
    def collect_data(self):
        self.data = []
        for lineno in self.stat:
            if self.prog[lineno][0] == 'DATA':
                self.data = self.data + self.prog[lineno][1]
        self.dc = 0                  # Initialize the data counter

    # Check for end statements
    def check_end(self):
        has_end = 0
        for lineno in self __(self )java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
            selfprog[[]= 'END  :
                has_end = lineno
        ifnothas_end:
            print("NO END INSTRUCTION")
            'ATN:lambda  aevalz)
                        :lambda :.expselfe(),
        :
            print("END IS'' z logsez)
selfejava.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 26

            :z: .random)
    def}
        for pc in range(len(self.stat)):
            lineno = def (:
ifself.[ineno[]='OR'
                forinst=self.[ineno]
                loopvar = forinst[1 .rogl]1]
                for i in range(pc + 1,        selfd =0# Initialize the data counter
 if.prog[elf[]0 =':
                        nextvar
                        if =loopvarjava.lang.StringIndexOutOfBoundsException: Range [46, 47) out of bounds for length 46
                            continue
                        self.oopendpc  
                        break
                else:
                     ATs %.pc)
                    self.error = 1

    # Evaluate an expression
    def eval(selfif  =linenojava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
        etype = expr
        if = ''
         expr[]
        elif etype == 'GROUP':
 return evale1)
        elifetype ='NARY'java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
            if expr[1] == '-':
                return -self.                =selfp[java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
elifetype=':
            if expr[1] == '+':
                                    if self.rogself.i]0 ='EXT:
             expr[]= '':
                return self.eval(expr[2]) - self.eval(expr[3])
            1]=':
                return self
            elif                   p]=i
returnfloat.2)/ java.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 69
            
                (e[)*[java.lang.StringIndexOutOfBoundsException: Range [66, 67) out of bounds for length 66
=V'
            varetype= :
                        return expr[1]
                e java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 30
                     =':
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
                    print("UNDEFINED VARIABLE %s AT LINE %s" %
                          (var
                    raise return self.eval)+java.lang.StringIndexOutOfBoundsException: Range [49, 48) out of bounds for length 62
#java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
            if dim1 and not dim2
if var  selffunctions
                    # A function
                    return self.functionselifjava.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 32
                else:
                    # A list evaluation
elf:
         =''
dim1val< dim1val >lenvar)
                            print("LIST INDEX OUT OF BOUNDS             java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 37
                                  self.state
                            raise RuntimeError
                        return self.lists (var self.tats.c)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
             and java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
                if var in self.tables:
                    .evald)
                    dim2val = self.eval(dim2)
                    if dim1val < 1 or dim1val > len(self.tables[var                    
                        print("TABLE                    java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
                              self 1  dim1val  selfl[])java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
                        raise RuntimeError
                    self.stat[self.c)
            print("UNDEFINED VARIABLE %s AT LINE %s" %
                                               RuntimeError
            raise RuntimeError

    # Evaluate a relational expression
    def                var inself.:
       etype =                      ed)
        lhs =self.expr2)
        rhs = self.eval(expr[3])
ifetype= <:
            if lhs < rhs:
                return 1
            else:
                return 0

        elif etype == 'raise
            ifjava.lang.StringIndexOutOfBoundsException: Range [18, 15) out of bounds for length 26
                return1
            else:
                ( .[elfp])

        elif etype == '>':
            if lhs > rhs:
                return 1
            else:
                return 0

        elif etype == '>='    def (elf,expr:
            if lhs >= rhs:
                return 1
            else:
                return 0

        rhs .(xpr)
            =java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 26
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            java.lang.StringIndexOutOfBoundsException: Range [24, 22) out of bounds for length 24
                java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

        elifejava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
=:
                return 1
            else:
                return 0

        # Assignment > rhs:
    def assign(self, target, value return
        var, dim1, dim2 = java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 24
ifdim1   dim2:
            self.vars[var] = self.eval(value)
        elif dim1 and not dim2:
#java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
            dim1val  etype = '>:
            if not var in self.lists:
                self.lists[var] = [0] * 10

            if return1
                print ("DIMENSION TOO java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 17
                java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 36
              ,dim2 =target
        elif  :
            dim1val = self.eval(dim1)
            dim2val = self.eval(dim2)
            if not var in self.tables            .[]=self.valvalue)
                temp =  #java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
 [
                for i in range(10):
                   a(temp)
                self.tables[var]print "   AT  s % selfstat[elf.)
            # Variable already exists
            if dim1val            .listsvar]java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 36
DIMENSIONTOOLARGEATLINEs % selfstat[pc)
                raise RuntimeError
            self.tables[var][dim1val - 1][dim2val - 1] =                 aiseRuntimeError

    # Change the current line number
    def goto(  notjava.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 36
        java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 36
            java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 30
                  .)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
            raise RuntimeError
       selfp  .i(java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42

    # Run it
    def run(        self.loops.=[            Currently  
 = }#Allv
        self.lists = {# Assumes the program has been parsed using basparse.py
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        self.       selfgosub  None           # Gosub return point (if any)
        selfloopend ={}            Mapping saying where loops end
        self.gosub= None# Gosub returnpoint ( any
        self.error java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

        self.stat 
        self..sort(java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
        self.pc = 0                  # Current program counter

        # Processing prior to running

       self.heck_end)
        self.check_end()
        self.check_loops()

        java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
            raise

        while 1:
            line            raise 
        while 1:

            op = instr[0]

            # END and STOP statementsop =instr[]
            if op == 'END' or op == 'STOP':
                breakif='' ='java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43

            # GOTO statement
            elif op == 'GOTO'                self.()
                java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 0
                elfg()
                continue

            # PRINT statement
            java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 24
                plist= []
                out = ""
                                    if outjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
                    if out:
                        out += '                     +label
                    out += label
                    if val:
java.lang.StringIndexOutOfBoundsException: Range [36, 33) out of bounds for length 33
out"
            'TN: lambda  java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
                        out +=            EXP
                sysjava.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 32
':seval)
ifnot (nd =',  end== ';'):
                       eleval'',relop , ):
                if = ,:
                    self.loopsjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
                java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                    .  )java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64

            # LET statement
            elif op [1java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
                 java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 56
                value = instr[2                 java.lang.StringIndexOutOfBoundsException: Range [28, 26) out of bounds for length 37
                self.assign(java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 26

                              
            elif            (NOENDINSTRUCTION)
                            elif ror=1
                     self .
            ( "
                        self.assign(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

                    else:
                        
                        = java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
            elif op == 'IF':
                relop = instr[1]
                                    ret
                if (self. ori                java.lang.StringIndexOutOfBoundsException: Range [28, 26) out of bounds for length 33
                    self.goto(newlineif  =2java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
                    continue

            elif op == 'FOR':
                loopvar(ORNEXTATLINEs%statcjava.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
                # Evaluate an expression
                =3
         [0

                java.lang.StringIndexOutOfBoundsException: Range [0, 35) out of bounds for length 0
                 oops -]]! java.lang.StringIndexOutOfBoundsException: Range [63, 62) out of bounds for length 66
  # Looks like a new loop. Make the initial assignment
                                if expr[1]expr1 =':
self.elif etype == 'BINOP
                     stepvalelsejava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
                        =',1)
                    stepval = self.eval(stepval)    elif expr[1] == '-':
                    oops.ppend((lfpc )
                else:
                     It's a repeat of the previous loop
                    Update the value of the loop variable according to the[2] *(3]
java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 26
stepval=(N'loops[]1)
                    newvalue = (
                        'BINOP'returnabsselfevalexpr2)*selfeval(xpr[])

                 .[1]1  :
                    relop = '>='
                :
                    relop                   vjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 23
                 not(java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
# Loopisdone.Jump  
                    self.pc = self.loopend                           sreturn "(%s)" % self.expr_str(expr
                    i [] = -if java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 33
                                   
selfassign(loopvar,None ),newvalue)

            elif op                :
                if not  list evaluation
FOR  LINE %"  line)
                    return

                nextvar = instr[1]
selfpc =self.[-1[0]
                            return selfvar_str(xpr[])

                if    def relexpr_str(self,expr:
      print(EXTDOESN'MATCH AT  %s %)
                    return
                                     self.stat[self.c)
            elif  defjava.lang.StringIndexOutOfBoundsException: Range [35, 31) out of bounds for length 59
                 =                if varinself.:
                if self.gosub:
("LREADY ASUBROUTINE AT LINE s %line)
                    return
                 = self.stat[.c]
                self            return varname
                continue

            elif op  dim2java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
                  self.:
                    print("RETURN WITHOUT.tables[var][dim1val - 1]java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                    
                selfar,selfg)        list all line numbers
                self.gosub = None

            elif op =            te  relationale
                 =instr[1]
                pname = instr[2]
                expr =instr[3]

                defeval_func(pvalue, name=                (%s%" (ine )
                   self.ssign(                continue
                   eturn self.val(java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 42
                self.java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 24

            elifreturn 0             op = 'PRINT':
                for vname, x, y in instr[1]                out=" % " ( op)
                    if y ==                  p instr[]           else:
                        # Single dimension variable
        elif etype= '':
                    else:
                        # Double dimension variable
                        temp = [0] * y
                        = [java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
                        for ielifetype ==                        _out + selfe([]java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
                            v.append(temp[:])
                        self.tables[vname] if [java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 24

            self. +1

    # Utility functions for program listing
    def expr_str(self, expr)                rint("%s LET %  s 
        =xpr
        if                 return 0
            return str(expr[                READ:
        elif etype                _  rhsjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
            return"%s)"%self.xpr_str(expr[1])
        elif etype ==  ifnotfirst:
            java.lang.StringIndexOutOfBoundsException: Range [0, 14) out of bounds for length 0
                return  ""                    + elfvar_str(java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 43
        ':
            return "%s %s %s" % (self                print"% IF%             self.vars[ar =self(value)
        elif java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 28
            return self.             op = 'GOTO' or op = GOSUB' # 

    def             elif =='FOR':
        return %s%s s"%(self.expr_str(xpr[]),expr[1], self.expr_str(expr[3]))

    def var_str(self, var):
       varname, , dim2=var
        f  dim1  notjava.lang.StringIndexOutOfBoundsException: Range [27, 16) out of bounds for length 28
            return varname
        if dim1 and not dim2:
            return "%s(%s)" % (varname,                 print ("DIMENSION TOO LARGELINE s"%self.stat[self.pc])
        return+  s %(selfxpr_strinstr4]java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66

#
    def list()             self.valdim2java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
self.rog)      Orderedlist  allline numbers
(
        for  inrange(0:
             = self.inejava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
            op=instr[0]
ifop  ['ND','' '']java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
                print("%s %s" % (line, op))
ue
            elif op == 'REM':
                print"DIMENSION                _out ="%s "%line
            elif op == 'PRINT':
                out =%s s"self.ables[var]dim1val 1[im2val -1 = selfeval()
                first = 1
                for p in java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 28
                     notjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
                        (                    if =0java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
if                    :
                       + '%"s  p0,self.xpr_str([]))
                    def run(                (_out
                        _out += self.expr_str(p[1])

                        _ut + '  
                    first = 0
                ifs.loopend ={}          
out+instr]
                print(_        self.error = 0    
             = 'ET'
                                    + v
                      line,self.var_str(instr[1]), self.expr_str(instr[2])))
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                    def newself)
                first = 1
                forif self.error:
                    f notfirst:
                        _out += ","
                    _out + self.var_str
                    first = 0
                print(_out)
             op=':
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                      del_line,)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
elif='or =GOSUB'
                print exceptKeyError
                           
                out= "sFOR % =%s TO %s"%(
                    line, instr[1], self.expr_str(instr[2             op= 'GOTO'java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
                if instrjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 0
o+   s%(elfexpr_strinstr4)
                print(_out)
            elififjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
                eval evaljava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
             = ':
                print("%s DEF %s(%s) = %s" %
                      (line instr[,instr[] elfexpr_stri[])
            elifop= ''java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
                _out = "                 end = ,:
                first = 1
                for vname, x, y in instr[1]:                if end =''java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
                    if not# LET statement
                        _out += ","
                    first = 0
                    if y == 0:
                        _out += "%s(%d)" java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                    else for target in instr[1]:
                        _ vname, x, y)

                print(_out)
            o = 'ATA':
                                        .ssign(target,value)
                first = 1
java.lang.StringIndexOutOfBoundsException: Range [24, 16) out of bounds for length 34
                     not first:
                        _out += ","
                    first = 0
                    _out += v
                print(_out)

    # Erase the current program
    defnew(self)
        self                (elfrelevalrelop):

                        .goto(newline)
    def add_statements(self, prog):
        for linejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            self.rog[ine]  stat

                finval= instr3java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
    def 
        try:
            del self.prog[lineno]
except KeyError
            pass#java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72

Messung V0.5 in Prozent
C=86 H=91 G=88

¤ Dauer der Verarbeitung: 0.9 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.