ANTLR ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਕਸਟਮ DSLs ਲਈ ਮਾਸਟਰਿੰਗ ਟਾਈਪਸਕ੍ਰਿਪਟ ਪਾਰਸਿੰਗ
ਬੇਸਪੋਕ ਡੋਮੇਨ-ਵਿਸ਼ੇਸ਼ ਭਾਸ਼ਾਵਾਂ (DSLs) ਨਾਲ ਕੰਮ ਕਰਨਾ ਜੋ ਕਿ ਟਾਈਪਸਕ੍ਰਿਪਟ ਵਿਆਕਰਣ ਦੇ ਸਮਾਨ ਹਨ ਸ਼ਕਤੀਸ਼ਾਲੀ ਪਾਰਸਿੰਗ ਟੂਲਸ ਦੀ ਲੋੜ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ANTLR, ਇੱਕ ਮਜ਼ਬੂਤ ਪਾਰਸਰ ਜਨਰੇਟਰ, ਲੈਕਸਰ ਅਤੇ ਪਾਰਸਰ ਕੰਪੋਨੈਂਟ ਤਿਆਰ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਅਜਿਹੇ DSLs ਨੂੰ TypeScript ਐਬਸਟਰੈਕਟ ਸਿੰਟੈਕਸ ਟ੍ਰੀਜ਼ (ASTs) ਵਿੱਚ ਤਬਦੀਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਇਸਨੂੰ ਟਾਈਪਸਕ੍ਰਿਪਟ ਵਿੱਚ ਲਾਗੂ ਕਰਨਾ ਕੁਝ ਪੇਚੀਦਗੀਆਂ ਪੇਸ਼ ਕਰਦਾ ਹੈ।
ANTLR/Grammars-v4 ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਵਿਆਕਰਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਡਿਵੈਲਪਰ.g4 ਫਾਈਲਾਂ ਤੋਂ ਪਾਰਸਰ ਅਤੇ ਲੈਕਸਰ ਬਣਾ ਸਕਦੇ ਹਨ ਜਿਵੇਂ ਕਿ TypeScript Lexer.g4 ਅਤੇ TypeScriptParser.g4. ਇਹਨਾਂ ਫਾਈਲਾਂ ਨੂੰ ਇੱਕ ਸ਼ੁੱਧ TypeScript AST ਨੋਡ ਬਣਾਉਣ ਲਈ ਲੋੜੀਂਦਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਟਾਈਪ ਪਰਿਭਾਸ਼ਾਵਾਂ ਨਾਲ ਕੰਮ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਸਦੀ ਉਪਯੋਗਤਾ ਦੇ ਬਾਵਜੂਦ, ਗੁੰਝਲਦਾਰ ਤਾਰਾਂ ਨੂੰ ਪਾਰਸ ਕਰਨਾ - ਜਿਵੇਂ ਕਿ ਕਿਸਮ ਘੋਸ਼ਣਾ - ਮੁਸ਼ਕਲ ਹੋ ਸਕਦਾ ਹੈ।
ਵਰਗੀ ਸਤਰ ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ANTLR-ਅਧਾਰਿਤ ਲੈਕਸਰ ਅਤੇ ਪਾਰਸਰ ਦੀ ਵਰਤੋਂ ਕਰਨਾ typeStorage= {todos:Todo[];} ਅਚਾਨਕ ਅਸਫਲਤਾਵਾਂ ਦਾ ਨਤੀਜਾ ਹੋ ਸਕਦਾ ਹੈ। TypeScript ਟੈਸਟਾਂ ਨੂੰ ਕੰਪਾਇਲ ਕਰਦੇ ਸਮੇਂ, ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਆਮ ਤਰੁੱਟੀਆਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈ ਸਕਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਮੇਲ ਖਾਂਦੀਆਂ ਕਿਸਮਾਂ ਜਾਂ ਗੁੰਮ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਟੋਕਨ ਸਰੋਤ, ਪਰਿਣਾਮ ਸਵਰੂਪ ਵਿੱਚ TSError ਸੰਕਲਨ ਦੌਰਾਨ ਸੁਨੇਹੇ.
ਇਸ ਲੇਖ ਵਿੱਚ, ਅਸੀਂ ਦੇਖਾਂਗੇ ਕਿ ਇਹਨਾਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਕਿਵੇਂ ਹੱਲ ਕਰਨਾ ਹੈ ਅਤੇ ANTLR/Grammars-v4 ਰਿਪੋਜ਼ਟਰੀ ਉਦਾਹਰਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟੈਸਟਾਂ ਨੂੰ ਕਿਵੇਂ ਚਲਾਉਣਾ ਹੈ। ਅੰਤ ਵਿੱਚ, ਤੁਸੀਂ TypeScript-ਵਰਗੇ DSLs ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਪਾਰਸ ਕਰਨ ਦੇ ਯੋਗ ਹੋਵੋਗੇ।
ਹੁਕਮ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ |
---|---|
CharStreams.fromString() | ਇਹ ਕਮਾਂਡ ਇੱਕ ਇਨਪੁਟ ਸਤਰ ਤੋਂ ਅੱਖਰਾਂ ਦੀ ਇੱਕ ਸਟ੍ਰੀਮ ਬਣਾਉਂਦੀ ਹੈ। ਕਸਟਮ DSL ਸਟ੍ਰਿੰਗਸ ਤੋਂ ਟੋਕਨ ਬਣਾਉਣ ਵੇਲੇ ਇਹ ਲੋੜੀਂਦਾ ਹੈ ਜੋ ਕਿ ਟਾਈਪਸਕ੍ਰਿਪਟ ਵਰਗੇ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ, ਲੈਕਸਰ ਨੂੰ ਅੱਖਰ ਦੁਆਰਾ ਇਨਪੁਟ ਸਟ੍ਰਿੰਗ ਅੱਖਰ 'ਤੇ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। |
CommonTokenStream() | ਲੈਕਸਰ ਆਉਟਪੁੱਟ ਤੋਂ ਟੋਕਨਾਂ ਦੀ ਇੱਕ ਸਟ੍ਰੀਮ ਬਣਾਉਂਦਾ ਹੈ। ਪਾਰਸਰ ਦੁਆਰਾ ਟੋਕਨਾਈਜ਼ਡ ਇਨਪੁਟ ਨੂੰ ਸੰਭਾਲਣ ਤੋਂ ਪਹਿਲਾਂ ਇਹ ਟੋਕਨ ਸਟ੍ਰੀਮ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਵਿਚੋਲਾ ਕਦਮ ਹੈ। ਇਹ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਵਿਆਕਰਣ ਨਿਯਮਾਂ ਦੀ ਪਾਲਣਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਟੋਕਨਾਂ ਦੇ ਪ੍ਰਬੰਧਨ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰਦਾ ਹੈ। |
new TypeScriptLexer() | TypeScriptLexer.g4 ਵਿਆਕਰਣ ਨਿਯਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਨਪੁਟ ਨੂੰ ਟੋਕਨਾਈਜ਼ ਕਰਦਾ ਹੈ। ਇਹ ਕੱਚੇ ਇੰਪੁੱਟ ਨੂੰ ਪਾਰਸਰ ਦੁਆਰਾ ਵਰਤੇ ਗਏ ਲੇਕਸੀਕਲ ਟੋਕਨਾਂ ਵਿੱਚ ਬਦਲਦਾ ਹੈ। |
new TypeScriptParser() | ਲੈਕਸਰ ਦੁਆਰਾ ਤਿਆਰ ਟੋਕਨ ਸਟ੍ਰੀਮ ਨਾਲ ਇੱਕ ਪਾਰਸਰ ਆਬਜੈਕਟ ਬਣਾਉਂਦਾ ਹੈ। ਦ TypeScriptParser.g4 ਫਾਈਲ ਇਸ ਪਾਰਸਰ ਲਈ ਨਿਯਮਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੀ ਹੈ, ਜੋ ਟੋਕਨਾਂ ਦੀ ਵਿਆਖਿਆ ਕਰਦਾ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨੂੰ AST ਵਿੱਚ ਬਦਲਦਾ ਹੈ। |
parser.startRule() | ਇਹ ਕਮਾਂਡ ਵਿਆਕਰਣ ਦੇ ਪਾਰਸਿੰਗ ਨਿਯਮਾਂ ਨੂੰ ਸਰਗਰਮ ਕਰਦੀ ਹੈ, ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਪਾਰਸ ਕੀਤੀ ਜਾ ਰਹੀ ਭਾਸ਼ਾ ਦੀ ਉੱਚ-ਪੱਧਰੀ ਬਣਤਰ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਪਾਰਸਿੰਗ DSL ਵਿੱਚ ਸਹੀ ਸਥਿਤੀ ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ। |
implements TokenSource | ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਲੈਕਸਰ ਕਲਾਸ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਟੋਕਨ ਸਰੋਤ ਇੰਟਰਫੇਸ. ਇਹ ਗਾਰੰਟੀ ਦਿੰਦਾ ਹੈ ਕਿ ਲੈਕਸਰ ਟਾਈਪਸਕ੍ਰਿਪਟ ਵਿੱਚ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ, ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਗੁੰਮ ਢੰਗਾਂ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਪਾਰਸਿੰਗ ਅਸਫਲਤਾਵਾਂ। |
nextToken() | ਲੈਕਸਰ ਦੇ ਡਿਫੌਲਟ ਵਿਵਹਾਰ ਨੂੰ ਓਵਰਰਾਈਡ ਕਰਦੇ ਹੋਏ, ਇਨਪੁਟ ਸਟ੍ਰੀਮ ਤੋਂ ਅਗਲਾ ਟੋਕਨ ਤਿਆਰ ਕਰਦਾ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਡੀਐਸਐਲ ਸਟ੍ਰਿੰਗਾਂ ਨੂੰ ਪਾਰਸ ਕਰਨ ਦੌਰਾਨ ਲੈਕਸਰ ਪਾਰਸਰ ਨੂੰ ਟੋਕਨ ਪ੍ਰਦਾਨ ਕਰਨਾ ਜਾਰੀ ਰੱਖ ਸਕਦਾ ਹੈ। |
describe() | ਇਹ ਟੈਸਟਿੰਗ ਫਰੇਮਵਰਕ ਦਾ ਹਿੱਸਾ ਹੈ ਅਤੇ ਇੱਕ ਟੈਸਟ ਸੂਟ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਕਈ ਟੈਸਟਾਂ ਨੂੰ ਜੋੜਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਗਾਰੰਟੀ ਦੇਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਕਿ ਵੱਖ-ਵੱਖ DSL ਸਤਰਾਂ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਦੇ ਸਮੇਂ ਪਾਰਸਰ ਦੇ ਵੱਖ-ਵੱਖ ਹਿੱਸੇ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹਨ। |
it() | ਇੱਕ ਟੈਸਟ ਸੂਟ ਦੇ ਅੰਦਰ ਇੱਕ ਸਿੰਗਲ ਟੈਸਟ ਕੇਸ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ। ਇਹ ਖਾਸ ਵਿਵਹਾਰ ਦੀ ਤਸਦੀਕ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਇਹ ਪੁਸ਼ਟੀ ਕਰਨਾ ਕਿ ਪਾਰਸਰ ਸਹੀ ਕਿਸਮ ਦੀਆਂ ਪਰਿਭਾਸ਼ਾਵਾਂ ਨੂੰ ਸੰਭਾਲ ਸਕਦਾ ਹੈ ਜਾਂ ਨੁਕਸਦਾਰ ਇਨਪੁਟਸ ਲਈ ਉਚਿਤ ਗਲਤੀਆਂ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ। |
ਕਸਟਮ DSL ਲਈ ANTLR ਨਾਲ ਟਾਈਪਸਕ੍ਰਿਪਟ ਪਾਰਸਿੰਗ ਨੂੰ ਸਮਝਣਾ
ਦਿੱਤੀਆਂ ਗਈਆਂ ਸਕ੍ਰਿਪਟਾਂ ਵਿੱਚ, ਅਸੀਂ ਇੱਕ ਬੇਸਪੋਕ DSL (ਡੋਮੇਨ-ਵਿਸ਼ੇਸ਼ ਭਾਸ਼ਾ) ਲਈ ਇੱਕ ਲੈਕਸਰ ਅਤੇ ਪਾਰਸਰ ਵਿਕਸਿਤ ਕਰਨ ਲਈ ANTLR ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ ਜੋ TypeScript ਦੇ ਟਾਈਪ ਸਿਸਟਮ ਦੀ ਨਕਲ ਕਰਦਾ ਹੈ। ਸ਼ੁਰੂਆਤੀ ਪੜਾਅ ਵਿੱਚ ਵਿਆਕਰਣ ਦੇ ਨਿਯਮਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ ਹੈ TypeScript Lexer.g4 ਅਤੇ TypeScript Parser.g4 ਫਾਈਲਾਂ, ਜੋ ਟੋਕਨਾਈਜ਼ੇਸ਼ਨ ਅਤੇ ਇਨਪੁਟ ਨੂੰ ਪਾਰਸ ਕਰਨ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰਦੀਆਂ ਹਨ। ਕਮਾਂਡ 'npx antlr4ts TypeScriptLexer.g4 TypeScriptParser.g4' ਲੋੜੀਂਦੀਆਂ TypeScript ਫਾਈਲਾਂ ਤਿਆਰ ਕਰਦੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਲੈਕਸਰ ਅਤੇ ਪਾਰਸਰ ਸ਼ਾਮਲ ਹਨ। ਇਹ ਫ਼ਾਈਲਾਂ 'typeStorage = {todos: Todo[];}' ਵਰਗੀਆਂ ਸਟ੍ਰਿੰਗਾਂ ਨੂੰ ਇੱਕ ਸਟ੍ਰਕਚਰਡ AST (ਐਬਸਟ੍ਰੈਕਟ ਸਿੰਟੈਕਸ ਟ੍ਰੀ) ਦੇ ਤੌਰ 'ਤੇ ਪਾਰਸ ਕਰਦੀਆਂ ਹਨ, ਜੋ ਕਿ ਮਨੁੱਖੀ-ਪੜ੍ਹਨਯੋਗ ਕੋਡ ਨੂੰ ਮਸ਼ੀਨ-ਪੜ੍ਹਨਯੋਗ ਫਾਰਮੈਟ ਵਿੱਚ ਬਦਲਣ ਲਈ ਇੱਕ ਮੁੱਖ ਕਦਮ ਹੈ।
ਬਣਾਇਆ ਗਿਆ ਲੈਕਸਰ ਇਨਪੁਟ ਸਤਰ ਨੂੰ ਟੋਕਨਾਂ ਦੀ ਇੱਕ ਸਟ੍ਰੀਮ ਵਿੱਚ ਬਦਲਦਾ ਹੈ, ਜਿਸਨੂੰ ਪਾਰਸਰ ਫਿਰ '.g4' ਫਾਈਲਾਂ ਵਿੱਚ ਦਰਸਾਏ ਵਿਆਕਰਨਿਕ ਨਿਯਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਿਆਖਿਆ ਕਰਦਾ ਹੈ। ਸਾਡੀ ਸਕ੍ਰਿਪਟ ਵਿੱਚ, ਅਸੀਂ 'CharStreams.fromString()' ਦੀ ਵਰਤੋਂ ਲੈਕਸਰ ਲਈ ਇੱਕ ਅੱਖਰ ਸਟ੍ਰੀਮ ਵਿੱਚ ਇਨਪੁਟ ਸਟ੍ਰਿੰਗ ਨੂੰ ਬਦਲਣ ਲਈ ਕਰਦੇ ਹਾਂ। ਲੈਕਸਰ ਆਉਟਪੁੱਟ ਦੀ ਵਰਤੋਂ ਫਿਰ a ਬਣਾਉਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਕਾਮਨ ਟੋਕਨਸਟ੍ਰੀਮ, ਜਿਸ ਨੂੰ ਪਾਰਸਰ ਵਰਤੇਗਾ। ਇੱਕ ਲੈਕਸਰ ਅਤੇ ਟੋਕਨ ਸਟ੍ਰੀਮ ਦਾ ਇਹ ਸੁਮੇਲ ਪਾਰਸਰ ਨੂੰ ਵਿਆਕਰਣ ਨਿਯਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੰਪੁੱਟ ਦੀ ਬਣਤਰ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸਮਝਣ ਦੇ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਕਿਸਮ ਦੇ ਘੋਸ਼ਣਾਵਾਂ ਨੂੰ ਪਛਾਣਨਾ।
ਦੂਜੀ ਸਕ੍ਰਿਪਟ ਵਿੱਚ, ਅਸੀਂ ਇੱਕ ਮੁੱਦੇ ਨੂੰ ਹੱਲ ਕਰਦੇ ਹਾਂ ਜਿੱਥੇ 'TypeScriptLexer' 'TokenSource' ਇੰਟਰਫੇਸ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲਾਗੂ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਲੈਕਸਰ ਕਲਾਸ ਨੂੰ ਵਧਾ ਕੇ ਅਤੇ 'ਨੇਕਸਟਟੋਕਨ()' ਵਰਗੀਆਂ ਗੁੰਮ ਹੋਈਆਂ ਵਿਧੀਆਂ ਨੂੰ ਪੇਸ਼ ਕਰਕੇ, ਅਸੀਂ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹਾਂ ਕਿ ਲੈਕਸਰ ਟੋਕਨ ਸਰੋਤ ਵਜੋਂ ਕੰਮ ਕਰ ਸਕਦਾ ਹੈ। ਇਹ ਕਦਮ ਨਾਜ਼ੁਕ ਹੈ ਕਿਉਂਕਿ ਇਹਨਾਂ ਤਰੀਕਿਆਂ ਤੋਂ ਬਿਨਾਂ, TypeScript ਇੱਕ ਗਲਤੀ ਸੁੱਟ ਦੇਵੇਗਾ, ਜਿਵੇਂ ਕਿ ਗਲਤੀ ਸੁਨੇਹੇ ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਹੈ 'TypeScriptLexer' ਟਾਈਪ 'TokenSource' ਦੇ ਪੈਰਾਮੀਟਰ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਯੋਗ ਨਹੀਂ ਹੈ। ਕਸਟਮ ਲੈਕਸਰ ਵਿੱਚ ਇਹਨਾਂ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਓਵਰਰਾਈਡ ਕਰਨਾ ਸੰਕਲਨ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਇੰਪੁੱਟ ਸਟ੍ਰਿੰਗ ਤੋਂ AST ਤੱਕ ਸਹੀ ਪ੍ਰਵਾਹ ਹੋ ਸਕਦਾ ਹੈ।
ਅੰਤ ਵਿੱਚ, ਅੰਤਿਮ ਵਿਕਲਪ ਮੋਚਾ ਟੈਸਟਿੰਗ ਫਰੇਮਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਯੂਨਿਟ ਟੈਸਟਾਂ ਨੂੰ ਪੇਸ਼ ਕਰਦਾ ਹੈ। ਇਹ ਟੈਸਟ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ ਕਿ ਪਾਰਸਰ ਵੱਖ-ਵੱਖ DSL ਸਤਰਾਂ ਦਾ ਸਹੀ ਅਨੁਵਾਦ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਇੱਕ ਟੈਸਟ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਸਤਰ 'typeTodo = { title: string; ਪੂਰਾ ਹੋਇਆ: ਬੁਲੀਅਨ; }' ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਜੇਕਰ ਤਿਆਰ ਕੀਤੀ AST ਅਨੁਮਾਨਿਤ ਬਣਤਰ ਨਾਲ ਮੇਲ ਖਾਂਦੀ ਹੈ। ਇਹ ਰਣਨੀਤੀ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ ਪਾਰਸਰ ਸਾਰੇ ਸੰਦਰਭਾਂ ਵਿੱਚ ਸਹੀ ਵਿਵਹਾਰ ਕਰਦਾ ਹੈ, ਹੱਲ ਨੂੰ ਵਧੇਰੇ ਲਚਕੀਲਾ ਅਤੇ ਭਰੋਸੇਮੰਦ ਬਣਾਉਂਦਾ ਹੈ। ਬਹੁਤ ਸਾਰੇ ਵਰਤੋਂ ਦੇ ਮਾਮਲਿਆਂ ਨੂੰ ਕਵਰ ਕਰਕੇ, ਅਸੀਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਾਂ ਕਿ ਸਾਡਾ ਪਾਰਸਰ ਟਾਈਪ-ਸਕ੍ਰਿਪਟ-ਵਰਗੇ DSL ਸਟ੍ਰਿੰਗਾਂ ਦੀ ਵਿਸ਼ਾਲ ਸ਼੍ਰੇਣੀ ਲਈ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਹੈ।
ਕਸਟਮ DSL ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ANTLR ਨਾਲ ਇੱਕ TypeScript ਪਾਰਸਰ ਬਣਾਉਣਾ
ਇਹ ਸਕ੍ਰਿਪਟ ਕਸਟਮ DSL ਸੰਟੈਕਸ ਨੂੰ ਪੜ੍ਹਨ ਲਈ TypeScript ਅਤੇ ANTLR ਨੂੰ ਜੋੜਦੀ ਹੈ ਜੋ TypeScript ਕਿਸਮ ਦੀਆਂ ਪਰਿਭਾਸ਼ਾਵਾਂ ਨਾਲ ਮਿਲਦੀ ਜੁਲਦੀ ਹੈ। ਜਵਾਬ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਲੈਕਸਰ ਅਤੇ ਪਾਰਸਰ ਬਣਾਉਣ ਲਈ ANTLR ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰਨੀ ਹੈ, ਨਾਲ ਹੀ ਆਮ ਪਾਰਸਿੰਗ ਚੁਣੌਤੀਆਂ ਨੂੰ ਕਿਵੇਂ ਹੱਲ ਕਰਨਾ ਹੈ।
// Solution 1: Building a Lexer and Parser in TypeScript Using ANTLR
// Step 1: Install ANTLR TypeScript tools and dependencies
npm install antlr4ts ts-node @types/node
// Step 2: Generate TypeScript lexer and parser from TypeScriptLexer.g4 and TypeScriptParser.g4
npx antlr4ts TypeScriptLexer.g4 TypeScriptParser.g4
// Step 3: Create a parser script (test-parser.ts) to parse custom DSL strings
import { CharStreams, CommonTokenStream } from 'antlr4ts';
import { TypeScriptLexer } from './TypeScriptLexer';
import { TypeScriptParser } from './TypeScriptParser';
const input = 'typeStorage = {todos:Todo[];}';
const lexer = new TypeScriptLexer(CharStreams.fromString(input));
const tokens = new CommonTokenStream(lexer);
const parser = new TypeScriptParser(tokens);
parser.startRule(); // Start parsing
// Test parsing logic with additional DSL strings
ANTLR ਪਾਰਸਰ ਲਾਗੂ ਕਰਨ ਵਿੱਚ ਟਾਈਪਸਕ੍ਰਿਪਟ ਕੰਪਾਇਲੇਸ਼ਨ ਗਲਤੀਆਂ ਨੂੰ ਠੀਕ ਕਰਨਾ
ਇਹ ਹੱਲ "ਕਿਸਮ ਦੀ ਦਲੀਲ 'TypeScriptLexer' ਅਸਾਈਨ ਕਰਨ ਯੋਗ ਨਹੀਂ ਹੈ" ਗਲਤੀ ਨੂੰ ਸੁਨਿਸ਼ਚਿਤ ਕਰਕੇ ਹੱਲ ਕਰਨ 'ਤੇ ਕੇਂਦ੍ਰਤ ਕਰਦਾ ਹੈ ਕਿ ਢੁਕਵੇਂ ਇੰਟਰਫੇਸ ਲਾਗੂ ਕੀਤੇ ਗਏ ਹਨ। ਇਹ ਹੱਲ TypeScript ਪਾਰਸਿੰਗ ਵਿੱਚ ਟੋਕਨ ਸਰੋਤਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ।
// Solution 2: Fixing the TokenSource Issue in TypeScriptLexer
// Ensure TypeScriptLexer implements the necessary methods for TokenSource
import { TokenSource, CharStream, Token } from 'antlr4ts';
class MyLexer extends TypeScriptLexer implements TokenSource {
nextToken(): Token {
return super.nextToken(); // Use base class token generation
}
}
// Create a new instance of MyLexer to bypass the compilation error
const lexer = new MyLexer(CharStreams.fromString(input));
const tokens = new CommonTokenStream(lexer);
const parser = new TypeScriptParser(tokens);
parser.startRule();
// This resolves the missing TokenSource properties issue
ਕਸਟਮ DSL ਸੰਟੈਕਸ ਲਈ ਟਾਈਪਸਕ੍ਰਿਪਟ ਪਾਰਸਰ ਦੀ ਜਾਂਚ ਕਰ ਰਿਹਾ ਹੈ
ਇਹ ਭਾਗ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ANTLR ਦੁਆਰਾ ਤਿਆਰ ਕੀਤੇ ਟਾਈਪਸਕ੍ਰਿਪਟ ਪਾਰਸਰ ਲਈ ਯੂਨਿਟ ਟੈਸਟ ਕਿਵੇਂ ਬਣਾਉਣੇ ਹਨ। ਟੈਸਟ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹਨ ਕਿ ਵੱਖ-ਵੱਖ DSL ਸਤਰ ਸਹੀ ਢੰਗ ਨਾਲ ਪਾਰਸ ਕੀਤੇ ਗਏ ਹਨ।
// Solution 3: Writing Unit Tests for the TypeScript Parser
import { CharStreams, CommonTokenStream } from 'antlr4ts';
import { TypeScriptLexer } from './TypeScriptLexer';
import { TypeScriptParser } from './TypeScriptParser';
import { expect } from 'chai';
describe('DSL Parser Tests', () => {
it('should parse type definitions correctly', () => {
const input = 'typeTodo = { title: string; completed: boolean; }';
const lexer = new TypeScriptLexer(CharStreams.fromString(input));
const tokens = new CommonTokenStream(lexer);
const parser = new TypeScriptParser(tokens);
const result = parser.startRule(); // Call the start rule of the grammar
expect(result).to.not.be.null; // Ensure result is not null
});
});
// Run the test with Mocha: npx mocha test-parser.ts
ANTLR ਦੇ ਨਾਲ ਟਾਈਪਸਕ੍ਰਿਪਟ ਪਾਰਸਰ ਬਣਾਉਣਾ ਅਤੇ ਟੈਸਟ ਕਰਨਾ: ਉੱਨਤ ਧਾਰਨਾਵਾਂ
TypeScript-ਵਰਗੇ DSLs ਲਈ ਇੱਕ ਪਾਰਸਰ ਵਿਕਸਿਤ ਕਰਦੇ ਸਮੇਂ, ਗੁੰਝਲਦਾਰ ਕਿਸਮ ਦੀਆਂ ਪਰਿਭਾਸ਼ਾਵਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਪ੍ਰੋਸੈਸ ਕਰਨ ਲਈ ਨਾ ਸਿਰਫ਼ ANTLR ਦੇ ਵਿਆਕਰਣ ਡਿਜ਼ਾਈਨ ਨੂੰ ਸਮਝਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਸਗੋਂ ਇਹ ਵੀ ਕਿ ਤਿਆਰ ਕੀਤੇ ਪਾਰਸਰ ਨੂੰ ਹਾਲੀਆ ਟਾਈਪਸਕ੍ਰਿਪਟ ਟੂਲਸ ਨਾਲ ਕਿਵੇਂ ਜੋੜਿਆ ਜਾਵੇ। ਤੋਂ ਲੈਕਸਰ ਅਤੇ ਪਾਰਸਰ ਫਾਈਲਾਂ ਤਿਆਰ ਕਰਨ ਤੋਂ ਇਲਾਵਾ .g4 ਫਾਈਲਾਂ, ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਇਹ ਭਾਗ ਉਹਨਾਂ ਦੇ ਵਿਕਾਸ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਸਹਿਜੇ ਹੀ ਕੰਮ ਕਰਦੇ ਹਨ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਨੇਸਟਡ ਐਲੀਮੈਂਟਸ ਦੇ ਨਾਲ ਟਾਈਪ ਘੋਸ਼ਣਾਵਾਂ ਵਰਗੇ ਆਧੁਨਿਕ ਢਾਂਚੇ ਨੂੰ ਪਾਰਸ ਕਰਦੇ ਹੋਏ। ਇੱਕ ਅਕਸਰ ਅਣਡਿੱਠ ਕੀਤਾ ਹਿੱਸਾ ਪਾਰਸਿੰਗ ਅਸਫਲਤਾਵਾਂ ਦੀ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਡੀਬੱਗਿੰਗ ਹੈ।
ਵਿਆਕਰਣ ਦੇ ਨਿਯਮਾਂ ਅਤੇ ਇਨਪੁਟ ਟੈਕਸਟ ਦੀ ਅਸਲ ਬਣਤਰ ਵਿਚਕਾਰ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਪਾਰਸਿੰਗ ਗਲਤੀਆਂ ਦੇ ਆਮ ਕਾਰਨ ਹਨ। ਜੇਕਰ ਲੈਕਸਰ ਅਧੂਰੇ ਜਾਂ ਗਲਤ ਵਿਆਕਰਣ ਨਿਯਮਾਂ ਦੇ ਕਾਰਨ ਗਲਤ ਟੋਕਨ ਤਿਆਰ ਕਰਦਾ ਹੈ, ਤਾਂ ਪਾਰਸਰ ਸਹੀ AST ਨਹੀਂ ਪੈਦਾ ਕਰੇਗਾ। ਇੱਕ DSL ਨੂੰ ਪਾਰਸ ਕਰਨਾ ਜੋ ਆਬਜੈਕਟ-ਵਰਗੇ ਢਾਂਚੇ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ TypeScript ਦੀ 'type' ਪਰਿਭਾਸ਼ਾ, ਅਸਫਲ ਹੋ ਸਕਦੀ ਹੈ ਜੇਕਰ ਭਾਸ਼ਾ ਬਹੁਤ ਜ਼ਿਆਦਾ ਨੇਸਟਡ ਬਣਤਰਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ ਹੈ। ANTLR ਦੇ ਡੀਬੱਗ ਟੂਲਸ ਦੀ ਵਰਤੋਂ ਕਰਨਾ, ਜਿਵੇਂ ਕਿ ANTLRWorks ਪਲੱਗਇਨ, ਟੋਕਨ ਸਟ੍ਰੀਮ ਦੀ ਕਲਪਨਾ ਕਰਨ ਅਤੇ ਇਹ ਨਿਰਧਾਰਤ ਕਰਨ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰ ਸਕਦਾ ਹੈ ਕਿ ਸਮੱਸਿਆ ਕਿੱਥੇ ਮੌਜੂਦ ਹੈ। ਇਹ ਵਿਆਕਰਣ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਤੇਜ਼ੀ ਨਾਲ ਠੀਕ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ।
TypeScript ਵਿੱਚ ANTLR ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਇੱਕ ਹੋਰ ਪ੍ਰਮੁੱਖ ਪਹਿਲੂ TypeScript ਈਕੋਸਿਸਟਮ ਨਾਲ ਅਨੁਕੂਲਤਾ ਨੂੰ ਕਾਇਮ ਰੱਖਣਾ ਹੈ। ਨਤੀਜੇ ਵਜੋਂ ਪਾਰਸਰ ਨੂੰ ਵਾਧੂ TypeScript ਟੂਲਸ ਨਾਲ ਜੋੜਨ ਵੇਲੇ ਪਹਿਲਾਂ ਵਰਣਿਤ ਗਲਤੀ ਹੈਂਡਲਿੰਗ ਅਤੇ ਟੋਕਨ ਸਰੋਤ ਚਿੰਤਾਵਾਂ ਪ੍ਰਚਲਿਤ ਹੁੰਦੀਆਂ ਹਨ ਜਿਵੇਂ ਕਿ ts-ਨੋਡ. ਲੈਕਸਰ ਦੇ ਗੁੰਮ ਤਰੀਕਿਆਂ (ਜਿਵੇਂ ਪਹਿਲਾਂ ਸਮਝਾਇਆ ਗਿਆ ਹੈ) ਨੂੰ ਵਧਾ ਕੇ ਅਤੇ ਸਹੀ ਢੰਗ ਨਾਲ ਲਾਗੂ ਕਰਕੇ, ਤੁਸੀਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋ ਕਿ ਇਹ ਟੂਲ ਨਤੀਜੇ ਵਾਲੇ ਪਾਰਸਰ ਨਾਲ ਸਹੀ ਢੰਗ ਨਾਲ ਇੰਟਰਫੇਸ ਕਰਦੇ ਹਨ। ਯੂਨਿਟ ਟੈਸਟ ਫਰੇਮਵਰਕ, ਜਿਵੇਂ ਕਿ ਮੋਚਾ, ਨਾਲ ਟੈਸਟ ਕਰਨਾ, ਇਹ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਕਿ ਹੱਲ ਕਈ ਕਿਨਾਰਿਆਂ ਦੇ ਹਾਲਾਤਾਂ ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ।
ANTLR ਅਤੇ TypeScript ਪਾਰਸਿੰਗ ਬਾਰੇ ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸਵਾਲ
- ਟਾਈਪਸਕ੍ਰਿਪਟ ਵਿੱਚ ANTLR ਦੀ ਵਰਤੋਂ ਕਿਸ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ?
- ANTLR ਇੱਕ ਟੂਲ ਹੈ ਜੋ ਬੇਸਪੋਕ ਵਿਆਕਰਣ ਲਈ ਲੈਕਸਰ ਅਤੇ ਪਾਰਸਰ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ TypeScript ਵਿੱਚ ਟਾਈਪਸਕ੍ਰਿਪਟ ਸੰਟੈਕਸ ਦੇ ਸਮਾਨ ਹੋਣ ਵਾਲੇ ਬੇਸਪੋਕ DSLs ਦੀ ਵਿਆਖਿਆ ਕਰਨ ਦੇ ਸਮਰੱਥ ਪਾਰਸਰਾਂ ਨੂੰ ਵਿਕਸਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
- ਤੁਸੀਂ ਵਿਆਕਰਣ ਫਾਈਲਾਂ ਤੋਂ ਟਾਈਪਸਕ੍ਰਿਪਟ ਪਾਰਸਰ ਕਿਵੇਂ ਤਿਆਰ ਕਰਦੇ ਹੋ?
- ਹੁਕਮ ਜਾਰੀ ਕਰਕੇ npx antlr4ts TypeScriptLexer.g4 TypeScriptParser.g4, ANTLR TypeScript ਵਿੱਚ ਇੱਕ ਲੈਕਸਰ ਅਤੇ ਪਾਰਸਰ ਬਣਾਉਂਦਾ ਹੈ, ਜਿਸਦੀ ਵਰਤੋਂ ਤੁਸੀਂ ਵਿਆਕਰਣ ਦੇ ਆਧਾਰ 'ਤੇ ਇਨਪੁਟ ਸਤਰ ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਕਰ ਸਕਦੇ ਹੋ।
- ਕਾਮਨਟੋਕਨਸਟ੍ਰੀਮ ਕਿਸ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ?
- CommonTokenStream ਲੈਕਸਰ ਤੋਂ ਪਾਰਸਰ ਵਿੱਚ ਟੋਕਨਾਂ ਨੂੰ ਫੀਡ ਕਰਦਾ ਹੈ। ਇਹ ਇੱਕ ਸਟ੍ਰੀਮ ਹੈ ਜਿਸ ਨੂੰ ਪਾਰਸਰ ਵਿਆਕਰਣ ਦੇ ਨਿਯਮਾਂ ਦੇ ਅਨੁਸਾਰ ਇਨਪੁਟ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਲਈ ਪੜ੍ਹਦਾ ਹੈ।
- ਤੁਸੀਂ ANTLR ਦੇ TypeScriptLexer ਵਿੱਚ 'TokenSource' ਗਲਤੀ ਨੂੰ ਕਿਵੇਂ ਠੀਕ ਕਰਦੇ ਹੋ?
- ਗਲਤੀ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ, ਨੂੰ ਵਧਾਓ TypeScriptLexer ਕਲਾਸ ਅਤੇ ਗੁੰਮ ਨੂੰ ਲਾਗੂ ਕਰੋ nextToken ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਇਹ ਇੱਕ ਟੋਕਨਸੋਰਸ ਦੇ ਤੌਰ 'ਤੇ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ।
- ਕੀ ਤੁਸੀਂ TypeScript ਵਿੱਚ ANTLR ਪਾਰਸਰਾਂ ਦੀ ਯੂਨਿਟ ਟੈਸਟ ਕਰ ਸਕਦੇ ਹੋ?
- ਹਾਂ, ਤੁਸੀਂ ਮੋਚਾ ਵਰਗੇ ਟੂਲਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟਾਈਪਸਕ੍ਰਿਪਟ ਵਿੱਚ ANTLR ਪਾਰਸਰਾਂ ਲਈ ਯੂਨਿਟ ਟੈਸਟ ਵਿਕਸਿਤ ਕਰ ਸਕਦੇ ਹੋ। ਇੱਕ ਆਮ ਟੈਸਟ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਪਾਰਸਰ ਖਾਸ ਇਨਪੁਟ ਸਤਰਾਂ ਨੂੰ ਸਹੀ ਅਤੇ ਗਲਤੀਆਂ ਤੋਂ ਬਿਨਾਂ ਹੈਂਡਲ ਕਰਦਾ ਹੈ।
ਪਾਰਸਿੰਗ ਟਾਈਪਸਕ੍ਰਿਪਟ-ਵਰਗੇ DSL 'ਤੇ ਅੰਤਿਮ ਵਿਚਾਰ
ANTLR ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਟਾਈਪਸਕ੍ਰਿਪਟ ਪਾਰਸਰ ਲਈ ਟੈਸਟ ਬਣਾਉਣਾ ਅਤੇ ਚਲਾਉਣਾ ਮੁਸ਼ਕਲ ਹੋ ਸਕਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਗੁੰਝਲਦਾਰ ਕਿਸਮ ਦੀਆਂ ਪਰਿਭਾਸ਼ਾਵਾਂ ਨਾਲ ਨਜਿੱਠਣਾ ਹੋਵੇ। ਲੈਕਸਰ ਵਿੱਚ ਖਾਮੀਆਂ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਨਾ, ਜਿਵੇਂ ਕਿ ਟੋਕਨ ਸਰੋਤ ਗਲਤੀ, ਤੇਜ਼ ਅਤੇ ਵਧੇਰੇ ਭਰੋਸੇਮੰਦ DSL ਪ੍ਰੋਸੈਸਿੰਗ ਵੱਲ ਖੜਦੀ ਹੈ। ਇਹਨਾਂ ਹੱਲਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਯੂਨਿਟ ਟੈਸਟਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਲਾਗੂ ਕਰਨ ਵਿੱਚ ਸੁਧਾਰ ਕਰਦਾ ਹੈ।
ਇਸ ਗਾਈਡ ਵਿੱਚ ਦਿੱਤੇ ਕਦਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰਨ ਨਾਲ ਤੁਸੀਂ ਟਾਈਪਸਕ੍ਰਿਪਟ ਵਰਗੀਆਂ DSL ਸਟ੍ਰਿੰਗਾਂ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਪਾਰਸ ਅਤੇ ਟੈਸਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣਗੇ। ਇੱਕ ਠੋਸ ਲੈਕਸਰ ਅਤੇ ਪਾਰਸਰ ਸੈਟਅਪ ਨੂੰ ਲਾਗੂ ਕਰਨਾ ਤੁਹਾਨੂੰ ਬੇਸਪੋਕ ਵਿਆਕਰਣ ਨੂੰ ਆਸਾਨੀ ਨਾਲ ਸੰਭਾਲਣ ਦੇ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ, ਸਹੀ AST ਜਨਰੇਸ਼ਨ ਅਤੇ ਟਾਈਪਸਕ੍ਰਿਪਟ ਈਕੋਸਿਸਟਮ ਇੰਟਰੈਕਸ਼ਨ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ।
ANTLR/TypeScript ਪਾਰਸਿੰਗ ਗਾਈਡ ਲਈ ਸਰੋਤ ਅਤੇ ਹਵਾਲੇ
- ਅਧਿਕਾਰਤ ਰਿਪੋਜ਼ਟਰੀ ਤੋਂ ਟਾਈਪਸਕ੍ਰਿਪਟ ਪਾਰਸਿੰਗ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ANTLR ਵਿਆਕਰਣਾਂ 'ਤੇ ਵਿਸਤ੍ਰਿਤ। 'ਤੇ ਹੋਰ ਵੇਰਵੇ ਲੱਭੋ ANTLR Grammars-v4 GitHub .
- TypeScript ਨਾਲ ANTLR ਨੂੰ ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ, ਇਸ ਬਾਰੇ ਦਸਤਾਵੇਜ਼ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਵਿਆਕਰਣ ਬਣਾਉਣਾ ਅਤੇ ਗਲਤੀ ਹੈਂਡਲਿੰਗ ਸ਼ਾਮਲ ਹੈ। ਵਧੇਰੇ ਜਾਣਕਾਰੀ 'ਤੇ ਉਪਲਬਧ ਹੈ ANTLR4ts NPM ਪੈਕੇਜ .
- TypeScript ਸੈੱਟਅੱਪ ਅਤੇ ਪਾਰਸਰ ਅਸ਼ੁੱਧੀ ਰੈਜ਼ੋਲੂਸ਼ਨ ਦਾ ਵੇਰਵਾ ਦਿੰਦਾ ਹੈ, ਸਮੱਸਿਆ ਨਿਪਟਾਰਾ ਗਾਈਡਾਂ ਸਮੇਤ। ਨੂੰ ਵੇਖੋ TypeScript ਅਧਿਕਾਰਤ ਦਸਤਾਵੇਜ਼ ਵਾਧੂ ਮਾਰਗਦਰਸ਼ਨ ਲਈ।