Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and...

29
Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania

Transcript of Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and...

Page 1: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Free Pascal compiler internationalisation

Rimgaudas LauciusInstitute of Mathematics and Informatics,

Vilnius University

Lithuania

Page 2: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Introduction

• Institute of Mathematics and Informatics, Informatics Methodology Department• Software localisation• Teaching of informatics and programming• E-learning and standards• Informatics terminology

• Vilnius University• Localisation course

Page 3: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Localisation in Lithuania

• One of the four priorities emphasised in the strategic project for the development of the information society in Lithuania is:

“to uphold the inheritance of Lithuanian language and culture implementing the information technologies and telecommunications”

Page 4: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Open Source in Lithuania

• Research which was carried out in 2004, “Open Source in Education” revealed that open source software integration into education has a large positive economical and also pedagogical effect

• Education requires high quality and fully localised software

• Open source software is more flexible in terms of localisation

Page 5: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Free Pascal compiler

• Excellent, open source compiler• Works under all widely used operating

systems Windows, Linux and others• Widely used. Has been used in International,

Baltic and national Lithuanian Olympiads in informatics for a few years already

• Replacement for obsolete Turbo Pascal system in Lithuanian schools

Page 6: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

FPS

Page 7: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Compilers’ internationalisation

• Internationalisation is part of the software development process, so the internationalisation of development tools is very important

• Most contemporary software development tools are not internationalised enough

• Though this research is done on Free Pascal compiler, most of represented issues are common to most of compilers

Page 8: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Programming language standards

• Internationalisation relates with programming language standards

• Pascal programming language standards• Standards of other languages

Page 9: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Examples of internationalised compilers

• There are not many of these examples• One of the most well known internationalised

programming system is LOGO• Vector Pascal

Page 10: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Structure of Free Pascal

• Free Pascal is system made up of the compiler program itself and run-time library (RTL)

• Compiler and RTL interaction:

• Sometimes to change compiler one needs to change the RTL

Page 11: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Support of multilingual source code

• This is the first stage of compiler internationalisation

• There are many scripts which require more than the 8-bit character set

Page 12: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

UTF-8 implementation

• Unicode ~ UTF-8• Some utilities used by compilers do not

support pure Unicode (Unicode chars may be treated as pairs of 8-bit chars; example U+0900 ~ 09 00, (tab and end of string))

• Allows step by step implementation of lexical extensions

Page 13: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Lexical extensions

• Strings• Identifiers• Directives• Reserved words• Operators• Numbers

Page 14: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Strings

• WideString implementation issues– Compatibility with other systems

– Ambiguity

– Conversions between Unicode and other character sets

Page 15: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Ambiguity example

procedure go(const s: WideString); begin ... end;

procedure go(const s: String); begin ... end;

beginGo('Hi');

end.

Which overloaded procedures have to be called?

Page 16: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Unicode support layer

• Unicode support layer wraps OS APIs’ in an OS independent way.

• Under Win9x implements Microsoft Layer for Unicode (MSLU)

Page 17: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Identifiers

• Identifiers have to reflect clear meaning of object, be easy to comprehend and memorize. Best way to support these features is to allow use of identifiers written in vernacular language

• Unicode Standard Annex #31: Identifier and Pattern Syntax

Page 18: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Directives

• Names• Parameters

– Logical (ON, OFF)

– Strings ({$warning Possible malfunctioning})

– File names ({$includepath ..\inc})

Page 19: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Reserved words

• Unification myth– Compared 13 similar programming languages

(Algol, Pascal, Modula, Ada, C, Java,…)

– Only ~3% of reserved words are same

– 56% met only in particular language

• Possible unambiguous translation

Page 20: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Example of localised reserved words

Page 21: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Operators

• Unicode has all mathematical symbols needed to express mathematical operations

• Example:

Page 22: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Numbers

• There are various scripts to express decimal numbers.

• Example:

Page 23: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Decimal separator

• JAV, GB ‘.’• Most European countries ‘,’

• Localisation of delimiter may cause ambiguity.

Solution needs to extend syntax of numbers.

25,88 – real number

25, 88 – two numbers

Page 24: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Punctuation

• Spaces: general U+0020, nonbreaking U+00A0, ideographic U+3000, etc

• Quotes: “English”, "Lithuanian“,

• Etc

Page 25: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Bi-directional text

• Bi-directional text is an issue of text representation, not the compiler

Page 26: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Unicode file names support

• Handling of files requires OS API, so it have to be done via RTL’s Unicode support layer

• Compilers have to use MSLU under Win9x

Page 27: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Input/Output

• File input/output requires additional support for Unicode encoding

• Windows console does not support Unicode– It can be replaced but is it the best solution?

Page 28: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

Localisation framework

• Strings and other resources have to be externalised for easy localisation

• Localisation kits have to be prepared

Page 29: Free Pascal compiler internationalisation Rimgaudas Laucius Institute of Mathematics and Informatics, Vilnius University Lithuania.

• Questions?• Thank you

• Contact E-mail: