se ho qualcosa di simile (define s (hi,there))
allora come posso scrivere in partita come (match s [(,h , ,t)] ...)
Ma non funziona, perché ha bisogno della match
,
così come posso fare questo?Come abbinare, in partita in racchetta?
risposta
Innanzitutto, la virgola ,
è un'abbreviazione speciale per il lettore. Il numero (hi,there)
è una lettura come (hi (unquote there))
. Questo è difficile da individuare - poiché la stampante predefinita stampa gli elenchi il cui primo elemento è uno unquote
in un modo speciale.
Welcome to DrRacket, version 5.3.0.14--2012-07-24(f8f24ff2/d) [3m].
Language: racket.
> (list 'hi (list 'unquote 'there))
'(hi ,there)
Pertanto il motivo necessario è '(elenco h (elenco' unquote t)) '.
> (define s '(hi,there))
> (match s [(list h (list 'unquote t)) (list h t)])
(list 'hi 'there)
utilizzare una barra rovesciata se si desidera utilizzare una virgola come simbolo all'interno di una sezione citata:
> (define s '(hi \, there))
> (match s [(list h c t) (symbol->string c)])
","
E utilizzare '|,|
per il simbolo virgola standalone.
> (match s [(list h '|,| t) (list h t)])
'(hi there)
In entrambi i casi, si dovrebbe utilizzare gli spazi per separare le cose, e utilizzare gli elenchi.
(define s (hi,there))
non valido Racchetta.
Il motivo per cui è presente una virgola è che il file che sto analizzando lo usa per separare molte cose e voglio usare la corrispondenza Racket per analizzare il file (in realtà più interessato quando ho trovato virgola è così speciale in Racket!) Ma grazie per le risposte da voi ragazzi) –
Penso che potresti essere confuso su dove hai bisogno di virgole. In Racket, non usi le virgole per separare gli elementi in una lista. Invece, usi semplicemente gli spazi bianchi. Dimmi se questo è sbagliato, ma quello che immagino è che stai cercando di abbinare un'espressione come (define s '(hi there))
. Per fare questo, è necessario utilizzare
(match s
[`(,h ,t) ...])
Poi, nella zona in cui le ellissi è, la variabile h
ha il valore 'hi
, e la variabile t
ha il valore 'there
Voglio solo approfittare di 'match' in Racket per analizzare il formato simile a s-expression WITH COMMA tra parentesi. –
- 1. Come abbinare con Regex "partita più breve" in .NET
- 2. Programmazione del gioco in racchetta
- 3. printf% 6.2f in schema o racchetta?
- 4. Come abbinare l'URL in C#?
- 5. Racchetta come linguaggio di scripting in un motore di gioco
- 6. Come abbinare più colonne in una tabella con SQLite FTS3?
- 7. Stringhe troncate nella racchetta
- 8. scala lista partita
- 9. Regex - Partita tutto senza spazi
- 10. Come abbinare i caratteri accentati in preg_match()?
- 11. Come abbinare l'ellisse orizzontale (...) in php
- 12. Come abbinare un vettore vuoto in Haskell?
- 13. Come abbinare i caratteri unicode in Java
- 14. Come abbinare se stessi in un enum?
- 15. Come abbinare il prefisso in Elasticsearch
- 16. Come NON abbinare una parola in mod_rewrite
- 17. Come abbinare il punto esclamativo (!) In PHP?
- 18. Come abbinare le cifre in regex
- 19. Come abbinare più atomi in Erlang?
- 20. Qualcuno usa la racchetta commercialmente?
- 21. grep partita solo linee in un campo specifico
- 22. binding POST/GET nella racchetta
- 23. Python regex partita asterisco letterale
- 24. porto Partita in Chrome modello estensione
- 25. PHP partita i dati in una matrice
- 26. Regex - Partita di tutto, ma barra
- 27. RegEx testo partita tra delimitatori
- 28. Auto-unboxing in Scala modello-partita
- 29. Guardare in vista Regex scartare una partita
- 30. Django di query case-insensitive partita
perdonare il commento non richiesto, ma mi sembra che usare la "corrispondenza" della racchetta per analizzare un input contenente virgole non sia probabilmente una grande idea; a meno che il resto dell'input sia davvero molto molto vicino a racket/LISP, questo sembra un caso per mordere il proiettile e usare un parser reale. Mi scuso in anticipo se ho frainteso il tuo caso d'uso. –
@JohnClements Penso che tu abbia ragione ... e la storia è che il mio programma principale è scritto in Racket e voglio solo ottenere le strutture dati dall'analisi del file in Racket. Il file sembra quasi S-Exp, quindi fino a molto tardi ho trovato delle virgole ... –
Hai qualche tipo di specifica per quali moduli possono verificarsi nel file sorgente? Il file sorgente è scritto in una lingua ben conosciuta? –