From f41ef82ce942b723af668742332b367432511ba3 Mon Sep 17 00:00:00 2001 From: Futago-za Ryuu Date: Fri, 26 Jan 2018 10:32:55 +0000 Subject: [PATCH] Update tsd to include latest changes These changes are mainly from from @Minigun and @futagoza --- lib/typings/api.d.ts | 93 +++++++++++++++++++++++++++------------- lib/typings/modules.d.ts | 36 +--------------- 2 files changed, 66 insertions(+), 63 deletions(-) diff --git a/lib/typings/api.d.ts b/lib/typings/api.d.ts index 8f6f963..25b4ba4 100644 --- a/lib/typings/api.d.ts +++ b/lib/typings/api.d.ts @@ -5,7 +5,7 @@ export as namespace peg; declare namespace peg { - type Grammar = parser.ast.Grammar; + type AST = parser.Grammar; type GeneratedParser = gp.API; type SyntaxError = gp.SyntaxErrorConstructor; type SourceLocation = gp.SourceLocation; @@ -34,47 +34,82 @@ declare namespace peg { namespace parser { /** - * Interface's that describe the abstact sytax tree used by PEG.js + * PEG.js node constructor, used internally by the PEG.js to create nodes. */ - namespace ast { + class Node { - /** - * Unlike `parser.ast.INode` this interface represent's all PEG.js node's. - */ - type Node - = Grammar - | Initializer - | Rule - | Named - | Expression; + type: string; + location: SourceLocation; - /** - * Basic representation of a PEG.js node. - */ - interface INode { + constructor( type: string, location: SourceLocation ); - type: string; - location: SourceLocation; + } - } + /** + * The main PEG.js AST class returned by the parser. + */ + class Grammar extends Node { - interface Grammar extends INode { + // Default properties and methods - // Default properties + private readonly _alwaysConsumesOnSuccess: any; + type: "grammar"; + comments?: CommentMao; + initializer?: ast.Initializer; + rules: ast.Rule[]; - type: "grammar"; - initializer?: Initializer; - rules: Rule[]; + constructor( + initializer: void | ast.Initializer, + rules: ast.Rule[], + comments: void | CommentMao, + location: SourceLocation, + ); - // Added by Bytecode generator + findRule( name: string ): ast.Rule | void; + indexOfRule( name: string ): number; + alwaysConsumesOnSuccess( node: ast.Node ): boolean; - consts?: string[]; + // Added by Bytecode generator - // Added by JavaScript generator + literals?: string[]; + classes?: string[]; + expectations?: string[]; + functions?: string[]; - code?: string; + // Added by JavaScript generator - } + code?: string; + + } + + interface CommentMao { + + [ offset: number ]: { + + text: string; + multiline: boolean; + location: SourceLocation; + + }; + + } + + /** + * Interface's that describe the abstact sytax tree used by PEG.js + */ + namespace ast { + + interface INode extends parser.Node { } + + /** + * Unlike `parser.Node` this interface represent's all PEG.js node's. + */ + type Node + = parser.Grammar + | Initializer + | Rule + | Named + | Expression; interface Initializer extends INode { diff --git a/lib/typings/modules.d.ts b/lib/typings/modules.d.ts index 6606343..d46c558 100644 --- a/lib/typings/modules.d.ts +++ b/lib/typings/modules.d.ts @@ -20,27 +20,8 @@ declare module "pegjs/lib/parser" { declare module "pegjs/lib/parser/ast" { - export class Node { - - type: string; - location: peg.SourceLocation; - - constructor( type: string, location: peg.SourceLocation ); - - } - - export class Grammar extends Node { - - initializer?: peg.parser.ast.Initializer; - rules: peg.parser.ast.Rule[]; - - constructor( - initializer: void | peg.parser.ast.Initializer, - rules: peg.parser.ast.Rule[], - location: peg.SourceLocation, - ); - - } + export const Node: peg.parser.Node; + export const Grammar: peg.parser.Grammar; } @@ -62,19 +43,6 @@ declare module "pegjs/lib/compiler" { } -declare module "pegjs/lib/compiler/asts" { - - namespace asts { - - function findRule( ast: peg.Grammar, name: string ): peg.parser.ast.Rule | void; - function indexOfRule( ast: peg.Grammar, name: string ): number; - function alwaysConsumesOnSuccess( ast: peg.Grammar, node: peg.parser.ast.Node ): boolean; - - } - export default asts; - -} - declare module "pegjs/lib/compiler/index" { export default peg.compiler;