# Custom syntax

Due to Skript and skript-reflect limitations, it is not easy to create custom syntax through Java calls alone. To help with this, skript-reflect offers utilities that simplify the creation of custom syntax.

## Shared Syntax

### Event Classes

```
event-classes
```

### Expression

```
[the] expr[ession][s](-| )%number%
```

{% hint style="info" %}
When used with [the raw expression](../../basics/utilities#raw-expression), you can set it to a value, which will change the input value from that argument. This can be used to store data in variables in the calling trigger.

```
import:
	ch.njol.skript.lang.Variable

effect put %objects% in %objects%:
	parse:
		expr-2 is an instance of Variable # to check if the second argument is a variable
		continue
	trigger:
		set raw expr-2 to expr-1
```
{% endhint %}

### Matched Pattern

```
[the] [matched] pattern
```

### Parser Mark

```
[the] [parse[r]] mark
```

### Parse Tag

Parse tags are like parse tags, but they're a set of strings instead of a single integer.

Parse tags were added in Skript 2.6.1, and are explained in more detail [here](https://github.com/SkriptLang/Skript/pull/4176#issuecomment-882056536)

```
[the] parse[r] tags
```

### Parser Regular Expression

```
[the] [parse[r]] (regex|regular expression)(-| )%number%
```

### Continue

```
continue
```

{% content-ref url="custom-syntax/effects" %}
[effects](custom-syntax/effects)
{% endcontent-ref %}

{% content-ref url="custom-syntax/conditions" %}
[conditions](custom-syntax/conditions)
{% endcontent-ref %}

{% content-ref url="custom-syntax/expressions" %}
[expressions](custom-syntax/expressions)
{% endcontent-ref %}

{% content-ref url="custom-syntax/events" %}
[events](custom-syntax/events)
{% endcontent-ref %}
