File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -11,11 +11,11 @@ import slangPrint from './slangPrinter.js';
1111import { isBlockComment , isComment } from './slang-utils/is-comment.js' ;
1212import { locEnd , locStart } from './slang-utils/loc.js' ;
1313import {
14- slangParserId ,
15- slangYulParserId ,
14+ antlrAstId ,
1615 antlrParserId ,
1716 slangAstId ,
18- antlrAstId
17+ slangParserId ,
18+ slangYulParserId
1919} from './constants.js' ;
2020
2121import type {
Original file line number Diff line number Diff line change @@ -10,24 +10,22 @@ import type { AstNode } from '../slang-nodes/types.d.ts';
1010
1111const supportedVersions = LanguageFacts . allVersions ( ) ;
1212const supportedLength = supportedVersions . length ;
13+ const rootKindMap = new Map < ParserOptions < AstNode > [ 'parser' ] , NonterminalKind > ( [
14+ [ slangParserId , NonterminalKind . SourceUnit ] ,
15+ [ slangYulParserId , NonterminalKind . YulBlock ]
16+ ] ) ;
1317
1418function parserAndOutput (
1519 text : string ,
1620 version : string ,
1721 { parser : optionsParser } : ParserOptions < AstNode >
1822) : { parser : Parser ; parseOutput : ParseOutput } {
19- let rootKind ;
20- switch ( optionsParser ) {
21- case slangParserId :
22- rootKind = NonterminalKind . SourceUnit ;
23- break ;
24- case slangYulParserId :
25- rootKind = NonterminalKind . YulBlock ;
26- break ;
27- default :
28- throw new Error (
29- `Parser '${ optionsParser as string } ' is not supported for Language Inference.`
30- ) ;
23+ const rootKind = rootKindMap . get ( optionsParser ) ;
24+
25+ if ( rootKind === undefined ) {
26+ throw new Error (
27+ `Parser '${ optionsParser as string } ' is not supported for Language Inference.`
28+ ) ;
3129 }
3230
3331 const parser = Parser . create ( version ) ;
You can’t perform that action at this time.
0 commit comments