@@ -22,6 +22,11 @@ static void nextsym(struct device_parser *dp)
2222{
2323 if (!yaml_parser_parse (& dp -> parser , & dp -> event )) {
2424 fprintf (stderr , "device parser: error %u\n" , dp -> parser .error );
25+ fprintf (stderr ,
26+ "device parser: index %zu, line %zu, column %zu\n" ,
27+ dp -> parser .context_mark .index ,
28+ dp -> parser .context_mark .line ,
29+ dp -> parser .context_mark .column );
2530 exit (1 );
2631 }
2732}
@@ -43,14 +48,41 @@ int device_parser_accept(struct device_parser *dp, int type,
4348 }
4449}
4550
51+ void decode_yaml_type_error (struct device_parser * dp , int type )
52+ {
53+ char event_type [11 ][26 ] = {
54+ "YAML_NO_EVENT" ,
55+ "YAML_STREAM_START_EVENT" ,
56+ "YAML_STREAM_END_EVENT" ,
57+ "YAML_DOCUMENT_START_EVENT" ,
58+ "YAML_DOCUMENT_END_EVENT" ,
59+ "YAML_ALIAS_EVENT" ,
60+ "YAML_SCALAR_EVENT" ,
61+ "YAML_SEQUENCE_START_EVENT" ,
62+ "YAML_SEQUENCE_END_EVENT" ,
63+ "YAML_MAPPING_START_EVENT" ,
64+ "YAML_MAPPING_END_EVENT"
65+ };
66+
67+ fprintf (stderr ,
68+ "device parser: expected %s got %s\n" ,
69+ event_type [type ],
70+ event_type [dp -> event .type ]);
71+ fprintf (stderr ,
72+ "device parser: index %zu, line %zu, column %zu\n" ,
73+ dp -> parser .mark .index ,
74+ dp -> parser .mark .line ,
75+ dp -> parser .mark .column );
76+ }
77+
4678bool device_parser_expect (struct device_parser * dp , int type ,
4779 char * scalar , size_t scalar_len )
4880{
4981 if (device_parser_accept (dp , type , scalar , scalar_len )) {
5082 return true;
5183 }
5284
53- fprintf ( stderr , "device parser: expected %d got %u\n" , type , dp -> event . type );
85+ decode_yaml_type_error ( dp , type );
5486 exit (1 );
5587}
5688
0 commit comments