X-Git-Url: http://nitlanguage.org diff --git a/src/parser/parser_nodes.nit b/src/parser/parser_nodes.nit index 95c83bc..1a37332 100644 --- a/src/parser/parser_nodes.nit +++ b/src/parser/parser_nodes.nit @@ -730,6 +730,51 @@ class TMinuseq super TokenOperator end +# The operator `*=` +class TStareq + super TokenOperator +end + +# The operator `/=` +class TSlasheq + super TokenOperator +end + +# The operator `%=` +class TPercenteq + super TokenOperator +end + +# The operator `**=` +class TStarstareq + super TokenOperator +end + +# The operator `|=` +class TPipeeq + super TokenOperator +end + +# The operator `^=` +class TCareteq + super TokenOperator +end + +# The operator `&=` +class TAmpeq + super TokenOperator +end + +# The operator `<<=` +class TLleq + super TokenOperator +end + +# The operator `>>=` +class TGgeq + super TokenOperator +end + # The symbol `...` class TDotdotdot super Token @@ -770,11 +815,31 @@ class TSlash super TokenOperator end -# The operator `+% +# The operator `%` class TPercent super TokenOperator end +# The operator `|` +class TPipe + super TokenOperator +end + +# The operator `^` +class TCaret + super TokenOperator +end + +# The operator `&` +class TAmp + super TokenOperator +end + +# The operator `~` +class TTilde + super TokenOperator +end + # The operator `==` class TEq super TokenOperator @@ -1395,116 +1460,106 @@ class AIdMethid var n_id: TId is writable, noinit end -# A method name `+` -class APlusMethid +# A method name for an operator +class AOperatorMethid super AMethid - # The `+` symbol - var n_plus: TPlus is writable, noinit + # The associated operator symbol + var n_op: Token is writable, noinit +end +# A method name `+` +class APlusMethid + super AOperatorMethid end # A method name `-` class AMinusMethid - super AMethid - - # The `-` symbol - var n_minus: TMinus is writable, noinit + super AOperatorMethid end # A method name `*` class AStarMethid - super AMethid - - # The `*` symbol - var n_star: TStar is writable, noinit + super AOperatorMethid end # A method name `**` class AStarstarMethid - super AMethid - - # The `**` symbol - var n_starstar: TStarstar is writable, noinit + super AOperatorMethid end # A method name `/` class ASlashMethid - super AMethid - - # The `/` symbol - var n_slash: TSlash is writable, noinit + super AOperatorMethid end # A method name `%` class APercentMethid - super AMethid + super AOperatorMethid +end + +# A method name `|` +class APipeMethid + super AOperatorMethid +end - # The `%` symbol - var n_percent: TPercent is writable, noinit +# A method name `^` +class ACaretMethid + super AOperatorMethid +end + +# A method name `&` +class AAmpMethid + super AOperatorMethid +end + +# A method name `~` +class ATildeMethid + super AOperatorMethid end # A method name `==` class AEqMethid - super AMethid - - # The `==` symbol - var n_eq: TEq is writable, noinit + super AOperatorMethid end # A method name `!=` class ANeMethid - super AMethid - - # The `!=` symbol - var n_ne: TNe is writable, noinit + super AOperatorMethid end # A method name `<=` class ALeMethid - super AMethid - - # The `<=` symbol - var n_le: TLe is writable, noinit + super AOperatorMethid end # A method name `>=` class AGeMethid - super AMethid - - # The `>=` symbol - var n_ge: TGe is writable, noinit + super AOperatorMethid end # A method name `<` class ALtMethid - super AMethid - - # The `<` symbol - var n_lt: TLt is writable, noinit + super AOperatorMethid end # A method name `>` class AGtMethid - super AMethid - - # The `>` symbol - var n_gt: TGt is writable, noinit + super AOperatorMethid end # A method name `<<` class ALlMethid - super AMethid - - # The `<<` symbol - var n_ll: TLl is writable, noinit + super AOperatorMethid end # A method name `>>` class AGgMethid - super AMethid + super AOperatorMethid +end - # The `>>` symbol - var n_gg: TGg is writable, noinit +# A method name `<=>` +class AStarshipMethid + super AOperatorMethid end # A method name `[]` @@ -1518,14 +1573,6 @@ class ABraMethid var n_cbra: TCbra is writable, noinit end -# A method name `<=>` -class AStarshipMethid - super AMethid - - # The `<=>` symbol - var n_starship: TStarship is writable, noinit -end - # A setter method name with a simple identifier (with a `=`) class AAssignMethid super AMethid @@ -1879,9 +1926,16 @@ end # A binary operation on a method abstract class ABinopExpr super ASendExpr + + # The operator + var n_op: Token is writable, noinit + # The second operand of the operation # Note: the receiver (`n_expr`) is the first operand var n_expr2: AExpr is writable, noinit + + # The name of the operator (eg '+') + fun operator: String is abstract end # Something that is boolean expression @@ -1896,6 +1950,9 @@ abstract class ABinBoolExpr # The first boolean operand var n_expr: AExpr is writable, noinit + # The operator + var n_op: Token is writable, noinit + # The second boolean operand var n_expr2: AExpr is writable, noinit end @@ -1913,6 +1970,9 @@ end # A `or else` expression class AOrElseExpr super ABinBoolExpr + + # The `else` keyword + var n_kwelse: TKwelse is writable, noinit end # A `implies` expression @@ -1934,41 +1994,49 @@ end # A `==` expression class AEqExpr super ABinopExpr + redef fun operator do return "==" end # A `!=` expression class ANeExpr super ABinopExpr + redef fun operator do return "!=" end # A `<` expression class ALtExpr super ABinopExpr + redef fun operator do return "<" end # A `<=` expression class ALeExpr super ABinopExpr + redef fun operator do return "<=" end # A `<<` expression class ALlExpr super ABinopExpr + redef fun operator do return "<<" end # A `>` expression class AGtExpr super ABinopExpr + redef fun operator do return ">" end # A `>=` expression class AGeExpr super ABinopExpr + redef fun operator do return ">=" end # A `>>` expression class AGgExpr super ABinopExpr + redef fun operator do return ">>" end # A type-ckeck expression. eg `x isa T` @@ -1978,6 +2046,9 @@ class AIsaExpr # The expression to check var n_expr: AExpr is writable, noinit + # The `isa` keyword + var n_kwisa: TKwisa is writable, noinit + # The destination type to check to var n_type: AType is writable, noinit end @@ -1985,44 +2056,90 @@ end # A `+` expression class APlusExpr super ABinopExpr + redef fun operator do return "+" end # A `-` expression class AMinusExpr super ABinopExpr + redef fun operator do return "-" end # A `<=>` expression class AStarshipExpr super ABinopExpr + redef fun operator do return "<=>" end # A `*` expression class AStarExpr super ABinopExpr + redef fun operator do return "*" end # A `**` expression class AStarstarExpr super ABinopExpr + redef fun operator do return "**" end # A `/` expression class ASlashExpr super ABinopExpr + redef fun operator do return "/" end # A `%` expression class APercentExpr super ABinopExpr + redef fun operator do return "%" +end + +# A `|` expression +class APipeExpr + super ABinopExpr + redef fun operator do return "|" +end + +# A `^` expression +class ACaretExpr + super ABinopExpr + redef fun operator do return "^" +end + +# A `&` expression +class AAmpExpr + super ABinopExpr + redef fun operator do return "&" +end + +# A unary operation on a method +class AUnaryopExpr + super ASendExpr + + # The operator + var n_op: Token is writable, noinit + + # The name of the operator (eg '+') + fun operator: String is abstract end # A unary minus expression. eg `-x` class AUminusExpr - super ASendExpr + super AUnaryopExpr + redef fun operator do return "-" +end + +# A unary plus expression. eg `+x` +class AUplusExpr + super AUnaryopExpr + redef fun operator do return "+" +end - # The `-` symbol - var n_minus: TMinus is writable, noinit +# A unary `~` expression +class AUtildeExpr + super AUnaryopExpr + redef fun operator do return "~" end # An explicit instantiation. eg `new T` @@ -2512,22 +2629,89 @@ end # A complex assignment operator. (`+=` and `-=`) abstract class AAssignOp super Prod + + # The combined assignment operator + var n_op: Token is writable, noinit + + # The name of the operator without the `=` (eg '+') + fun operator: String is abstract end -# The `+=` assignment operation +# A `+=` assignment operation class APlusAssignOp super AAssignOp - # The `+=` operator - var n_pluseq: TPluseq is writable, noinit + redef fun operator do return "+" end -# The `-=` assignment operator +# A `-=` assignment operation class AMinusAssignOp super AAssignOp - # The `-=` operator - var n_minuseq: TMinuseq is writable, noinit + redef fun operator do return "-" +end + +# A `*=` assignment operation +class AStarAssignOp + super AAssignOp + + redef fun operator do return "*" +end + +# A `/=` assignment operation +class ASlashAssignOp + super AAssignOp + + redef fun operator do return "/" +end + +# A `%=` assignment operation +class APercentAssignOp + super AAssignOp + + redef fun operator do return "%" +end + +# A `**=` assignment operation +class AStarstarAssignOp + super AAssignOp + + redef fun operator do return "**" +end + +# A `|=` assignment operation +class APipeAssignOp + super AAssignOp + + redef fun operator do return "|" +end + +# A `^=` assignment operation +class ACaretAssignOp + super AAssignOp + + redef fun operator do return "^" +end + +# A `&=` assignment operation +class AAmpAssignOp + super AAssignOp + + redef fun operator do return "&" +end + +# A `<<=` assignment operation +class ALlAssignOp + super AAssignOp + + redef fun operator do return "<<" +end + +# A `>>=` assignment operation +class AGgAssignOp + super AAssignOp + + redef fun operator do return ">>" end # A possibly fully-qualified module identifier