Author Topic: Modelovanie a Generovanie Softverovych Architektur  (Read 35963 times)

MKI

  • Hero Member
  • *****
  • Posts: 1021
    • View Profile
    • MKI Print Shop
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #100 on: 09.05.2009, 19:54:37 »
no kto tu hodi nejaky tutorial na to dvanste cviko bo skacem z okna asi :D
www.mki.sk Kvalitne a lacne TONERY :)

Ing. nemtom

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 7709
  • lofr dyslektik
    • View Profile
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #101 on: 09.05.2009, 19:58:27 »
moze rovno aj na 10, 11
brix will be shat

mrtvyhubar

  • Full Member
  • ***
  • Posts: 101
    • View Profile
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #102 on: 10.05.2009, 04:06:26 »
To tu akoze vsetci maju 9tku spravenu?
Viditeľné škody na nábytku sú ťažko opraviteľné a kazia celkový vzhľad
bytu. Myslite na to pred tým než začnete búchať pesťou po stole kôli nefunkčnému zadaniu.
"Making new tables in real life is not as simple as CREATE TABLE in sql"

Ing. nemtom

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 7709
  • lofr dyslektik
    • View Profile
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #103 on: 10.05.2009, 16:53:36 »
kto mi vysvetli ako spravit 10. cviko? ale ziadne omacky ale priamo step by step, nemam cas lustit hadanky :D
brix will be shat

paly-sk

  • Full Member
  • ***
  • Posts: 208
    • View Profile
    • Flexi Systems
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #104 on: 10.05.2009, 18:09:32 »
kto mi vysvetli ako spravit 10. cviko? ale ziadne omacky ale priamo step by step, nemam cas lustit hadanky :D

snad ti napomoze cast mojej komunikaci so spoluziakom, ktory tomu tiez nie velmi rozumel:

startovaci symbol je Model
cize pojdes to triedy model a do konstruktora das @Range(minOccurs =1), kedze v ebnf je zapisane entity+ a to vyjadruje, ze model musi obsahovat aspon jednu entitu
tzn. ze konstruktor Model musi mat pred Entity[] entities anotaciu @Range(minOccurs = 1)
model by bol vyrieseny a ides hlbsie, kedze parametrom modelu je objekt typu Entity, tak ides do tej triedy
a teraz vidis, ze v ebnf je Entity rozpisana ako ako 'entity' <NAME> ...
to znamena ze pred konstruktor das anotaciu before a ako parameter je das ENTITY (ked si blizsie pozries ten subor package-info.java, tak tam su definovane lexikalne jednotky a pod tokenom ENTITY sa skryva entity)
a teraz v konstruktori prvy parameter je name, cize to uz bude @Token("NAME")
a potom ide 1 a viac properties
cize ked pozries ebnf, tak tam najprv vidis {
cize pred Property[] properties das @Before("LBR") a zaroven aj @After("RBR"), lebo zatvrokami koncia aj definovanie entity v ebnf
a este tam das @Range(minOccurs = 1), lebo entita musi mat aspon jednu property podla ebnf

Snad by ti to uz malo byt jasne. Teraz uvidis vyhodu vyuzitia tohto generatora oproti vlastnemu krkolomnemu parseru, ktory sme robili na zaciatku ;-)

Ked to budes mat cele, tak pozri subor grammar.ebnf a mal byt taky isty ako je v tom 10. cviku (niektore zatvorky si mozes odmysliet v tej vygenerovanej gramatike) a este to co je na stranke ako Entity+ budes mat vo svojej gramatike ako (Entity (Entity)*). Potom uz len staci 2-krat skompilovat a nasledne spustit a nezabudni pridat do konstruktora vytvorenie toho parsera ako je v 5. tej ulohe.
Jabber: paly@jabbim.sk
Web: www.flexisystems.sk

Ing. nemtom

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 7709
  • lofr dyslektik
    • View Profile
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #105 on: 10.05.2009, 19:00:32 »
thx, kuknem na to a ked to pojde podakujem zas :P zatial mozes hladat komunikaciu ohladom dalsieho cvika :D
brix will be shat

Ing. nemtom

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 7709
  • lofr dyslektik
    • View Profile
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #106 on: 10.05.2009, 21:07:04 »
ta ja som kkt z toho :D kto mi spravi? :D
brix will be shat

