Compare commits
No commits in common. "259e7a7dd41464ab5d8a6f63a2da0ee0ee53013a" and "59b92714d2f32be00dd39d753650935bd4f16890" have entirely different histories.
259e7a7dd4
...
59b92714d2
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -34,7 +34,6 @@ report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
/tmp
|
/tmp
|
||||||
vscode-extension/tmp
|
|
||||||
/docs
|
/docs
|
||||||
|
|
||||||
*.vsix
|
*.vsix
|
||||||
|
|
@ -17,6 +17,7 @@ import {
|
||||||
CompletionItemKind,
|
CompletionItemKind,
|
||||||
TextDocumentChangeEvent,
|
TextDocumentChangeEvent,
|
||||||
} from 'vscode-languageserver/node'
|
} from 'vscode-languageserver/node'
|
||||||
|
import { setGlobals } from '../../../src/parser/tokenizer'
|
||||||
import { globals } from '../../../src/prelude'
|
import { globals } from '../../../src/prelude'
|
||||||
|
|
||||||
// Initialize parser with prelude globals so it knows dict/list/str are in scope
|
// Initialize parser with prelude globals so it knows dict/list/str are in scope
|
||||||
|
|
|
||||||
41
vscode-extension/tmp/test-dotget-parse.ts
Normal file
41
vscode-extension/tmp/test-dotget-parse.ts
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
import { parser } from '../../src/parser/shrimp'
|
||||||
|
import { setGlobals } from '../../src/parser/tokenizer'
|
||||||
|
import { PRELUDE_NAMES } from '../server/src/prelude-names'
|
||||||
|
|
||||||
|
// Set globals for DotGet detection
|
||||||
|
setGlobals(PRELUDE_NAMES as unknown as string[])
|
||||||
|
|
||||||
|
// Test cases - does incomplete DotGet parse correctly?
|
||||||
|
const testCases = [
|
||||||
|
'dict.',
|
||||||
|
'dict.g',
|
||||||
|
'dict.get',
|
||||||
|
'$.',
|
||||||
|
'$.e',
|
||||||
|
'$.env',
|
||||||
|
]
|
||||||
|
|
||||||
|
for (const code of testCases) {
|
||||||
|
console.log(`\nTesting: "${code}"`)
|
||||||
|
const tree = parser.parse(code)
|
||||||
|
const cursor = tree.cursor()
|
||||||
|
|
||||||
|
// Print the parse tree
|
||||||
|
const printTree = (depth = 0) => {
|
||||||
|
const indent = ' '.repeat(depth)
|
||||||
|
console.log(`${indent}${cursor.name} [${cursor.from}-${cursor.to}]`)
|
||||||
|
|
||||||
|
if (cursor.firstChild()) {
|
||||||
|
do {
|
||||||
|
printTree(depth + 1)
|
||||||
|
} while (cursor.nextSibling())
|
||||||
|
cursor.parent()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printTree()
|
||||||
|
|
||||||
|
// Check at cursor position (end of string)
|
||||||
|
const node = tree.resolveInner(code.length, -1)
|
||||||
|
console.log(`Node at end: ${node.name} (type: ${node.type.id})`)
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user