-
-
Notifications
You must be signed in to change notification settings - Fork 19
内部構造 関数の登録に関して
kujirahand edited this page Sep 1, 2024
·
4 revisions
関数の後方参照が可能になっています。そのため、NakoLexerのpreDefineFuncで事前に関数名と引数を登録します。
- NakoCompiler.compile(code, filename) => string(JSCode)
- NakoCompiler.parse(code, filename) => AST
- NakoCompiler.lex(code, filename) => AST
- NakoCompiler.rawtokenize(code, lineNo, filename) => Token[]
- prepare.convert(code) → 全角半角の統一
- lexer.tokenize => Token[] → トークン分割
- nako_lex_rulesのNakoLexRuleに基づいてトークンを分割
- convertDNCL2 → 分割されたトークンを元にしてDNCL/DNCL2に変換する
- convertIndexSyntax → 分割されたトークンを元にしてインデント構文を処理
- convertInineIndents(tokens) → 分割されたトークンを元にしてインラインインデントを処理 - NakoCompiler.converttoken
- NakoCompiler.rawtokenize(code, lineNo, filename) => Token[]
- lexer.replaceTokens ... 関数の登録を行い、TokenType.wordをfuncに変換する
- NakoLexer.preDefineFunc
- lexer._replaceWord ... TokenType.wordをfuncに変換 / 数字にくっついたマイナスの処理 / 「は」を「=」に置換など
- NakoCompiler.lex(code, filename) => AST
- NakoCompiler.parse(code, filename) => AST
- NakoCompiler.parse
- this.lex --- 上記参照
- NakoParser.parse(tokens, filename) => AST
- ASTに変換後、関数ごとにasyncFnの判定を行う