JavaScript, Python

Benutzeravatar
davidvajda.de
Site Admin
Beiträge: 1513
Registriert: Di Jul 18, 2023 8:36 pm
Wohnort: D-72072, Tübingen
Kontaktdaten:

Re: JavaScript, Python

Beitrag von davidvajda.de »

Code: Alles auswählen

/*
 * expr ::= term | term + expr
 * term ::= factor | factor * term
 * factor ::= (expr) | num
 * num ::= 0..9
 */

var s = "((4+5)*3+2)*8";
var i = 0;

function gettoken () {
    return s[i++];
}

function tokenback () {
    i--;
}

function expr () {
    var x;
    var y = 0;
    
    x = term ();
    if (gettoken () == '+')
        y = expr ();
    else
        tokenback ();
    
return x+y;
}

function term () {
    var x;
    var y = 1;
    
    x = factor ();
    if (gettoken () == '*')
        y = term ();
    else
        tokenback ();
    
return x*y;
}

function factor () {
    var s = gettoken ();
    var x = parseInt (s);
    
    if (s == '(') {
        x = expr ();
        if (gettoken () != ')') 
            console.log ("Error");
    }
    else if ((x >= 0) && (x <= 9));
    else 
        console.log ("Error");
return x;
}

console.log(expr());
console.log(((4+5)*3+2)*8);
Antworten