PWCT 1.9 Art Documentation ( http://doublesvsoop.sourceforge.net )
2006-2011, Mahmoud Fayed ( msfclipper@users.sourceforge.net ) _____________________________________________________________________________________
Language details · Reasons behind the low performance · Error messages · Grammar ---------------------------------------------------------------------- Reasons behind the low performance of Supernova applications ----------------------------------------------------------------------
This low performance comes from:-
[1] Language Implementation Tools
Supernova developed using HarbourPWCT (Programming Without Coding Technology). Harbour uses a Compiler + VM (Virtual Machine) And Supernova Interpreter are based on hybrid implementation Using a Compiler + VM (Virtual Machine) So we have this architecture
---------------------------- Supernova Application ---------------------------- Supernova Compiler || Supernova Interpreter Supernova VM || (Hybrid Implementation) ---------------------------- Harbour VM ----------------------------
It's clear when you run a Supernova Application You run a Compiler + 2 Virtual Machines
[2] Some Language features:-
2.1) - Source code not Case/Space/Line/Tab Sensitive. 2.2) - No Need for Variable/Array declaration 2.3) - No Need for initial variable value before using it 2.4) - No Variable type 2.5) - Support for Events Based on variable value (State Events). 2.6) - Multi-Language Source Code Support (Arabic/English/Mixed).
Samples --------- 1 - Performance_LoopArray100.nova 2 - Performance_LoopArray1000.nova 3 - Performance_LoopArray10000.nova 4 - Performance_LoopArray100000.nova 5 - Performance_LoopArray1000000.nova 6 - Performance_Loop10000.nova [1] Performance_LoopArray100.nova ----------------------------------- i want window and the window title is Loop Array 100. [mytime1]. = the seconds. [x]. = (1). and do while [x] <= (100). [myarray]\[x]. = [x] x [x]. [x]. = [x] + (1). do windows events end while i want textbox AND the textbox value from [myarray]\(100). [mytime2]. = the seconds. i want textbox and the textbox value from [mytime2]-[mytime1]. the textbox top is 50. [2] Performance_LoopArray1000.nova ------------------------------------ i want window and the window title is Loop Array 1,000. [mytime1]. = the seconds. [x]. = (1). and do while [x] <= (1000). [myarray]\[x]. = [x] x [x]. [x]. = [x] + (1). do windows events end while i want textbox and the textbox value from [myarray]\(1000). [mytime2]. = the seconds. i want textbox and the textbox value from [mytime2]-[mytime1]. the textbox top is 50. [3] Performance_LoopArray10000.nova ------------------------------------- i want window and the window title is Loop Array 10,000. [mytime1]. = the seconds. [x]. = (1). and do while [x] <= (10000). [myarray]\[x]. = [x] x [x]. [x]. = [x] + (1). do windows events end while i want textbox and the textbox value from [myarray]\(10000). [mytime2]. = the seconds. i want textbox and the textbox value from [mytime2]-[mytime1]. the textbox top is 50. [4] Performance_LoopArray100000.nova -------------------------------------- i want window and the window title is Loop Array 100,000. [mytime1]. = the seconds. [x]. = (1). and do while [x] <= (100000). [myarray]\[x]. = [x] x [x]. [x]. = [x] + (1). do windows events end while i want textbox and the textbox value from [myarray]\(100000). [mytime2]. = the seconds. i want textbox and the textbox value from [mytime2]-[mytime1]. the textbox top is 50. [5] Performance_LoopArray1000000.nova --------------------------------------- i want window and the window title is Loop Array 1,000,000. [mytime1]. = the seconds. [x]. = (1). and do while [x] <= (1000000). [myarray]\[x]. = [x] x [x]. [x]. = [x] + (1). do windows events end while i want textbox and the textbox value from [myarray]\(1000000). [mytime2]. = the seconds. i want textbox and the textbox value from [mytime2]-[mytime1]. the textbox top is 50. [6] Performance_Loop10000.nova -------------------------------- i want window and the window title is Loop10000. [mytime1]. = the seconds. [x]. = (1). and do while [x] <= (10000). [Y]. = [X] x [X]. [x]. = [x] + (1). do windows events end while i want textbox and the textbox value from [Y]. [mytime2]. = the seconds. i want textbox and the textbox value from [mytime2]-[mytime1]. the textbox top is 50.
Error Messages ---------------- 1) : Unexpected End IF Statement - Do IF Statement is required. 2) : Unclosed Do IF Statement structure- End IF Statement is required. 3) : Unexpected End While Statement - Do While Statement is required. 4) : Unclosed Do While Statement structure- End While Statement is required. 5) : General Syntax Error. 6) : Command Error, The Grammer is TRUE but the Command is undefined. 7) : Expression Error [Variable] is expected. 8) : Expression Error (Value) is expected. 9) : General Expression Error. 10) : Expression Error, Cann't determine expression result. 11) : Bad GUI Command (No Window Defined). 12) : Bad GUI Command (No Object Defined). 13) : Unexpected OK/End Function/End Procedure/End Of Instructions Statement 14) : Unclosed Procedure/.....Instructions Are/Function Statement structure
Samples --------- 1 - ManyUnclosedIF.nova 2 - ManyUnexpectedEndif.nova 3 - MixUnexpectedEndifUnclosedIF.nova 4 - UnclosedIF.nova 5 - UnexpectedEndif.nova 6 - ManyUnclosedWhile.nova 7 - ManyUnexpectedEndWhile.nova 8 - MixUnexpectedEndWhileUnclosedWhile.nova 9 - UnclosedWhile.nova 10 - UnexpectedEndWhile.nova 11 - GeneralSyntaxError.nova 12 - CommandError.nova 13 - DataExpr1.nova 14 - DataExpr2.nova 15 - DataExpr3.nova 16 - DataExpr4.nova 17 - DividebyZero.nova 18 - NoWindowDefined.nova 19 - NoObjectDefined.nova 20 - NoWindowDefinedNoObjectDefined.nova 21 - UnexpectedEndFunction.nova 22 - UnexpectedFunction.nova 23 - MixUnexpectedEndFunctionUnexpectedFunction.nova [1] ManyUnclosedIF.nova ------------------------- Application title = Error. I want window and window title = Error. Window height = 130. [X]. = (1). DO IF [X] = (1). DO IF [X] = (1). DO IF [X] = (1). endif DO IF [X] = (1). DO IF [X] = (1). [2] ManyUnexpectedEndif.nova ------------------------------ Application title = Error. I want window and window title = Error. Window height = 130. endif endif do if [x] = (1). endif endif endif [3] MixUnexpectedEndifUnclosedIF.nova --------------------------------------- Application title = Error. I want window and window title = Error. Window height = 130. endif do if [x] = (1). [4] UnclosedIF.nova --------------------- Application title = Error. I want window and window title = Error. Window height = 130. [X]. = (1). DO IF [X] = (1). [5] UnexpectedEndif.nova -------------------------- Application title = Error. I want window and window title = Error. Window height = 130. endif [6] ManyUnclosedWhile.nova ---------------------------- Application title = Error. I want window and window title = Error. Window height = 130. [X]. = (1). DO While [X] = (1). DO While [X] = (1). DO While [X] = (1). endWhile DO While [X] = (1). DO While [X] = (1). [7] ManyUnexpectedEndWhile.nova --------------------------------- Application title = Error. I want window and window title = Error. Window height = 130. endWhile endWhile do While [x] = (1). endWhile endWhile endWhile [8] MixUnexpectedEndWhileUnclosedWhile.nova ---------------------------------------------- Application title = Error. I want window and window title = Error. Window height = 130. endwhile do while [x] = (1). [9] UnclosedWhile.nova ------------------------ Application title = Error. I want window and window title = Error. Window height = 130. [X]. = (1). DO While [X] = (1). [10] UnexpectedEndWhile.nova ------------------------------ Application title = Error. I want window and window title = Error. Window height = 130. endwhile [11] GeneralSyntaxError.nova ------------------------------ Application title = Error. I want window and window title = Error. what [12] CommandError.nova ------------------------ Application title = Error. I want window and window title = Error. You show listbox [13] DataExpr1.nova --------------------- Application title = Error. I want window and window title from [x. [14] DataExpr2.nova --------------------- Application title = Error. I want window and window title from (5. [15] DataExpr3.nova --------------------- Application title = Error. I want window and window title from wow. [16] DataExpr4.nova --------------------- Application title = Error. I want window and window title from + (5). [17] DividebyZero.nova ------------------------ Application title = Error. I want window and window title from (100) / (0). [18] NoWindowDefined.nova --------------------------- the window title is wow. [19] NoObjectDefined.nova --------------------------- i want window the button caption is wow. [20] NoWindowDefinedNoObjectDefined.nova ------------------------------------------ the textbox value is wow. [21] UnexpectedEndFunction.nova --------------------------------- Application title = Error. I want window and window title = Error. Window height = 130. end of instructions [22] UnexpectedFunction.nova ------------------------------ Application title = Error. I want window and window title = Error. Window height = 130. function wow. [23] MixUnexpectedEndFunctionUnexpectedFunction.nova ------------------------------------------------------ Application title = Error. I want window and window title = Error. Window height = 130. End function function wow.
Supernova Programming Language Grammar ---------------------------------------- * The Language is not Case/Space/Line/Tab sensitive * The Token is a one character (Letter/Number/....etc). * The Grammer is ***Context Sensitive*** S read as Statement and it is the StartUp Symbol -> read as May be replaced by P read as (Pronouns + some other tokens ) Class V read as (Verbs + some other tokens ) Class C read as (Classes + some other tokens ) Class I read as (Instructions + some other tokens ) Class A read as (Attributes + some other tokens ) Class D read as (Data as value or Data as Expression ) (....) read as (Real Stack Tokens without Classification and without data) OPCode read as Operation Code related to a command in the language
The Basic Context Controlling Rules ------------------------------------- S -> SI Rule 1 S -> SPVC Rule 2 S -> SCAVD Rule 3 S -> SDI Rule 4 S -> SDVD Rule 5 Since the token is one Character classification ( I, P, V, C, A & D) is used to manage them Also there are switches determine the next class i.e. Classes are context sensitive 1 - I may comes only after S or D (See Rules 1 and 4) 2 - P may comes only after S (See Rule 2) 3 - V may comes only after P, A or D (See Rules 2,3 and 5) 4 - C may comes only after V or S (See Rules 2 and 3) 5 - A may comes only after C (See Rule 3) i.e. In the start of tokens classification, the expected token class is I,P,C or D. Last accepted class Next class must be S I,P,C OR D I S P V C S OR A A V D S, I OR V V C OR D
|