Raleon

  • VIP
  • Hero Member
  • *****
  • Posts: 1296
  • Csirke forever!
    • View Profile
    • Pessimistic Dreams
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #107 on: 10.05.2009, 21:56:50 »
startovaci symbol je Model
cize pojdes to triedy model a do konstruktora das @Range(minOccurs =1), kedze v ebnf je zapisane entity+ a to vyjadruje, ze model musi obsahovat aspon jednu entitu
tzn. ze konstruktor Model musi mat pred Entity[] entities anotaciu @Range(minOccurs = 1)
model by bol vyrieseny a ides hlbsie, kedze parametrom modelu je objekt typu Entity, tak ides do tej triedy
a teraz vidis, ze v ebnf je Entity rozpisana ako ako 'entity' <NAME> ...
to znamena ze pred konstruktor das anotaciu before a ako parameter je das ENTITY (ked si blizsie pozries ten subor package-info.java, tak tam su definovane lexikalne jednotky a pod tokenom ENTITY sa skryva entity)
a teraz v konstruktori prvy parameter je name, cize to uz bude @Token("NAME")
a potom ide 1 a viac properties
cize ked pozries ebnf, tak tam najprv vidis {
cize pred Property[] properties das @Before("LBR") a zaroven aj @After("RBR"), lebo zatvrokami koncia aj definovanie entity v ebnf
a este tam das @Range(minOccurs = 1), lebo entita musi mat aspon jednu property podla ebnf

Snad by ti to uz malo byt jasne. Teraz uvidis vyhodu vyuzitia tohto generatora oproti vlastnemu krkolomnemu parseru, ktory sme robili na zaciatku ;-)

Ked to budes mat cele, tak pozri subor grammar.ebnf a mal byt taky isty ako je v tom 10. cviku (niektore zatvorky si mozes odmysliet v tej vygenerovanej gramatike) a este to co je na stranke ako Entity+ budes mat vo svojej gramatike ako (Entity (Entity)*). Potom uz len staci 2-krat skompilovat a nasledne spustit a nezabudni pridat do konstruktora vytvorenie toho parsera ako je v 5. tej ulohe.

Hmm. diky, Tebou popisana cast aj ide.
Ale ako dalej annotovat property, atd.? bo uz tam mi netbeans neakceptuje tie tokeny, before alebo after, ...


There is no such bad temper that can not be fixed with some good wine.

paly-sk

  • Full Member
  • ***
  • Posts: 208
    • View Profile
    • Flexi Systems
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #108 on: 10.05.2009, 22:02:13 »
    public Property(
            @Token("NAME") String name,
            @Before("COLON") Type type,
            @Separator("COMMA") Constraint[] constraints) {
        ...
    }

a zaroven treba anotavat aj enumeracny typ:

    public enum Type {
        @Token("INTEGER") INTEGER,
        @Token("REAL") REAL,
        @Token("STRING") STRING;
    }
Jabber: paly@jabbim.sk
Web: www.flexisystems.sk

Ing. nemtom

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 7709
  • lofr dyslektik
    • View Profile
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #109 on: 10.05.2009, 22:10:25 »
ako zistim ze to mam dobre?
brix will be shat

Ing. nemtom

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 7709
  • lofr dyslektik
    • View Profile
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #110 on: 10.05.2009, 22:15:40 »
sk.tuke.magsa.parserext.javacc.Parser mate tam ten parser? lebo ja ne
brix will be shat

Raleon

  • VIP
  • Hero Member
  • *****
  • Posts: 1296
  • Csirke forever!
    • View Profile
    • Pessimistic Dreams
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #111 on: 10.05.2009, 22:22:17 »
    public Property(
            @Token("NAME") String name,
            @Before("COLON") Type type,
            @Separator("COMMA") Constraint[] constraints) {
        ...
    }

a zaroven treba anotavat aj enumeracny typ:

    public enum Type {
        @Token("INTEGER") INTEGER,
        @Token("REAL") REAL,
        @Token("STRING") STRING;
    }

