Bonjour,
Je ne sais pas si c'est le bon forum où mais je vais tenter :p J'avais déjà posté sur le forum C# et sur stackoverflow mais pas de réponse.
J'aimerais parser ce type de contenu (shader q3):
En gros, la structure est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 textures/liquids/lava-example { deformVertexes wave sin 0 3 0 0.1 q3map_tessSize 64 surfaceparm lava qer_editorimage textures/common/lava.tga { map textures/common/lava.tga } }
J'aurais savoir comment définir une règle principale pour une directive (avec une clé et des paramètres) puis de définir à part toutes les possibilités.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 shadername { directive directive //.... { directive //... } }
J'ai réussi à faire cette grammaire (qui fonctionne pour mes qlq tests):
Pour l'instant j'ai une directive qui correspond à une clé et un paramètre parce que je vois pas comment faire ce dont je vous ai parlé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 parser grammar ShaderParser; options { tokenVocab=ShaderLexer; } shaderlist : shader+ ; shader : shadername LBracket directive* stage* RBracket ; shadername : Path CompileTime? ; stage : LBracket directive* RBracket ; directive : key parameter? | key DQuote parameter DQuote | key SQuote parameter SQuote ; key : Word ; parameter : Word | Integer | Double | Path ;
Merci pour votre aide!
Partager