Ich kämpfe immer noch mit mehrdeutiger Grammatik von Qt's qmake.Wie Funktionsargumente in der PEG-Grammatik beschrieben werden
Jetzt kann ich nicht einen Weg finden, Funktionsargumente zu beschreiben, die Klammern enthalten (zB regex):
functionName(arg1, "arg2", ^(arg3)+$)
Ich habe versucht, Funktionsaufruf wie folgt zu beschreiben:
FunctionCall = Identifier space* "(" space* FunctionArgumentList? space* ")" space* eol*
FunctionArgumentList = FunctionArgumentString ((space* "," space* FunctionArgumentString)*/(blank* FunctionArgumentString)*)
FunctionArgumentString = ReplaceFunctionCall/TestFunctionCall/EnquotedString/RegularFunctionArgumentString
RegularFunctionArgumentString = RegularFunctionArgumentStringChar+
RegularFunctionArgumentStringChar = !(")"/blank/","/quote/doublequote) SourceCharacter
SourceCharacter <- [\u0000-\uFFFC]
Wie füge ich Unterstützung für eingebettete Klammern WITHOUT Anführungszeichen/Anführungszeichen in einer solchen Grammatik hinzu? Wie unterscheide ich die Klammer innerhalb von Funktionsargumenten und schließe die Funktion?
Gültige Funktionsaufruf Beispiel:
contains(CMAKE_INSTALL_LIBS_DIR, ^(/usr)?/lib(64)?.*)
Was ist '^ (/ usr)?/Lib (64)?. *'? –
Nur ein JS-ähnlicher regulärer Ausdruck – eraxillan