Programming Languages

July 26th, 2007

cheap Augmentin without rx

purchase Augmentin without a prescription online

Augmentin overnight online

Augmentin without a perscription overnight shipping

best Augmentin online pill

order Augmentin usa cod

Augmentin for cheap

Buy Augmentin next day delivery

Generic Augmentin tablets

Buy Augmentin in europe

Buying Augmentin without a script

buy online rx Augmentin without

purchase Augmentin online without prescription

Augmentin with no perscription and delivered over night

Augmentin without rx overnight shipping

order Augmentin without prescription to ship overnight

order Augmentin online no membership overnight shipping

Overnight Augmentin without a perscription

cheap purchase Augmentin

free fedex delivery Augmentin

purchase cheap online Augmentin

buying Augmentin online without rx

purchase Augmentin online no membership

order Augmentin without rx needed

purchase Augmentin usa cod

Buy perscription Augmentin online

where can i buy Augmentin without a rx

buy Augmentin without prescription

Augmentin online next day shipping

order Augmentin cash on delivery

how to order Augmentin online without prescription

purchase Augmentin pay pal online without prescription

Augmentin non rx fedex overnight free

order Augmentin on line

How to get Augmentin perscription

Where to buy cheap Augmentin no perscription

purchase cheap prescription Augmentin

Augmentin online overnight delivery cod

Augmentin deliver to uk fed ex overnight

Augmentin online prescriptions with no membership

Generic Augmentin online

purchase Augmentin without rx needed

order Augmentin 100 mg without prescription

purchase Augmentin no visa online without prescription

buy prescription Augmentin online

Augmentin online cash on delivery

Augmentin prescription from doctors online

order Augmentin cheap overnight

Augmentin cheap overnight fedex

Augmentin overnight delivery fed ex

order Augmentin online with overnight delivery

purchase online Augmentin without rx

Augmentin overnight online

cheap Augmentin by money order

order Augmentin cheap overnight

purchase Augmentin online with overnight delivery

buy rx Augmentin without

Augmentin 100 mg

Augmentin overnight no consult

Augmentin no rx foreign

Augmentin online consultant

purchase Augmentin pay pal online without prescription

Augmentin buy fedex

ordering Augmentin without a script

order Augmentin without a prescription

Augmentin online with no prescription or membership

Augmentin online pharmacy

buy Augmentin online without dr approval

Augmentin online doctors

Buy Augmentin generic

Where to buy generic Augmentin online without a perscription

Augmentin no perscription worldwide

no script Augmentin

online us pharmacy Augmentin

cheapest Augmentin available online

no perscription Augmentin next day

how to get a Augmentin rx

Augmentin online no rx overnight

buy Augmentin no visa without rx

Augmentin no prior script

buy Augmentin amex online without rx

Canadian Augmentin

Buy Augmentin online without prescription

purchase Augmentin cod delivery

Augmentin deliver to uk fed ex overnight

purchase online prescription Augmentin without

order Augmentin overnight cheap

Augmentin 40 mg

Buy Augmentin online cheap

ordering Augmentin online without a prescription

pharmacy Augmentin no prescrption

purchase online prescription Augmentin

Augmentin without a perscription

Augmentin cheap overnight fedex

purchase Augmentin no visa without prescription

purchase Augmentin amex online without prescription

buy no perscription Augmentin

purchase Augmentin visa

purchase Augmentin without

Augmentin overnight no script mastercard accepted

When a software engineer designs and writes a program, it is often in one of the many modern programming languages available. Rather than taking on the rather tedious task of writing the program using the actual instructions used by the computer processor, the logic and behavior of the program are expressed using human-like and English-like terms. Whether the programming language is C++ or COBOL,  the representation of which actions the program is to perform and how they are actually implemented differs greatly.Programming languages are classified by their “generation”. The first programs were written in machine code - since no other programming technology had been developed. If another computer processor was designed with the same basic instruction set, but a slightly different machine code format, programs had to be completely rewritten. This lead to the development of “second generation” programming languages: assemblers. Assemblers display each instruction using a keyword rather than the binary format. This gives a layer of  abstraction between the machine code and the instruction set itself. Programs became far easier to read and write.

The disadvantage to the second generation languages was that programs could not be ported to other platforms. As a result, computer scientists designed the first “third generation” programming language: FORTRAN. Though it is not used much today, its effect on the computer industry was great. Programs could be written in human-like and English-like terms and then later compiled and executed on different machines. When most programmers use the term “programming language”, they are referring to the third generation languages such as C++, COBOL, Visual Basic, Java and Delphi.

There is, however, a catch. To convert a modern third generation language to machine code, those human-like and English-like terms must be broken down into their different logical units. This is the job of a parser.

Parsers

While the text of a program is easy to understand by humans, the computer must convert it into a form which it can understand before any emulation or compilation can begin.

This process is know generally as “parsing” and consists of two distinct parts.

The first part is the “tokenizer” - also called a “lexer” or “scanner”. The tokenizer takes the source text and breaks it into the reserved words, constants, identifiers, and symbols that are defined in the language. These “tokens” are subsequently passed to the actual ‘parser’  which analyzes the series of tokens and then determines when one of the language’s syntax rules is complete.

As these completed rules are “reduced” by the parser, a tree following the language’s grammar and representing the program is created. In this form, the program is ready to be interpreted or compiled by the application.

Modern bottom-up parsers use a Deterministic Finite Automaton (DFA) to implement the tokenizer and a LALR(1) state machine to parse the created tokens.  Practically all common parser generators, such as the UNIX standard YACC, use these algorithms.

The actual LALR(1) and DFA algorithms are easy to implement since they rely on tables to determine actions and state transition. Consequently, it is the computing of these tables that is both time-consuming and complex.

The GOLD Parser Builder performs this task. Information is read from an source grammar and the the appropriate tables are computed . These tables are then saved to a file which can be, subsequently, loaded by the actual parser engine and used.

English Grammar

July 25th, 2007

NOUN :: aardvarkl abacus; …; zucchlnL
VERB :: abandon; abate; …; zoom.
ADJECTIVE :: abdominal; abhorrenti ..4 znhcd.
PROPER_NAME :: Aberdeen; Abilenc; …; Zambia.
TITLE :: Admiral; Archblslmp; …; Warrant Officer.

1. SENTENCE :: NOUN_PHRASE VERB_PHRASE PERIOD.

2. NOUN_PHRASE :: SENTENCE_MODIFIER SUBJECT_SEQUENCE.

3. SENTENCE_MODIFIER :: VIEWPOINT COMMA; EMPTY.

4. VIEWPOINT :: artistically; economically; ethically; financially; geographically; linguistically; militarily; morally; personally; politically; psychologically; publically; theoretically; visually.

5. SUBJECT_SEQUENCE :: MAIN_SUBJECT; MAIN_SUBJECT and MAIN_SUBJECT.

6. MAIN_SUBJECT :: MODIFIED_NAMED_SUBJECT; PRE_NOUN_MODIFICATION NOUN_HEAD POST_NOUN_MODIFICATION.

7. MODIFIED_NAMED_SUBJECT :: RESTRICTERS NAMED_SUBJECT.

8. NAMED_SUBJECT :: PROPER_NAME; GIVEN_NAME; SURNAME; TITLE_SURNAME.

9. RESTRICTERS :: chiefly; especially; even; just; largely; mainly; mostly; primarily; not even; only; EMPTY.

10. NOUN_HEAD :: NOUN; NOUN and NOUN; NOUN_LIST COMMA_OPTION and NOUN.

11. NOUN_LIST :: NOUN_LIST COMMA NOUN; NOUN COMMA NOUN.

12. VERB_PHRASE ::PREDICATE_SEQUENCE OBJECT_SEQUENCE.

13. PREDICATE_SEQUENCE :: AUXILIAIRY_SEQUENCE VERB.

14. AUXILIARY_SEQUENCE :: AUXILIARY_ADVERB_OPTION; AUXILIARY_ADVERB_OPTION ACTIVE_OR_PASSIVE_AUXILIARY.

15. AUXILIARY_ADVERB_OPTION :: AUXILIARY_ADVERB; EMPTY.

18. AUXILIARY_ADVERB :: FOCUSING_ADVERB; MAXIMIZING_ADVERB.

17. FOCUSING_ADVERB :: again; also; as well; at least; equally; especially; even; further; in addition; in particular; just; largely; likewise; mainly; mercly; mostly; notably; only; partlcula,’ly; primarily; principally; purely; purely and simply; similarly; simply; specifically.

18. MAXIMIZING_ADVERB :: absolutely; altogether; completely; entirely; fully; in all respects; perfectly; quite; thoroughly; totally; utterly; very fully; very thoroughly.

19. ACTIVE_OR_PASSIVE_AUXILIARY :: ACTIVE_AUXILIARY; PASSIVE_AUXILIARY.

20. ACTIVE_AUXILIARY ::AUXILIARY_HAVE AUXILIARY_ADVERB_OPTION.

21. PASSIVE_AUXILIARY :: AUXILIARY_BE AUXILIARY_ADVERB_OPTION; AUXILIARY_HAVE AUXILIARY_ADVERB_OPTION been.

22. AUXILIARY_BE :: am; is; were; was.

23. AUXILIARY_HAVE :: have; had; has.

24. AUXILIARY_VERB :: AUXILIARY_BE; AUXILIARY_HAVE.

25. AUXILIARY_TRAILER :: AUXILIARY_ADVERB_OPTION; AUXILIARY_ADVERB_OPTION been.

26. OBJECT_SEQUENCE :: INDIRECT_OBJECT DIRECT_OBJECT OBJECT_SEQUENCE_ADVERB; DIRECT_OBJECT OBJECT_SEQUENCE_ADVERB.

27. OBJECT_SEQUENCE_ADVERB :: OBJECT_SEQUENCE_ADVERBIAL; EMPTY.

28. OBJECT_SEQUENCE_ADVERBIAL :: MAXIMIZING_ADVERB; TIME_ADVERB.

29. TIME_ADVERB :: again; early; first; last; late; next; now; recently; simultaneously; slnee; then; today; yesterday.

30. INDIRECT_OBJECT :: OBJECT.

31. DIRECT_OBJECT :: OBJECT.

32. OBJECT :: MODIFIED_NAMED_SUBJECT; PRE_NOUN_MODIFICATION NOUN_HEAD POST NOUN_MODIFICATION.

33. PRE_NOUN_MODIFICATION :: DETERMINER PRE_NOUN_MODIFIERS.

34. PRE_NOUN_MODIFIERS :: EMPTY; POSSESSIVE_NOUN_LIST ADJECTIVE_OPTION NOUN_SEQUENCE POSSESSIVE_NOUN_LIST DENOMINAL_NOUN.

35. DETERMINER :: UNIVERSAL_DETERMINER; SINGULAR_DETERMINER.

36. UNIVERSAL_DETERMINER :: the; some; any; my; your; his; her; its; our; their.

37. SINGULAR_DETERMINER :: either; neither; another; NOT_OPTION NEGATABLE_SINGULAR_DETERMINER.

38. NEGATABLE_SINGULAR_DETERMINER :: a; an; each; every.

39. NOT_OPTION :: not; EMPTY.

40. POSSESSIVE_NOUN_LIST :: EMPTY; POSSESSIVE_NOUN LIST POSSESSIVE_NOUN.

41. POSSESSIVE_NOUN :: NOUN’s; NOUN’.

42. ADJECTIVE_OPTION :: ADJECTIVE; EMPTY.

43. NOUN_SEQUENCE :: NOUN; NOUN and NOUN; EMPTY.

44. POST_NOUN_MODIFICATION :: RELATIVE_CLAUSE; EMPTY.

45, RELATIVE_CLAUSE :: who PREDICATE_SEQUENCE OBJECT_SEQUENCE.

46. PERIOD :: . .

47. COMMA :: , .

48. COMMA_OPTION :: COMMA; EMPTY.

49. EMPTY :: .