Na token name pri property mi hodi netbeans chybu:
Incompatible types
found: org.javacc.parser.Token
required: java.lang.annotation.Annotation
a tak isto pri enumeracii :(


There is no such bad temper that can not be fixed with some good wine.

paly-sk

  • Full Member
  • ***
  • Posts: 208
    • View Profile
    • Flexi Systems
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #112 on: 10.05.2009, 22:30:43 »
ako zistim ze to mam dobre?
pozries si subor grammar.ebnf a porovnas ho s tym, co je v 10. cviku

sk.tuke.magsa.parserext.javacc.Parser mate tam ten parser? lebo ja ne
ten parser ti nevygenerovalo, lebo mas nejaku chybu. ked si pozries ten stack trace pri exception, tak tam zistis, ze kde je chyba
Jabber: paly@jabbim.sk
Web: www.flexisystems.sk

paly-sk

  • Full Member
  • ***
  • Posts: 208
    • View Profile
    • Flexi Systems
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #113 on: 10.05.2009, 22:31:39 »
Na token name pri property mi hodi netbeans chybu:
Incompatible types
found: org.javacc.parser.Token
required: java.lang.annotation.Annotation
a tak isto pri enumeracii :(
oznacil si druhy konstruktor anotaciou @Exclude?
Jabber: paly@jabbim.sk
Web: www.flexisystems.sk

Raleon

  • VIP
  • Hero Member
  • *****
  • Posts: 1296
  • Csirke forever!
    • View Profile
    • Pessimistic Dreams
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #114 on: 10.05.2009, 22:38:28 »
Na token name pri property mi hodi netbeans chybu:
Incompatible types
found: org.javacc.parser.Token
required: java.lang.annotation.Annotation
a tak isto pri enumeracii :(
oznacil si druhy konstruktor anotaciou @Exclude?

ano. Inak i to da do ebnf s |...

zaujimave, ze co vypluje ten onen, tak to vyzera takto ::
Code: [Select]
Entity ::= (<ENTITY> <NAME> (<LBR> (Property (Property)*) <RBR>))
Length ::= (<MIN_LENGTH> <MAX_LENGTH>)
Model ::= (Entity (Entity)*)
Property ::= (<NAME> (<COLON> Type) ((Constraint ((<COMMA> Constraint))*))?)
(to je len cast z toho / nemm tam normalne dvojbodku, ale tak blbo ze colon, atd)


Tu je kod property:
Code: [Select]
public class Property {

    private final String name;
    private Constraint[] constraints;

    public Property(@Token("NAME") String name ,@Before("COLON") Type type,  @Separator("COMMA") Constraint[] constraints)
    {
      this.name=name;
      this.type=type;
      this.constraints=constraints;
    }

    @Exclude
    public Property(String name, Type type) {
        this.name = name;
        this.type = type;
    }

    public Constraint[] getConstraints() {
        return constraints;
    }

    public void setConstraints(Constraint[] constraints) {
        this.constraints = constraints;
    }

    public enum Type {
        @Token("INTEGER") INTEGER, @Token("REAL") REAL, @Token("STRING") STRING;
    }
    private final Type type;



    public String getName() {
        return name;
    }

    public Type getType() {
        return type;
    }

    public <T extends Constraint> T getConstraint(Class<T> clazz) {
        if (constraints==null) return null;
        for (Constraint c : constraints) {
            if (c.getClass().getSimpleName().compareTo(clazz.getSimpleName()) == 0) {
                return (T) c;
            }
        }
        return null;
    }

    public boolean hasConstraint(Class<? extends Constraint> clazz) {
        if (constraints==null) return false;
        for (Constraint c : constraints) {
            if (c.getClass().getSimpleName().compareTo(clazz.getSimpleName()) == 0) {
                return true;
            }
        }
        return false;
    }

    @Override
    public String toString() {
        if (constraints != null) {
            return name + Arrays.asList(constraints);
        } else {
            return name;
        }
    }
}

Pri Clean and build  vypise toto:
Code: [Select]
init:
deps-clean:
Deleting directory E:\Thomass\Programming\Java\mags\build
clean:
init:
deps-jar:
Created dir: E:\Thomass\Programming\Java\mags\build\classes
Compiling 40 source files to E:\Thomass\Programming\Java\mags\build\classes
E:\Thomass\Programming\Java\mags\src\sk\tuke\magsa\parserext\Parser.java:4: package sk.tuke.magsa.parserext.javacc does not exist
  private static sk.tuke.magsa.parserext.javacc.Parser parser;
YAJCo parser generator 0.1
YAJCo: Generating output to 'file:/E:/Thomass/Programming/Java/mags/src/sk/tuke/magsa/parserext/javacc/grammar.jj'
Java Compiler Compiler Version 4.0 (Parser Generator)
(type "javacc" with no arguments for help)
Reading from file E:\Thomass\Programming\Java\mags\src\sk\tuke\magsa\parserext\javacc\grammar.jj . . .
org.javacc.parser.ParseException: Encountered ")" at line 70, column 3.
Was expecting one of:
    "LOOKAHEAD" ...
    "try" ...
    "(" ...
    "{" ...
    "[" ...
    "boolean" ...
    "char" ...
    "byte" ...
    "short" ...
    "int" ...
    "long" ...
    "float" ...
    "double" ...
    <IDENTIFIER> ...
    "+" ...
    "-" ...
    "++" ...
    "--" ...
    "~" ...
    "!" ...
    <INTEGER_LITERAL> ...
    <FLOATING_POINT_LITERAL> ...
    <CHARACTER_LITERAL> ...
    <STRING_LITERAL> ...
    "true" ...
    "false" ...
    "null" ...
    "this" ...
    "super" ...
    "new" ...
    "void" ...
    "options" ...
    "IGNORE_CASE" ...
    "PARSER_BEGIN" ...
    "PARSER_END" ...
    "JAVACODE" ...
    "TOKEN" ...
    "SPECIAL_TOKEN" ...
    "MORE" ...
    "SKIP" ...
    "TOKEN_MGR_DECLS" ...
    "EOF" ...
    "<" ...
   
Detected 1 errors and 0 warnings.
E:\Thomass\Programming\Java\mags\src\sk\tuke\magsa\parserext\Parser.java:4: package sk.tuke.magsa.parserext.javacc does not exist
  private static sk.tuke.magsa.parserext.javacc.Parser parser;
E:\Thomass\Programming\Java\mags\src\sk\tuke\magsa\parserext\Parser.java:12: package sk.tuke.magsa.parserext.javacc does not exist
      parser = new sk.tuke.magsa.parserext.javacc.Parser(reader);
E:\Thomass\Programming\Java\mags\src\sk\tuke\magsa\parserext\Parser.java:14: package sk.tuke.magsa.parserext.javacc does not exist
      sk.tuke.magsa.parserext.javacc.Parser.ReInit(reader);
E:\Thomass\Programming\Java\mags\src\sk\tuke\magsa\parserext\Parser.java:18: package sk.tuke.magsa.parserext.javacc does not exist
      sk.tuke.magsa.metamodel.Model root = sk.tuke.magsa.parserext.javacc.Parser.parse();
E:\Thomass\Programming\Java\mags\src\sk\tuke\magsa\parserext\Parser.java:21: package sk.tuke.magsa.parserext.javacc does not exist
    } catch (sk.tuke.magsa.parserext.javacc.ParseException e) {
Note: E:\Thomass\Programming\Java\mags\src\sk\tuke\magsa\metamodel\Property.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
5 errors
BUILD FAILED (total time: 0 seconds)


There is no such bad temper that can not be fixed with some good wine.

hlsman

  • Jr. Member
  • **
  • Posts: 99
    • View Profile
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #115 on: 10.05.2009, 22:47:51 »
Raleon podla mna si importol zly Token preto ti to nesedi..
import tuke.pargen.annotation.Token;

Raleon

  • VIP
  • Hero Member
  • *****
  • Posts: 1296
  • Csirke forever!
    • View Profile
    • Pessimistic Dreams
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #116 on: 10.05.2009, 22:52:16 »
Raleon podla mna si importol zly Token preto ti to nesedi..
import tuke.pargen.annotation.Token;
Sakra. Ano.  :embarassed:
Uz ten token berie...
Ale i tak hodi build tie iste chyby, a stale pise COLON namiesto :    (atd)

(aha, moze byt ze preto , lebo este constraints som nepoannotoval ?)
« Last Edit: 10.05.2009, 22:55:05 by Raleon »


There is no such bad temper that can not be fixed with some good wine.

paly-sk

  • Full Member
  • ***
  • Posts: 208
    • View Profile
    • Flexi Systems
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #117 on: 10.05.2009, 23:01:15 »
Raleon podla mna si importol zly Token preto ti to nesedi..
import tuke.pargen.annotation.Token;
Sakra. Ano.  :embarassed:
Uz ten token berie...
Ale i tak hodi build tie iste chyby, a stale pise COLON namiesto :    (atd)

(aha, moze byt ze preto , lebo este constraints som nepoannotoval ?)
COLON je v pohode, lebo tie lexikalne jednotky az potom nahradi, cize je to OK
skus to skompilovat s parametrom -Xlint:unchecked
Jabber: paly@jabbim.sk
Web: www.flexisystems.sk

hlsman

  • Jr. Member
  • **
  • Posts: 99
    • View Profile
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #118 on: 10.05.2009, 23:08:08 »
a este taka finta f, v tom nbproject/project.property ako sa pridavaju tie javac argumenty..
mne to nechcelo brat ten $basedir pretoze obsahoval medzeri a tak mi rozparsovalo jeden argument na viacero.. treba dat do uvodzoviek.

Raleon

  • VIP
  • Hero Member
  • *****
  • Posts: 1296
  • Csirke forever!
    • View Profile
    • Pessimistic Dreams
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #119 on: 10.05.2009, 23:08:35 »
Raleon podla mna si importol zly Token preto ti to nesedi..
import tuke.pargen.annotation.Token;
Sakra. Ano.  :embarassed:
Uz ten token berie...
Ale i tak hodi build tie iste chyby, a stale pise COLON namiesto :    (atd)

(aha, moze byt ze preto , lebo este constraints som nepoannotoval ?)
COLON je v pohode, lebo tie lexikalne jednotky az potom nahradi, cize je to OK
skus to skompilovat s parametrom -Xlint:unchecked
vyskusam...
Aha, po popisani vsetkych constraints uz chyba neni.. len taky cudny warning, ale vypluje aj nejake java subory..
Diky za pomoc.


There is no such bad temper that can not be fixed with some good wine.

Raleon

  • VIP
  • Hero Member
  • *****
  • Posts: 1296
  • Csirke forever!
    • View Profile
    • Pessimistic Dreams
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #120 on: 10.05.2009, 23:56:19 »
Model.el  zkade zozeniem ?
(ak treba pisat, tak ako :) )


There is no such bad temper that can not be fixed with some good wine.

Ing. nemtom

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 7709
  • lofr dyslektik
    • View Profile
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #121 on: 11.05.2009, 00:09:30 »
tu mam gramatiku, priamo z grammar.ebnf, este to je teple

Code: [Select]
Constraint ::= (Regex | StringOptions | Range | Length | Required)
Entity ::= (<ENTITY> <STRING_VALUE> (<LBR> (Property (Property)*) <RBR>))
Length ::= (<LENGTH> <INT_VALUE> <INT_VALUE>)
Model ::= (Entity (Entity)*)
Property ::= (<NAME> (<COLON> Type) ((Constraint ((<COMMA> Constraint))*))?)
Range ::= (<RANGE> <INT_VALUE> <INT_VALUE>)
Regex ::= (<REGEX> <STRING_VALUE>)
Required ::= <REQUIRED>
StringOptions ::= (<STROPTIONS> (<STRING_VALUE> (<STRING_VALUE>)*))
Type ::= (<INTEGER> | <REAL> | <STRING>)

a tu mam model.el, tiez este teple

Code: [Select]
entity Student {
meno : string
}

malo by to zhltnut nie? bo nekce :(
brix will be shat

Ing. nemtom

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 7709
  • lofr dyslektik
    • View Profile
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #122 on: 11.05.2009, 00:20:31 »
aha uz viiiiiim, hlsman mi pomohol aj ked o tom nevedel :D v Entity nema byt STRING_VALUE ale NAME
brix will be shat

Raleon

  • VIP
  • Hero Member
  • *****
  • Posts: 1296
  • Csirke forever!
    • View Profile
    • Pessimistic Dreams
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #123 on: 11.05.2009, 00:29:27 »
...
Code: [Select]
entity Student {
meno : string
}

malo by to zhltnut nie? bo nekce :(

Thanx for inspiration...


There is no such bad temper that can not be fixed with some good wine.

Raleon

  • VIP
  • Hero Member
  • *****
  • Posts: 1296
  • Csirke forever!
    • View Profile
    • Pessimistic Dreams
Re: Modelovanie a Generovanie Softverovych Architektur
« Reply #124 on: 11.05.2009, 02:23:03 »
Prosim , co sa ma robit v 12 tom cviku ?


There is no such bad temper that can not be fixed with some good wine.