R-GReQL-Grammatik: Unterschied zwischen den Versionen
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, 14: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
Prog stellt den Wurzelknoten jeder R-Datei dar. (blau)
ParameterList
Ist der Wurzelknoten für Parameter einer aufgerufenen Funktion. (rot)
AnonParameterList
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
.