Unsolved How to apply rules of grammar?
-
@mrjj He is a translator of hieroglyphs and I want, for example, in the following text:
"asddf"
And when applying one of the rules would be
"asdf"
How do I do it?
-
well it really depends on what hieroglyphs can be
and also what the rules can be ?So you have a trigger text like asddf and once found it should look up a rule
with the text as key and trasnform the selected text with the function ?Or what is the overall process?
-
@mrjj
Let me explain myself better.
I have a fairly large text and after clicking on a button, the application should apply the rules to the text, and I say the rules because it is not one are several.
What makes it difficult is that the rules have to be in a file because they depend on other factors.
My problems are:
How do I write the rules in a file so that the application can understand them?
How, after reading them, do I apply them to my text? -
@Blaster
But how is your rule defined?
That will determine how u can save them.Can you show 1 rule?
-
@mrjj
I already told you that I do not know how to express them, but in principle, the one I set as an example, would be:
xx -> x
xyxy -> xy
I don't know, something like that -
@Blaster
well im asking you to express a rule in english :)If only action is text replacement then format could be
Text to find, text to replace tp
but i not sure what rules can be.
A rule is only Text To Find, Text to replace with or is a rule something else?
-
@mrjj
There are other rules and it is not just text to replace. The idea of this rule is to find the occurrence of consecutive patterns and leave only one occurrence, which is what I find difficult to express -
Well one way is just to use name for what function to call
TriggerText, Action, Param1
afffd, one_occurrence, none
HHH, text_replace, thetextThis is epic esy to read in with Qt.
But I would first write up all rules and what data it needs to operate.
That would give you idea on what format is needed. -
@mrjj
It's a good idea, but what I want is not having to write a function for each rule -
@Blaster said in How to apply rules of grammar?:
The idea of this rule is to find the occurrence of consecutive patterns and leave only one occurrence
put the patterns in a file, one by line. for each line do a replace with QRegularExpression replacing
"(?:%1)+"
with"%1"
where %1 is the pattern -
Hi! Don't know anything about hieroglyphs, but if the language they represent has a context-free grammar, then you can express the rules in Backus-Naur form and process the source text with Flex and Bison.
-
@Wieland said in How to apply rules of grammar?:
if the language they represent has a context-free grammar
I have not encountered a natural (i.e. human) language that can be prescribed by a context-free grammar. Otherwise I completely agree, for what it's worth. :)
-
@Wieland said in How to apply rules of grammar?:
Hi! Don't know anything about hieroglyphs, but if the language they represent has a context-free grammar, then you can express the rules in Backus-Naur form and process the source text with Flex and Bison
An example please
-
-
@VRonin
In this case ... how do I make the regular expression capture the occurrence of equal letters without defining what the letter -
@Blaster said in How to apply rules of grammar?:
I was thinking of loading a file with the rules
without defining what the letter
I'm confused now...
let's say you have a UTF-8 text file (
rules.txt
) that contains:x xy
You can use
QString stringToTranslate("xyxyxx"); QFile rulesFile("rules.txt"); if(rulesFile.open(QFile::ReadOnly | QFile::Text)){ QTextStream rulesStream(&rulesFile); rulesStream.setCodec("UTF-8"); QString line; while (stream.readLineInto(&line)) stringToTranslate.replace(QRegularExpression("(?:"+QRegularExpression::escape(line)+")+",line); } qDebug() << "Translated String: "+stringToTranslate;
Is this what you wanted?
-
@VRonin
What I really want to know is how to make a regular expression that checks the multiple occurrence of any pattern, not including some specific character in the expression.
Something like, for example"x{2,}"
that would match any string containing 2 or more repeated characters regardless of the character
-
@Wieland
It is not grammar free of context, it is a gramática similar to the one of our languages -
Imagine the input is
xxxyxy
do you want the output to bexxy
orxy
? -
@VRonin
Just xy