R-GReQL-Grammatik: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Zeile 74: Zeile 74:
<code> <u>x</u> <- c(5,6)</code>.
<code> <u>x</u> <- c(5,6)</code>.


=== Operator ===
=== ''Operator'' ===
 
Ist ein abstrakter Knoten.
==== ArithmeticOperator ====
==== ''ArithmeticOperator'' ====
 
Ist ein abstrakter Knoten.
===== AddOperator =====
===== AddOperator =====
Ist der "+"-Operator, z.B.


<code>var <- 1 + 2</code>.
===== SubOperator =====
===== SubOperator =====
Ist der "-"-Operator, z.B.


<code>var <- 1 - 2</code>.
===== MulOperator =====
===== MulOperator =====
Ist der "*"-Operator, z.B.


<code>var <- 1 * 2</code>.
===== DivOperator =====
===== DivOperator =====
Ist der "/"-Operator, z.B.


<code>var <- 1 / 2</code>.
===== ExpOperator =====
===== ExpOperator =====
Ist der "^"-Operator, z.B.


<code>var <- 1 ^ 2</code>.
===== RemainderOperator =====
===== RemainderOperator =====
Ist der "%%"-Operator, z.B.


<code>var <- v1 %% v2</code>.
===== FloorOperator =====
===== FloorOperator =====
Ist der "%/%"-Operator, z.B.


==== RelationalOperator ====
<code>var <- v1 %/% v2 </code>.
 
==== ''RelationalOperator'' ====
Ist ein abstrakter Knoten.
===== GreaterOperator =====
===== GreaterOperator =====
Ist der ">"-Operator, z.B.


<code>var <- 5 > 6</code>.
===== LesserOperator =====
===== LesserOperator =====
Ist der "<"-Operator, z.B.


<code>var <- 5 < 6</code>.
===== GreaterEqOperator =====
===== GreaterEqOperator =====
Ist der ">="-Operator, z.B.


<code>var <- 5 >= 6</code>.
===== LesserEqOperator =====
===== LesserEqOperator =====
Ist der "<="-Operator, z.B.


<code>var <- 5 <= 6</code>.
===== EqualOperator =====
===== EqualOperator =====
Ist der "=="-Operator, z.B.


<code>var <- 5 == 6</code>.
===== UnequalOperator =====
===== UnequalOperator =====
Ist der "!="-Operator, z.B.


<code>var <- 5 != 6</code>.
===== InOperator =====
===== InOperator =====
Ist der "%in%"-Operator, z.B.


==== LogicalOperator ====
<code>var 5 %in% vec</code>.
 
==== ''LogicalOperator'' ====
Ist ein abstrakter Knoten.
===== AndOperator =====
===== AndOperator =====
Ist der "&"-Operator, z.B.


<code>var <- TRUE & FALSE</code>.
===== OrOperator =====
===== OrOperator =====
Ist der "|"-Operator, z.B.


<code>var <- TRUE | FALSE</code>.
===== NotOperator =====
===== NotOperator =====
Ist der "!"-Operator, z.B.


<code>var <- !TRUE</code>.
===== AndOperatorFirstElement =====
===== AndOperatorFirstElement =====
Ist der "&&"-Operator, z.B.


<code>var <- vector1 && vector2</code>.
===== OrOperatorFirstElement =====
===== OrOperatorFirstElement =====
Ist der "||"-Operator, z.B.


==== AssignmentOperator ====
<code>var <- vector1 || vector2</code>.
 
==== ''AssignmentOperator'' ====
===== LeftAssignmentOperator =====
Ist ein abstrakter Knoten.
 
===== ''LeftAssignmentOperator'' =====
Ist ein abstrakter Knoten.
====== LeftAssignmentOperator1 ======
====== LeftAssignmentOperator1 ======
Ist der "<-"-Operator, z.B.


<code>var <- TRUE</code>.
====== LeftAssignmentOperator2 ======
====== LeftAssignmentOperator2 ======
Ist der "<<-"-Operator, z.B.


<code>var <<- FALSE</code>.
====== LeftAssignmentOperator3 ======
====== LeftAssignmentOperator3 ======
Ist der "="-Operator, z.B.


<code>var = TRUE</code>.
====== LeftAssignmentOperator4 ======
====== LeftAssignmentOperator4 ======
Ist der ":="-Operator, z.B.


<code>var := FALSE</code>.
===== RightAssignmentOperator =====
===== RightAssignmentOperator =====



Version vom 12. Juni 2017, 15:45 Uhr

Knoten

In dieser Grammatik sind abstrakte Knoten enthalten. Diese sind nicht instanziierbar und sowohl durch einen Kommentar, als auch durch kursiven Titel kenntlich gemacht.

Context

Prog

x <- c(5,6)

Prog stellt den Wurzelknoten jeder R-Datei dar. (blau)

ParameterList

Ist der Wurzelknoten für Parameter einer aufgerufenen Funktion. (rot)

AnonParameterList

var <- (function (x) x + 3) (10)

Ist die Parameter-Liste, die bei einer anonymen Funktion verwendet wird, z.B.

var <- (function (x) x + 3)(10).

IndexList

Ist der Oberknoten der Liste der verwendeteten Indizes durch Angabe einer eckigen Klammer, z.B.

