Τρίτη 5 Απριλίου 2016

Αναθεώρηση 203 - Bug Remove

1. Το τελευταίο νούμερο βγαίνει 141. Στην προηγούμενη αναθεώρηση δεν έβγαινε είχε ένα πρόβλημα στην αντιγραφή των εσωτερικών ομάδων (group). Ο έλεγχος μιας γλώσσας είναι ό,τι πιο δύσκολο υπάρχει, γιατί υπάρχουν πάρα πολλοί συνδυασμοί.


Class oo {
      Group K1 {
            m=100
            Group K {
                  \\ Group K can't see Goup K1 variables
                  m=30
            }
      }
}

Module Inside {
      Read &kappa
      Print kappa.k1.k.m
      kappa.k1.k.m+=10
}
aa=oo()
Inside &aa
Print aa.k1.k.m
Module Inside2 {
      read &kappa
      Print kappa.m
      kappa.m++
}
Inside2 &aa.K1.K
Print aa.k1.k.m
Print aa.k1.m \\ 100
aa.k1 = aa.k1.k \\ merge so m from aa.k1.k  copy to aa.k1.m
Print aa.k1.m \\ 41
\\ we can make a new copy of k1
suboo =aa.k1
Print suboo.k.m
\\ We can add a module too
Group suboo { Module pp {.m++ : print .m}}
suboo.pp  \\ 42
\\ we can replace module pp with an new one
Group suboo { Module pp {print .k.m}}
suboo.pp  \\ 41
\\ we can link variables to group items
Read from suboo, A, b
Print A \\ 42
A++
Print suboo.m \\ 43
Print b.m \\ 41
b.m+=100
Print suboo.k.m \\141
\\ now we can copy back to aa
\\ split line after rem to engage List, to list all variables
Rem 1 : List
Print suboo.m, suboo.k.m
aa.k1=suboo
Print aa.k1.m, aa.k1.k.m
Rem 2 : list


2. Δεύτερο Bug. Στο πρόγραμμα με τη προφορά Ιταλικών, το τμήμα ΛΕΞΕΙΣ έχει ίδιο όνομα με την εντολή ΛΕΞΕΙΣ. Παλαιότερα τα τμήματα έρχονταν πρώτα, τώρα υπάρχει ο πίνακας κατακερματισμού που ελέγχει αν είναι εντολή, και πάντα τη βρίσκει εντολή! Άρα βγάζει πρόβλημα γιατί δεν εκτελεί το τμήμα. Διορθώθηκε. Όταν ένα τμήμα έχει το ίδιο όνομα με μια εντολή, τότε μετονομάζεται η εντολή στο πίνακα κατακερματισμού, για να μην βρεθεί! Με την εντολή Νέο ο πίνακας εντολών ξαναφτιάχνεται! Με την εντολή Κάλεσε ή Call πάντα καλούμε

module print {read a : @print a+1}

με Print 2 θα πάρουμε 3
επανέρχεται με New ή Νέο αλλά με @ καλούμε πάντα εντολή!


Στην έκδοση 9 δεν χρειάζεται η Νέο ή New, γιατί επανέρχεται η εντολή στην έξοδο από ένα τμήμα. Χωρίς το global το τμήμα Inner θα χρησιμοποιήσει την εντολή Print όχι το τμήμα Print.
module k {
      module global print {read a : @print a+1}
      module inner {print 2}
      inner
      print 2 \\ 3
}
k
print 2 \\ 2
call k
print 2 \\ 2

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.