Zadanie #4246

Akcja reguły dopasowania dodająca metadane na poziomie tokenu

Added by Adam Radziszewski about 11 years ago. Updated about 11 years ago.

Status:RozwiązanyStart date:23 Jul 2012
Priority:NormalnyDue date:
Assignee:Paweł Orłowicz% Done:

100%

Category:-
Target version:-

Description

Reguły dopasowania składają się z warunków, opcjonalnych post-conditions (zatwierdzających już dopasowaną strukturę) oraz akcji.

Zadanie polega na dodaniu nowej akcji:

setprop(match, key_name, val_name)

Akcja pobiera pierwszy token z dopasowania:

int abs_pos = match_->apply(context)->first_token(as);
// kod wziąłem z ops/match/actions/unmarkmatch.cpp

i dodaje tam własność/metadata o ustalonym kluczu i wartości (w razie czego nadpisuje).

Dodanie nowej akcji wymaga zrobienia dwóch rzeczy:
1. Dodania kodu implementującego akcję (zob. libwccl/ops/match/actions).
2. Dodania do gramatyki ANTLR-owej odpowiednich zapisów (grammar.g). Trzeba po pierwsze dodać nową akcję tutaj:

match_action
  [ParsingScope& scope]
  returns [boost::shared_ptr<Matching::MatchAction> m_act]
  : m_act = match_mark_action   [scope]
  | m_act = match_unmark_action [scope]
  | m_act = match_remark_action [scope]
;

Np. linijkę m_act = match_prop_action [scope]
i potem zdefiniować tę match_prop_action poniżej. Ta nowa akcja będzie miała składnię podobną do unmark, tj. najpierw match_at = match_operator[scope], a potem dwa stringi, jeden to nazwa klucza, a drugi — nazwa wartości.

History

#1 Updated by Paweł Orłowicz about 11 years ago

  • Status changed from Nowy to Rozwiązany
  • % Done changed from 0 to 100

Also available in: Atom PDF