y <- array[1].

DoubleIndexList

Ist der Oberknoten der Liste der verwendeteten Indizes durch Angabe von zwei eckigen Klammern, z.B.

z <- otherarray[[2]].

Indexing

Ist ein Zwischenknoten für die Indexierung (IndexList, DoubleIndexList)

UnaryExpression

Ist ein abstrakter Knoten.

Negative

Ist der "-"-Operator vor einer Zahl, Variable oder Expression, z.B.

var <- -(x + -3).

Positive

Ist der "+"-Operator vor einer Zahl, Variable oder Expression, z.B.

var <- +5.

Element

Ist ein abstrakter Knoten.

Literal

Ist ein abstrakter Knoten. Die folgenden Literale besitzen jeweils das Attribut "value", in dem der Wert abgespeichert wird.

BooleanLiteral

Stellt den boolischen Wert TRUE bzw. FALSE dar.

ComplexLiteral

Stellt eine komplexe Zahl, z.B. 3i, dar.

IntegerLiteral

Stellt einen Integerwert, z.B. 10L, dar.

NumericLiteral

Stellt eine Gleitkommazahl, z.B. 12.45, dar.

StringLiteral

Stellt eine Zeichenkette, z.B. "Hello World!" oder 'Hello World!' , dar.

NullLiteral

Ist der leere Index eines Arrays, z.B. var[1, ,2].

ID

Ist ein abstrakter Knoten.

Jeder Funktionsaufruf oder Variable ist in R eine ID. In diesem Checker wurden diese separiert und in zwei verschiedene Knoten unterteilt. Eine ID besitzt ein Atrribut "name", welches der FunctionCall- und Variable-Knoten erben.

FunctionCall

Stellt einen Aufruf einer Funktion dar, z.B.

x <- c(5,6).

Variable

Stellt eine Variable dar, z.B.

x <- c(5,6).

Operator

Ist ein abstrakter Knoten.

ArithmeticOperator

Ist ein abstrakter Knoten.

AddOperator

Ist der "+"-Operator, z.B.

var <- 1 + 2.

SubOperator

Ist der "-"-Operator, z.B.

var <- 1 - 2.

MulOperator

Ist der "*"-Operator, z.B.

var <- 1 * 2.

DivOperator

Ist der "/"-Operator, z.B.

var <- 1 / 2.

ExpOperator

Ist der "^"-Operator, z.B.

var <- 1 ^ 2.

RemainderOperator

Ist der "%%"-Operator, z.B.

var <- v1 %% v2.

FloorOperator

Ist der "%/%"-Operator, z.B.

var <- v1 %/% v2 .

RelationalOperator

Ist ein abstrakter Knoten.

GreaterOperator

Ist der ">"-Operator, z.B.

var <- 5 > 6.

LesserOperator

Ist der "<"-Operator, z.B.

var <- 5 < 6.

GreaterEqOperator

Ist der ">="-Operator, z.B.

var <- 5 >= 6.

LesserEqOperator

Ist der "<="-Operator, z.B.

var <- 5 <= 6.

EqualOperator

Ist der "=="-Operator, z.B.

var <- 5 == 6.

UnequalOperator

Ist der "!="-Operator, z.B.

var <- 5 != 6.

InOperator

Ist der "%in%"-Operator, z.B.

var 5 %in% vec.

LogicalOperator

Ist ein abstrakter Knoten.

AndOperator

Ist der "&"-Operator, z.B.

var <- TRUE & FALSE.

OrOperator

Ist der "|"-Operator, z.B.

var <- TRUE | FALSE.

NotOperator

Ist der "!"-Operator, z.B.

var <- !TRUE.

AndOperatorFirstElement

Ist der "&&"-Operator, z.B.

var <- vector1 && vector2.

OrOperatorFirstElement

Ist der "||"-Operator, z.B.

var <- vector1 || vector2.

AssignmentOperator

Ist ein abstrakter Knoten.

LeftAssignmentOperator

Ist ein abstrakter Knoten.

LeftAssignmentOperator1

Ist der "<-"-Operator, z.B.

var <- TRUE.

LeftAssignmentOperator2

Ist der "<<-"-Operator, z.B.

var <<- FALSE.

LeftAssignmentOperator3

Ist der "="-Operator, z.B.

var = TRUE.

LeftAssignmentOperator4

Ist der ":="-Operator, z.B.

var := FALSE.

RightAssignmentOperator
RightAssignmentOperator1
RightAssignmentOperator2

MiscOperator

SequenceOperator
ContainsOperator
MatrixMulOperator
TildeOperator

Statement

Block

IfStatement

SwitchStatement

Loop

WhileStatement
RepeatStatement
ForStatement

BreakStatement

NextStatement

Unsortiert

AnonFunctionDeclaration
NamedElement
FunctionDeclaration
ReturnStatement

Kanten

AssignmentOperator

LeftHandSide

RightHandSide

Block

BodyStatements

ForStatement

CountVariable

Set

SetVariable

FunctionCall

List

IfStatement

Condition

ElseBody

ThenBody

Node

Expression

ParameterList

Parameter

Prog

ProgStatements

Statement

StatementBody