---
title: "n8n Expression language support"
description: "```js import { parserWithMetaData as n8nParser } from '@n8n/codemirror-lang'; import { LanguageSupport, LRLanguage } from '@codemirror/language'; import { parseMixed } from '@lezer/common'; import { parser as jsParser } from '@lezer/javascript';"
type: skill
canonical_url: https://claudary.paisolsolutions.com/skills/readme-506
source: "Claudary"
difficulty: intermediate
author: "Claude Code Knowledge Pack"
date: 2026-07-10T11:36:38.436Z
license: CC-BY-4.0
attribution: "n8n Expression language support — Claudary (https://claudary.paisolsolutions.com/skills/readme-506)"
---

# n8n Expression language support
```js import { parserWithMetaData as n8nParser } from '@n8n/codemirror-lang'; import { LanguageSupport, LRLanguage } from '@codemirror/language'; import { parseMixed } from '@lezer/common'; import { parser as jsParser } from '@lezer/javascript';

## Overview

# n8n Expression language support

## Usage

```js
import { parserWithMetaData as n8nParser } from '@n8n/codemirror-lang';
import { LanguageSupport, LRLanguage } from '@codemirror/language';
import { parseMixed } from '@lezer/common';
import { parser as jsParser } from '@lezer/javascript';

const n8nPlusJsParser = n8nParser.configure({
	wrap: parseMixed((node) => {
		if (node.type.isTop) return null;

		return node.name === 'Resolvable'
			? { parser: jsParser, overlay: (node) => node.type.name === 'Resolvable' }
			: null;
	}),
});

const n8nLanguage = LRLanguage.define({ parser: n8nPlusJsParser });

export function n8nExpressionLanguageSupport() {
	return new LanguageSupport(n8nLanguage);
}
```

## Supported Unicode ranges

- From `Basic Latin` up to and including `Currency Symbols`
- `Miscellaneous Symbols and Pictographs`
- `CJK Unified Ideographs`

---

Source: [Claudary](https://claudary.paisolsolutions.com/skills/readme-506) · https://claudary.paisolsolutions.com
