Add capacitorjs runtime
This commit is contained in:
parent
d0ece489ee
commit
f90c0e6c40
8362 changed files with 1502407 additions and 1 deletions
58
node_modules/chevrotain/src/parse/grammar/resolver.ts
generated
vendored
Normal file
58
node_modules/chevrotain/src/parse/grammar/resolver.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
import {
|
||||
IParserUnresolvedRefDefinitionError,
|
||||
ParserDefinitionErrorType
|
||||
} from "../parser/parser"
|
||||
import { forEach, values } from "../../utils/utils"
|
||||
import { NonTerminal, Rule } from "./gast/gast_public"
|
||||
import { GAstVisitor } from "./gast/gast_visitor_public"
|
||||
import {
|
||||
IGrammarResolverErrorMessageProvider,
|
||||
IParserDefinitionError
|
||||
} from "../../../api"
|
||||
|
||||
export function resolveGrammar(
|
||||
topLevels: Record<string, Rule>,
|
||||
errMsgProvider: IGrammarResolverErrorMessageProvider
|
||||
): IParserDefinitionError[] {
|
||||
let refResolver = new GastRefResolverVisitor(topLevels, errMsgProvider)
|
||||
refResolver.resolveRefs()
|
||||
return refResolver.errors
|
||||
}
|
||||
|
||||
export class GastRefResolverVisitor extends GAstVisitor {
|
||||
public errors: IParserUnresolvedRefDefinitionError[] = []
|
||||
private currTopLevel: Rule
|
||||
|
||||
constructor(
|
||||
private nameToTopRule: Record<string, Rule>,
|
||||
private errMsgProvider: IGrammarResolverErrorMessageProvider
|
||||
) {
|
||||
super()
|
||||
}
|
||||
|
||||
public resolveRefs(): void {
|
||||
forEach(values(this.nameToTopRule), (prod) => {
|
||||
this.currTopLevel = prod
|
||||
prod.accept(this)
|
||||
})
|
||||
}
|
||||
|
||||
public visitNonTerminal(node: NonTerminal): void {
|
||||
let ref = this.nameToTopRule[node.nonTerminalName]
|
||||
|
||||
if (!ref) {
|
||||
let msg = this.errMsgProvider.buildRuleNotFoundError(
|
||||
this.currTopLevel,
|
||||
node
|
||||
)
|
||||
this.errors.push({
|
||||
message: msg,
|
||||
type: ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,
|
||||
ruleName: this.currTopLevel.name,
|
||||
unresolvedRefName: node.nonTerminalName
|
||||
})
|
||||
} else {
|
||||
node.referencedRule = ref
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue