std:regex: Wird der Automat compile-time erzeugt?
-
Noch eine Frage, wird der Suchautomat bei regulären Ausdrücken während der Übersetzung erzeugt oder erst wenn das Programm läuft? Voraussetzung ist natürlich ein konstanter Ausdruck.
Bei boost werden die ebnf-Automaten (Spirit war es glaub) per templates während der Übersetzung erzeugt, soweit ich mich erinnern kann (header-only-lib). Ja, ich weiß reguläre Ausdrücke und eBNF sind was anderes, beides erzeugt aber doch einen, brr, Nicht-Deterministischen Automaten oder so was duck ... oder so...
cu
-
@dirkski Ich glaube die Frage ist idiotisch. Würde evtl. gehen aber nicht mit so einer einfachen Syntax (regex als Funktionsargument)... Frage löschen?
-
Prinzipiell ist das ein valide Frage die man sich stellen kann, ob man nicht aus regulären Ausdrücken zur Übersetzungszeit automatisch code erzeugen kann.
std::regex tut das nicht, boost::regex tut das nicht.
Ich habe dazu einen talk und ein github Projekt gefunden: https://github.com/hanickadot/compile-time-regular-expressions
Aber soweit ich das sehe ist das nur ein proof of concept und es fehlt ne Menge.Ich hab auch mal drüber nachgedacht war mir aber zu schwer und viel Arbeit (allerdings ohne constexpr, stattdessen mit TMP. Das wär vermutlich an der Instanziierungstiefe gescheitert, hatte es aber angefangen)
Auch relatiert: https://stackoverflow.com/questions/40427152/compiletime-build-up-of-stdregex/41909189
-
Aber mit boost xpressive müsste das gehen.
-
Die hab ich völlig vergessen(, aber auch weil es nicht exakt einer existierenden regex Syntax entspricht. Also Achtung, minimales umschreiben ist vorher nötig.)
-
@mechanics sagte in std:regex: Wird der Automat compile-time erzeugt?:
Aber mit boost xpressive müsste das gehen.
Werde ich mir angucken. Momentan hab ich inet-Störungen. Vielen Dank an alle...
cu