lexer freezes on this Python code
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- javascript, python
- Ambito
- compilers
Direzione di ricerca
Inizia riproducendo il blocco con lexer("print('\'m')") e ispeziona la funzione lexer, in particolare il ciclo matchQuotation mostrato nell’issue. Traccia il modo in cui vengono tokenizzate le virgolette con escape e assicurati che questo input termini senza avanzare oltre la fine dell’input; verifica che il lexer non si blocchi più.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Steps to reproduce:
- Try to run
lexer("print('\'m')") - Notice that it freezes.
I traced the freeze to an infinite do-while loop in the lexer.
In the following code, input is set to the code "print('\'m')" but current variable reaches into the billions,
currentChar === undefined, and
validator.test(currentChar) is returning false when currentChar is undefined.
/**
* 过滤(提取) 引号中的内容
*/
// eslint-disable-next-line
const matchQuotation = (currentChar, validator, TokenType) => {
do {
if (currentChar === '\n') {
line++;
}
currentChar = input[++current];
} while (!validator.test(currentChar));
++current;
};
I wonder if this has anything to do with the backslashed quotation mark. Maybe the grammar doesn't define STRING properly for escaped quotes.
I edited this issue because I first thought the bug was reproducible by parsing but it actually requires running the lexer function on the code.
- Lingua principale
- JavaScript
- Stelle
- 25
- Fork
- 7
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di DTStack/dt-python-parser
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
DTStack/dt-python-parser#28 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
DTStack/dt-python-parser#27 · 1 commento ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
DTStack/dt-python-parser#26 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
DTStack/dt-python-parser#15 · 3 commenti ·
-
支持最新版Python3语法 Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
DTStack/dt-python-parser#11 ·
Tutte le issue di DTStack/dt-python-parser
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
palladius/rails8-app-on-gcp#145 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
dotenvx/dotenv-vscode#139 ·
-
test-change-proposal
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
web-platform-tests/interop#1455 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
corsairdev/corsair#1764 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100