Il mio programma deve analizzare i file css in un formato di oggetto in memoria. Qualche consiglio su come dovrebbe essere fatto?Esiste un parser CSS per C#?
risposta
ExCSS (supporta CSS2.1 e CSS3) su GitHub: https://github.com/TylerBrinks/ExCSS.
che è una versione più recente di questo articolo del progetto di codice: http://www.codeproject.com/KB/recipes/CSSParser.aspx
desidera che analizzi la query multimediale in un modello a oggetti. non è particolarmente difficile da fare, ma tutto ciò che ti dà è una stringa –
funziona, ma ha trovato un numero di cose che non può analizzare: 'calc (50vw - 23em)' diventa 'calc (50vw = 23em)'/' 3rem' diventa '3' /' z-index: 2147483647' diventa 'z-index: 2.147484E + 09' /' * display: none' diventa 'display: none' –
Inoltre non gestisce' @ -ms-viewport 'return' {System.Collections.Generic.List \ '1 [ExCSS.RuleSet]}' in uscita. –
E una ricerca leggermente più lento alza il post sul blog "CSS parser class in .NET", che incorpora this gist on GitHub (nel caso in cui il blog muore mai).
... ah - ed è morto – Alex
Here è possibile trovare un altro in particolare per C# con sorgente di esempio.
questo usa espressioni regolari che non lo taglieranno per css complessi –
Ho scritto uno, utilizzando la grammatica specificata nella specifica CSS 2.1. Ho anche rilasciato subito: per i dettagli, vedi http://www.modeltext.com/css/
C'è un file di grammatica CSS per GoldParser:
http://goldparser.org/grammars/files/css.zip
GoldParser è facile da inserire in un progetto C#, e genera un vero e proprio parser LALR - Non un po 'di regex hack.
parser LALR - non un po 'regex Informazioni sul sito "Le grammatiche GOLD si basano sul modulo Backus-Naur e sulle espressioni regolari" – Justin
Buon punto, le regex sono interessanti. Rollare un parser a mano non è –
Questa è una versione molto semplificata della grammatica CSS. Invece ho portato il grammatico di riferimento CSS (dalla specifica CSS 2.1) per lavorare con il parser GOLD ... e ho scritto un assembly C# per implementare il resto di esso (usa l'output parser per calcolare lo stile per un elemento in un DOM, usando la specificità della regola, l'ereditarietà, i valori predefiniti, ecc.). – ChrisW
Hai provato il one featured in JsonFx? È scritto in C#, analizza la sintassi CSS3 ed è distribuito sotto una licenza in stile MIT.
Sembra il meglio di un brutto gruppo (ricorsione usando le istruzioni 'goto' - ahi) – briantyler
@B:' goto' è un ottimo modo per * evitare * la ricorsione, perché evita di reinserire una funzione. È un'ottima alternativa al rischio di un overflow dello stack quando si dispone di un numero potenzialmente elevato di iterazioni. – Triynko
Cosa c'è di sbagliato con la ricorsione? –
- 1. Esiste un parser .NET CQL?
- 2. Esiste un parser PDF per PHP?
- 3. Esiste un parser Java per BER-TLV?
- 4. ricorsivo Descent Parser per C
- 5. Esiste un parser GEDCOM scritto in Python?
- 6. Esiste un framework per la definizione dei parser in JavaScript?
- 7. Python CSS Parser
- 8. Ricerca di un parser CSS in java
- 9. LISP Parser C++
- 10. C Parser codice per .NET
- 11. Esiste un semplice parser di risposta http per Java?
- 12. Esiste un parser Java per il linguaggio Java?
- 13. Esiste un parser HL7 leggero e leggero per Java?
- 14. Parser di opzioni per C/C++?
- 15. Jsoup come parser per C++/C?
- 16. Esiste un interprete per C?
- 17. Esiste un parser leggero multipart/form-data in C o C++?
- 18. Esiste un tale framework CSS?
- 19. C# ASP.NET QueryString parser
- 20. Un parser C# per collegamenti Web (RFC 5988)
- 21. C++ qual è il vantaggio di lex e bisonte per un tokenizzatore self-parser/parser
- 22. Un parser JavaScript per DOM
- 23. Esiste un modo CSS puro per rendere trasparente un input?
- 24. MENO css - JS Parser vs Compilato
- 25. Esiste un parser XML Python progettato pensando agli umani?
- 26. python: esiste un parser XML implementato come generatore?
- 27. Risorse online per scrivere un parser-generator
- 28. Benchmark per parser JSON?
- 29. Esiste un buon parser EDIFACT open source in Java?
- 30. parser C++ GLR con Bison
Non capisco perché questa domanda è stata chiusa. Ha un sacco di voti da persone che apparentemente si stanno chiedendo la stessa cosa. Solo perché persone diverse potrebbero avere opinioni diverse sulla soluzione migliore, che posto ideale per elencare quelle opinioni per gli altri con la stessa domanda. –
@JonathanWood - Sono completamente d'accordo, ma la politica è che le raccomandazioni sugli strumenti sono fuori tema e chiede una raccomandazione sugli strumenti. Quindi chiuderlo è appropriato, anche se frustrante. – Bobson
Ho riavviato la domanda in modo che possa essere riaperta – Softlion