diff --git a/ludus.grammar b/ludus.grammar index e69de29..61c7383 100644 --- a/ludus.grammar +++ b/ludus.grammar @@ -0,0 +1,10 @@ +@top File { (Identifier | Number | String)+ } + +@skip { space } + +@tokens { + space { @whitespace+ } + Identifier { $[A-Za-z_]+ } + Number { $[0-9]+ } + String { '"' !["]* '"' } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b89b409 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,45 @@ +{ + "name": "lezer-ludus", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "lezer-ludus", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@lezer/lr": "^1.0.0" + }, + "devDependencies": { + "@lezer/generator": "^1.0.0" + } + }, + "node_modules/@lezer/common": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.1.1.tgz", + "integrity": "sha512-aAPB9YbvZHqAW+bIwiuuTDGB4DG0sYNRObGLxud8cW7osw1ZQxfDuTZ8KQiqfZ0QJGcR34CvpTMDXEyo/+Htgg==" + }, + "node_modules/@lezer/generator": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@lezer/generator/-/generator-1.5.1.tgz", + "integrity": "sha512-vodJv2JPwsFsiBBHE463yBhvUI9TmhIu5duF/8MH304xNS6FyWH/vTyG61pjhERm5f+VBP94co0eiN+afWcvXw==", + "dev": true, + "dependencies": { + "@lezer/common": "^1.0.2", + "@lezer/lr": "^1.3.0" + }, + "bin": { + "lezer-generator": "src/lezer-generator.cjs" + } + }, + "node_modules/@lezer/lr": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.14.tgz", + "integrity": "sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + } + } +} diff --git a/package.json b/package.json index 2c31a8e..e4363ee 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "@lezer/lr": "^1.0.0" }, "scripts": { - "prepare": "lezer-generator src/my.grammar -o src/parser.js" + "prepare": "lezer-generator ludus.grammar -o parser.js" }, "author": "Scott Richmond", "license": "MIT" diff --git a/parser.js b/parser.js new file mode 100644 index 0000000..2c8b5fc --- /dev/null +++ b/parser.js @@ -0,0 +1,16 @@ +// This file was generated by lezer-generator. You probably shouldn't edit it. +import {LRParser} from "@lezer/lr" +export const parser = LRParser.deserialize({ + version: 14, + states: "hOVQPOOOOQO'#Ca'#CaQVQPOOOOQO-E6_-E6_", + stateData: "b~OWOS~OQPORPOSPO~O", + goto: "]UPPPPPVQQORRQ", + nodeNames: "⚠ File Identifier Number String", + maxTerm: 8, + skippedNodes: [0], + repeatNodeCount: 1, + tokenData: "#z~R_X^!Qpq!Qrs!u!Q![#d!c!}#l#R#S#l#T#o#l#y#z!Q$f$g!Q#BY#BZ!Q$IS$I_!Q$I|$JO!Q$JT$JU!Q$KV$KW!Q&FU&FV!Q~!VYW~X^!Qpq!Q#y#z!Q$f$g!Q#BY#BZ!Q$IS$I_!Q$I|$JO!Q$JT$JU!Q$KV$KW!Q&FU&FV!Q~!xTOr!urs#Xs;'S!u;'S;=`#^<%lO!u~#^OS~~#aP;=`<%l!u~#iPR~!Q![#d~#qRQ~!c!}#l#R#S#l#T#o#l", + tokenizers: [0], + topRules: {"File":[0,1]}, + tokenPrec: 0 +}) diff --git a/parser.terms.js b/parser.terms.js new file mode 100644 index 0000000..f5e3d75 --- /dev/null +++ b/parser.terms.js @@ -0,0 +1,6 @@ +// This file was generated by lezer-generator. You probably shouldn't edit it. +export const + File = 1, + Identifier = 2, + Number = 3, + String = 4