struct mbuh
(
lineshg = 0,
tres = "text",
fn track all:#() =
(
local c -- clone
local lpoint = [0,0,0] -- previous point created
local ccoll = #() -- array for created objects
local prev = [0,0] -- var for alt distance changing
),
fn listzfun trs:123 x:#() =
(
obj = snapshotasmesh a
min_vz = max_vz = in coordsys world (getvert obj 1).z
min_vx = max_vx = in coordsys world (getvert obj 1).x
min_vy = max_vy = in coordsys world (getvert obj 1).y
)
)
fn brung man: =
(
)
как приведенном выше примере, я хочу, чтобы найти слово «структура хх» & «п ххх», но только «п ххх», что внутри структуры сфера не вне его [ «п brung хого»], я использую это регулярное выражение, чтобы найти егоКак найти функцию внутри структуры
^.*?(\bstruct\s*\w+\b)|^.?(\bfn\b+[\w\s:#()""]*)
но поиск всех п слова внутри и снаружи сферу структуры, поэтому вопрос в том, как я могу найти слово fn xxx, что только внутри области структуры, которая приведена в примере выше [fn track xxx и fn listzfun xxx]?
спасибо.
Я думаю, что [regex is _not_ подходит для синтаксического анализа исходного кода] (http://stackoverflow.com/a/19639012/107625). Вы должны использовать лексер (http://parsingintro.sourceforge.net/#contents_item_5). –
Хотя это можно сделать с помощью Regex, такие вещи, как балансировка скобок/скобок, очень сложно сделать только с одним Regex. Я бы порекомендовал сделать еще одну форму синтаксического разбора, если ничего другого. – Abion47
Но трудно ли это сделать? как дополнительная информация, каждая «fn» внутри структуры разделяется комой, а «fn» вне нее не разделяется комой. спасибо –