32 struct garbage : plus<one<' ', '\t', '=', '(', ')', ','>> {};
34 struct trailers : plus<one<' ', '\t', '\v', '\f'>> {};
62 seq<star<not_at<eolf>,
63 not_at<string<'\\', '\\'>,
79 sor<backslashContinuation,
80 commentBackslashContinuation,
86 struct sep : sor<plus<continuation>,
89 struct modelName : plus<not_at<garbageOrEolf>, any> {};
92 seq<TAO_PEGTL_ISTRING( "vdmos" ),
94 sor<TAO_PEGTL_ISTRING( "nchan" ),
95 TAO_PEGTL_ISTRING( "pchan" )>>,
96 plus<not_at<garbageOrEolf>, any>> {};
108 opt<seq<star<sor<tao::pegtl::digit,
111 opt<one<'+', '-'>>>>> {};
115 not_at<backslashContinuation>,
116 not_one<' ', '\t', '=', '(', ')', ',', ';'>>> {};
134 list<token, cplSep>> {};
141 if_must<seq<TAO_PEGTL_ISTRING( ".model" ),
145 TAO_PEGTL_ISTRING( "ako:" )>,
156 if_must<seq<TAO_PEGTL_ISTRING( ".model" ),
160 TAO_PEGTL_ISTRING( "CPL" )>,
167 if_must<TAO_PEGTL_ISTRING( ".model" ),
182 opt<plusContinuation>,
184 opt<plusContinuation>,
192 TAO_PEGTL_ISTRING( ".param" )>> {};
196 dotSubcktParamValuePairs> {};
200 plus<not_at<space>, any>> {};
205 TAO_PEGTL_ISTRING( ".ends" ),
210 if_must<TAO_PEGTL_ISTRING( ".subckt" ),
214 dotSubcktPinSequence>,
232 TAO_PEGTL_ISTRING( ".control" ),
233 until<TAO_PEGTL_ISTRING( ".endc" )>,
240 TAO_PEGTL_ISTRING( ".title" ),
251 TAO_PEGTL_ISTRING( ".inc" ),
252 star<not_at<garbageOrEolf>, any>,
255 dotIncludePathWithoutQuotes,
258 dotIncludePathWithoutApostrophes,
300 template <
typename>
inline constexpr const char*
errorMessage =
nullptr;
304 "expected token separator (one or more whitespace, parenthesis, '=', ',', or line continuation)";
308 "expected model name";
310 "expected model type";
322 "expected (possibly empty) sequence of Spice lines followed by an .ends line";
324 "expected Spice directive, item, subcircuit definitions, or empty or commented-out line";
326 "expected zero or more Spice directives, items, subcircuit definitions, or empty or commented-out lines";
335 template <
typename Rule>
using control = must_if<error>::control<Rule>;