Возможно создавать нового оператора в языке сценариев JavaScript? [удвоенная]

У этого вопроса уже есть ответ здесь:

Нуждался в том, чтобы использовать этот логический оператор: ⇒, который будет вставленным в string этой формы:

var mystring = "(true ⇒ false) ⇒ true";

Таким образом, он был бы должен мочь оценивать это выражение с eval(mystring) и я возвратился стоимость на самом деле.

Но язык сценариев JavaScript это не выносит: есть какой-то способ мочь создавать это? у него есть некие довольно основные правила, даже возможно притворяться с этой функцией, которая получает две переменные booleanas:

function Condicional(v1,v2){
    return (!v1)||v2;               //formula de una condicional
}

но эта функция не сможет применяться к любому другому типу операции, в которой он использует ⇒, или, по крайней мере, со мной не случилось как.

Возможно было место, где я сам смог определять этот логический оператор для того, чтобы язык сценариев JavaScript распознал это мне, я это не знаю, может быть в том же месте, где определены остальные как"!", "&&", "||", "==="...

Возможно?

edit

Я нуждаюсь в том, чтобы знать, существует ли способ создавать такой оператор как этот: ⇒, но также я буду нуждаться в том, чтобы создать другие два оператора больше, из-за того, что то, что я ищу, как создавать любой другой оператор, отличный от тех, которыми javascript уже он обладает.

2
задан 03.06.2016, 04:52
3 ответа

Я не знаю того, что ты хочешь сделать, но того, что конечно, что javascript не лучший язык, чтобы это делать. То, что ты, кажется, ищешь, так это что-то, что тебе позволял бы тебе создавать DSL (Специфический Язык Домена), и, из-за твоих изложений Логики, он сказал бы, что то, что лучше вставило бы тебя, является функциональным языком.

Между возможными выборами, есть несколько функциональных языков для JVM, которые позволяют transpilación java в javascript. С тем, который у меня есть больше опыта, он состоит с scala.js в том, что он позволил бы тебе создавать вещи как дела:

package proposionallogic

import scala.scalajs.js.JSApp

object ProposionalLogic {    
    implicit class BooleanRich(a:Boolean) {
        def :=>(b:Boolean):Boolean = !a && b
    }
}

object MyApp extends JSApp {

    import ProposionalLogic._

    def main() = {
        println((true :=> false) :=> true)
    }
}

Я не знаю, может ли он стоить тебе. Я оставил тебе полный проект в github.

0
ответ дан 24.11.2019, 14:14
  • 1
    большое спасибо он подал меня! – Roberto Sepúlveda Bravo 05.06.2016, 23:07

Нет, язык сценариев JavaScript не выносит создавать новые операторы ни изменять существующих родного способа. Только ты можешь создавать функции.

3
ответ дан 24.11.2019, 14:14
  • 1
    это не совсем верно, в teor и # 237; могут изменять instanceof используя Symbol специализирующегося, но - предельный случай. – rnrneverdies 12.06.2016, 03:12

Не возможно создавать оператора, но если возможно делать parser, который будет тебе позволять оценивать этот тип выражений.

Пример в javascript, что делает что-то asГ - js-sequence-diagrams , которые используют jison , чтобы производить parser и мочь оценивать выражения.

0
ответ дан 24.11.2019, 14:14