Welches Symbol für den Division Operator würden Sie wählen?

8

Ich entwerfe und implementiere gerade eine kleine Programmiersprache als ein Extra-Kredit-Projekt in einer Klasse, die ich mache. Mein Problem ist, dass die Sprache drei numerische Typen hat: Long, Double und Fraction. Brüche können in der Sprache als richtige oder unechte Brüche (z.B. "2 1/3" oder "1/2") geschrieben werden. Diese Tatsache führt dazu, dass Probleme wie "2 / 3.5" (Long / Double) und "2/3" (Long / Long) vom Lexer nicht korrekt behandelt werden. Die beste Lösung, die ich sehe, ist das Ändern des Divisionsoperators. Bisher denke ich "\" ist die beste Lösung, da "//" Kommentare startet.

Würdest du "\" wählen, wenn du die Sprache entworfen hättest?

Würdest du etwas anderes aussuchen? Wenn ja, was?

Hinweis: Das Ändern der Art, wie Brüche geschrieben werden, ist nicht möglich.

Vielen Dank im Voraus für Ihre Hilfe,

-EDIT -

Aktuelle Operatoren sind:

** (Leistung)

* (multiplizieren)

% (Modul)

+ (hinzufügen)

- (Subtrahieren und Negieren)

~ (reziprok)

! (NICHT)

> (größer)

< (weniger)

>= (größer-gleich)

<= (weniger gleich)

== (Gleichheit)

<> (Ungleichheit)

& (AND)

| (OR)

^ (XOR)

?? (Null-Koaleszenz)

= (Zuweisung)

Hinweis: Ich habe keine streng verbindlichen Anforderungen von meinem Lehrer; Ich habe ihn jedoch überzeugt, dass ich einen einfachen Bruchrechner in eine Sprache umwandeln kann. Die Änderung der Fraktionssyntax würde gegen die Fraktionssatz-Syntax für Brüche gehen, die vorzugsweise vermieden wird.

    
Mackenzie 29.04.2010, 23:11
quelle

12 Antworten

5

Ich bin nicht ganz sicher, was das Problem ist, da ich Grammatiktheorie nicht kenne. Aber ich würde versuchen, die richtige Bruchteilsyntax zu ändern, z. zu 2_1/3 , mit Unterstrich statt Leerzeichen.

Über die Verwendung von \ als Divisionsoperator - ich würde es sicherlich nicht mögen, da es in fast jeder Sprache als Escape-Zeichen verwendet wird. Ich würde solch eine Überladung von Bedeutungen nicht empfehlen.

    
doublep 29.04.2010, 23:17
quelle
9

Die APL-Antwort lautet ÷. Ich denke, das ist erkennbar.

    
mpez0 30.04.2010 01:50
quelle
7

Ermöglichen Sie kompakte if-Anweisungen wie

%Vor%

in deiner Grammatik? Wenn nicht, könnten Sie ": " als Bereichsbetreiber verwenden. Es ist schließlich das übliche mathematische Symbol für die Teilung (von Hand, auf Papier) an vielen (den meisten?) Stellen rund um das Wort.

    
Pedery 30.04.2010 00:10
quelle
6

Wie wäre es mit einem Wort "div"?

    
Fyodor Soikin 29.04.2010 23:17
quelle
3

Ein weiterer Grund, die Verwendung von \ als Ersatz für / zu vermeiden, liegt darin, dass Verwirrung darüber entstehen kann, welcher Operand der Zähler ist und welcher der Nenner ist. Zum Beispiel enthalten MATLAB-Arithmetikoperatoren die rechte Division / und linke Abteilung \ . Der Wert von 1/2 ist 0,5, der Wert von 1 ist jedoch 2. Mit anderen Worten, / hat den Zähler links und \ hat den Zähler rechts.

    
gnovice 30.04.2010 02:32
quelle
1

Wenn es für einen Kurs ist, würde ich einfach ein Schlüsselwort wie dividedby verwenden. Andernfalls müssen Sie herausfinden, was / durch seinen Kontext bedeutet. Es gibt wirklich keine anderen einzelnen Zeichen, die geeignet sind.

Beachten Sie jedoch, dass Ihr Lehrer Sie möglicherweise bittet, das kontextabhängige Problem zu lösen. In diesem Fall möchte er, dass Sie den Schrägstrich verwenden. Ich würde fragen.

    
Robert Harvey 29.04.2010 23:17
quelle
1

Wie wäre es, wenn Sie den Fraction-Typ benötigen, um in allen Fällen ein Double zu verwenden? dh 2.0 / 3.5 vs 2 / 3.5 Dann wird kein neuer Operator benötigt.

    
dawg 29.04.2010 23:20
quelle
1

Ich würde \ wie verrückt vermeiden, da dies die Erwartungen der Menschen durcheinander bringen würde.

Ich würde fortfahren und / verwenden, aber das Problem aus dem Lexer heraus und in den Parser bringen, wo es einfacher ist, mit ihm umzugehen und Sie können sinnvolle Fehlermeldungen ausgeben.

    
Norman Ramsey 30.04.2010 00:13
quelle
1

Ich denke, die zweistellige /| ist eine mögliche Idee. / ist die Division und | sieht aus wie Fraktion um 90 Grad gedreht.

Wenn Sie Klammern oder unäre Operatoren zulassen, kann ich Ihnen [2 1/2] oder #1/2 empfehlen.

    
Ming-Tang 30.04.2010 00:46
quelle
1

Wie wäre es, Brüche zum primären Datentyp zu machen? Denken Sie an den Divisionsoperator als Infixkonstruktor?

    
just somebody 30.04.2010 01:32
quelle
1

Sie könnten Js etwas nicht standardmäßige Konvention von % für die Division übernehmen (weil es irgendwie wie das Divisionssymbol aussieht) und | für modulo.

Aber dann musst du etwas anderes für bitweise-oder finden. Vielleicht / ?

    
David 29.04.2010 23:22
quelle
0

Ich werde '\' nicht auswählen, weil es in Tastaturen weniger zugänglich ist als '/'. und es wird auch häufiger verwendet. So werden Ihre Programmierer mehr nach Hause fallen.

    
SDReyes 29.04.2010 23:24
quelle