Wciąż walczę z niejednoznaczną gramatyką Qm's qmake.Jak opisać argumenty funkcji w gramatyce PEG
Teraz nie mogę znaleźć sposób, aby opisać argumentów funkcji, które mogą zawierać nawiasów (np regex):
functionName(arg1, "arg2", ^(arg3)+$)
Starałem się opisać wywołanie funkcji tak:
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]
Jak dodać obsługę nawiasów osadzonych BEZ cytatów/podwójnych cudzysłowów w gramatyce? Jak odróżnić nawias wewnątrz argumentów funkcji i funkcji zamykającej jeden?
Ważny przykład wywołanie funkcji:
contains(CMAKE_INSTALL_LIBS_DIR, ^(/usr)?/lib(64)?.*)
Co to jest '^ (/ usr)?/Lib (64)?. *'? –
Po prostu wyrażenie regularne podobne do JS – eraxillan