美文网首页
FORTH 表达式计算 js版(加减乘除运算)

FORTH 表达式计算 js版(加减乘除运算)

作者: 26d1e4f85623 | 来源:发表于2017-10-20 18:14 被阅读14次

FORTH语言是一个很早很早就出现的语言。

在FORTH中,加法计算是这样的:

 1 1 +

再复杂一点可以是这样:

1 1 + 2 * 4 +

下面就这个计算流程实现JS版加减乘除:


class Forth {
    constructor() {
        this.stack = [];
        this.ops = ['+', '-', '*', '/'];
    }

    push(n) {
        if (this.isOper(n)) {
            let len = this.stack.length;
            let v = this.exec(this.stack, n);
            this.stack.splice(0, len, v);
            return;
        }
        if (isNaN(n)) {
            throw  new Error('unknown word: ' + n);
        }
        this.stack.push(Number(n));
        console.log('stack', this.stack)
    }

    isOper(n) {
        return this.ops.includes(n);
    }

    exec(arrs, operator) {
        if (!operator) {
            return arrs[arrs.length - 1];
        }
        return eval(arrs[0] + operator + arrs[1]);
    }

    input(expression) {
        let me = this;
        let exp = expression.trim().split(/\s+/);
        exp.forEach((item, index) => {
            me.push(item);
            if (index === exp.length - 1) {
                let v = me.exec(me.stack);
                console.log(v);
            }
        });
    }

}

使用case:

var f = new Forth();
f.input('1 1 + 1 + 5 * 2 +');  //17

相关文章

  • FORTH 表达式计算 js版(加减乘除运算)

    FORTH语言是一个很早很早就出现的语言。 在FORTH中,加法计算是这样的: 再复杂一点可以是这样: 下面就这个...

  • codeup 1918 简单计算机

    /*题意:1、加减乘除非负整数,计算表达式的值不超过200字符,整数和运算符之间有一个空格分隔。没有非法表达式一行...

  • 基于golang的分数运算函数

    gofal gofal golang分数运算相关函数 支持精准运算 支持加减乘除 支持链式表达式 支持结果输出(f...

  • 第二章 数据结构实现基础 习题解答

    Question 请编写程序模拟简单运算器的工作。假设计算器只能计算加减乘除运算,运算数和运算结果都是整数,4种运...

  • 第二章 数据结构实现基础 习题分享

    Question 请编写程序模拟简单运算器的工作。假设计算器只能计算加减乘除运算,运算数和运算结果都是整数,4种运...

  • 125运算符与数据类型转换

    一、运算符 1、赋值运算符:= 表示将某个数值或表达式赋值给左边的变量; 表达式:符号(加减乘除。。。)与操作数(...

  • 3-Java基础语法-运算符

    运算符就是我们接触到的如:加减乘除之类的符号 表达式 & 运算符: 表达式由运算符和操作数组成 如: 上面三个都是...

  • JS基础

    JS基础 JS运算 JS代码块 JS对象 原型对象 GC 正则表达式

  • & 与&&的区别

    & 按位运算&&短路与运算,先计算左边的表达式,如果结果是false,那么不用计算右边表达式,直接返回false ...

  • Java 三目运算 if else 一行代码搞定

    java 三目运算符 Java中三目运算符的语法: 表达式1?表达式2:表达式3;运算顺序先计算‘表达式1’的值 ...

网友评论

      本文标题:FORTH 表达式计算 js版(加减乘除运算)

      本文链接:https://www.haomeiwen.com/subject/szwvuxtx.html