partially working
This commit is contained in:
889
src/grammar.json
generated
889
src/grammar.json
generated
File diff suppressed because it is too large
Load Diff
511
src/node-types.json
generated
511
src/node-types.json
generated
@@ -1,31 +1,4 @@
|
||||
[
|
||||
{
|
||||
"type": "appExpr",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "operator",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "strLit",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "typeExpr",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "varname",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "binder",
|
||||
"named": true,
|
||||
@@ -60,10 +33,6 @@
|
||||
{
|
||||
"type": "typeExpr",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "varname",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -84,17 +53,53 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "conDef",
|
||||
"type": "classDecl",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "character",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "className",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "end",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "identifier",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "recUpdate",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "semi",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "sigDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "start",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "typeExpr",
|
||||
"named": true
|
||||
@@ -110,20 +115,16 @@
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "conDef",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "end",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "identifier",
|
||||
"type": "semi",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "semi",
|
||||
"type": "sigDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
@@ -146,12 +147,31 @@
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "appExpr",
|
||||
"type": "lhs",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "typeExpr",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "whereClause",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "deriveDecl",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "identifier",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -165,19 +185,7 @@
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "caseAlt",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "end",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "semi",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "start",
|
||||
"type": "orAlt",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
@@ -235,19 +243,7 @@
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "caseAlt",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "end",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "semi",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "start",
|
||||
"type": "orAlt",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
@@ -280,6 +276,21 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dollar",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": false,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "term",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "forall",
|
||||
"named": true,
|
||||
@@ -329,6 +340,41 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "instanceDecl",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "defDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "end",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "semi",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "sigDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "start",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "typeExpr",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "lamExpr",
|
||||
"named": true,
|
||||
@@ -348,6 +394,60 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "lhs",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "character",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "identifier",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "recUpdate",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "typeExpr",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "mixfixDecl",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "name",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "module",
|
||||
"named": true,
|
||||
@@ -356,6 +456,10 @@
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "classDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "dataDecl",
|
||||
"named": true
|
||||
@@ -364,6 +468,10 @@
|
||||
"type": "defDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "deriveDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "identifier",
|
||||
"named": true
|
||||
@@ -372,10 +480,30 @@
|
||||
"type": "importDef",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "instanceDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "mixfixDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "pfuncDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "ptypeDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "semi",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "shortDataDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "sigDecl",
|
||||
"named": true
|
||||
@@ -383,6 +511,63 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "orAlt",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": false,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "caseAlt",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "pfuncDecl",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "identifier",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "jsLitString",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "typeExpr",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ptypeDecl",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "name",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "typeExpr",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "qname",
|
||||
"named": true,
|
||||
@@ -398,6 +583,60 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "recUpdate",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "identifier",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "term",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "shortDataDecl",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "character",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "identifier",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "recUpdate",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "typeExpr",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sigDecl",
|
||||
"named": true,
|
||||
@@ -442,13 +681,21 @@
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "appExpr",
|
||||
"type": "character",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "doBlock",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "dollar",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "identifier",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "ifThen",
|
||||
"named": true
|
||||
@@ -456,6 +703,22 @@
|
||||
{
|
||||
"type": "lamExpr",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "recUpdate",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "typeExpr",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -465,7 +728,7 @@
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": false,
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
@@ -479,20 +742,40 @@
|
||||
{
|
||||
"type": "term",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "typeExpr",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "varname",
|
||||
"type": "whereClause",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": false,
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "identifier",
|
||||
"type": "defDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "end",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "semi",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "sigDecl",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "start",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
@@ -502,6 +785,10 @@
|
||||
"type": "$",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "$=",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "(",
|
||||
"named": false
|
||||
@@ -522,6 +809,14 @@
|
||||
"type": ":",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": ":=",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": ";",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "<-",
|
||||
"named": false
|
||||
@@ -534,19 +829,47 @@
|
||||
"type": "=>",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "[",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "\\",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "]",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "character",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "class",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "className",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "comment",
|
||||
"named": true,
|
||||
"extra": true
|
||||
},
|
||||
{
|
||||
"type": "conName",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "data",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "derive",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "do",
|
||||
"named": false
|
||||
@@ -571,6 +894,22 @@
|
||||
"type": "import",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "infixl",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "infixr",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "instance",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "jsLitString",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "let",
|
||||
"named": false
|
||||
@@ -580,9 +919,29 @@
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "operator",
|
||||
"type": "name",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "name",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "pfunc",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "ptype",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "quantity",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "semi",
|
||||
"named": true
|
||||
@@ -592,13 +951,21 @@
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "strLit",
|
||||
"type": "string",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "then",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "typeName",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "uses",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "where",
|
||||
"named": false
|
||||
|
||||
33765
src/parser.c
generated
33765
src/parser.c
generated
File diff suppressed because it is too large
Load Diff
@@ -82,7 +82,9 @@ bool tree_sitter_newt_external_scanner_scan(State *state, TSLexer *lexer,
|
||||
|
||||
int32_t cur = peek(state);
|
||||
uint32_t col = lexer->get_column(lexer);
|
||||
if (ws && syms[VIRT_START]) {
|
||||
// START must indent more
|
||||
// We have `ws` so we make forward progress
|
||||
if (ws && syms[VIRT_START] && cur < col) {
|
||||
fprintf(stderr, "start [%d %d %d %d] %d %d\n", syms[0], syms[1], syms[2],
|
||||
syms[3], col, cur);
|
||||
push(state, col);
|
||||
@@ -90,7 +92,10 @@ bool tree_sitter_newt_external_scanner_scan(State *state, TSLexer *lexer,
|
||||
return true;
|
||||
}
|
||||
// if we are in a smaller column, we force virt_end
|
||||
if (syms[VIRT_END]) {
|
||||
// even if it's not expected (I think this is important)
|
||||
// on the editor side there is a `then` expected vs outdented `then`, but
|
||||
// maybe GLR can detect a "stray" END token?
|
||||
if (syms[VIRT_END] || true) {
|
||||
|
||||
if (col < cur) {
|
||||
fprintf(stderr, "end [%d %d %d %d] %d %d\n", syms[0], syms[1], syms[2],
|
||||
|
||||
Reference in New Issue
Block a user