36 struct garbage : plus<one<' ', '\t', '=', '(', ')', ','>> {};
38 struct trailers : plus<one<' ', '\t', '\v', '\f'>> {};
66 seq<star<not_at<eolf>,
67 not_at<string<'\\', '\\'>,
83 sor<backslashContinuation,
84 commentBackslashContinuation,
90 struct sep : sor<plus<continuation>,
93 struct modelName : plus<not_at<garbageOrEolf>, any> {};
96 seq<TAO_PEGTL_ISTRING( "vdmos" ),
98 sor<TAO_PEGTL_ISTRING( "nchan" ),
99 TAO_PEGTL_ISTRING( "pchan" )>>,
100 plus<not_at<garbageOrEolf>, any>> {};
112 opt<seq<star<sor<tao::pegtl::digit,
115 opt<one<'+', '-'>>>>> {};
119 not_at<backslashContinuation>,
120 not_one<' ', '\t', '=', '(', ')', ',', ';'>>> {};
138 list<token, cplSep>> {};
145 if_must<seq<TAO_PEGTL_ISTRING( ".model" ),
149 TAO_PEGTL_ISTRING( "ako:" )>,
160 if_must<seq<TAO_PEGTL_ISTRING( ".model" ),
164 TAO_PEGTL_ISTRING( "CPL" )>,
171 if_must<TAO_PEGTL_ISTRING( ".model" ),
186 opt<plusContinuation>,
188 opt<plusContinuation>,
196 TAO_PEGTL_ISTRING( ".param" )>> {};
200 dotSubcktParamValuePairs> {};
204 plus<not_at<space>, any>> {};
209 TAO_PEGTL_ISTRING( ".ends" ),
214 if_must<TAO_PEGTL_ISTRING( ".subckt" ),
218 dotSubcktPinSequence>,
236 TAO_PEGTL_ISTRING( ".control" ),
237 until<TAO_PEGTL_ISTRING( ".endc" )>,
244 TAO_PEGTL_ISTRING( ".title" ),
255 TAO_PEGTL_ISTRING( ".inc" ),
256 star<not_at<garbageOrEolf>, any>,
259 dotIncludePathWithoutQuotes,
262 dotIncludePathWithoutApostrophes,
304 template <
typename>
inline constexpr const char*
errorMessage =
nullptr;
308 "expected token separator (one or more whitespace, parenthesis, '=', ',', or line continuation)";
312 "expected model name";
314 "expected model type";
326 "expected (possibly empty) sequence of Spice lines followed by an .ends line";
328 "expected Spice directive, item, subcircuit definitions, or empty or commented-out line";
330 "expected zero or more Spice directives, items, subcircuit definitions, or empty or commented-out lines";
339 template <
typename Rule>
using control = must_if<error>::control<Rule>;