PDA

View Full Version : What are these symbols?



ReneMiner
04-12-2024, 03:42
Hello, it's me again.
I am currently configuring a lexer for oxygenbasic and i wnt to have it complte and correct, so before i provide a wrong description i will ask to make sure and excuse if i don't sacrifice the time to find the meanings through experimenta testing until i think it's correct. I prefer to make sure .
I write it as a table what i think or suspect it could be. Would be very kind to correct when i hit into the wrong target.
Wrapped in question-marks is where i am in doubt

i started from oxyKeywords.txt. file in the \Info-subdir in the mainfolder of zipped oxygen-package that is the most complete i could find

in the beginning here few lines showing what is to enter for each line,
first parameter is a group for the keyword,
second is the keyword,
optional are syntax-exmple
optional parameters
final after a pipe-symbol some descriptive text
any "u+" & 4 to 6 hexadecimal digits, e.g. u+0041 means the unicode codepoint equal to "a", here mostly block u+2200 ff. "math symbols & operators"


operator: and |bitwise logic conjuration operator, equal with '&' (ampersand)
operator: or |bitwise logic alternation operator, equal to | (pipe-symbol) |8 or 7 = ((8 or 4) or (8 or 2) or (8 or 1)) = 8 or 4 or 2 or 1 (=15)
operator: xor |bitwise logic exclusion operator. True Xor Any = NOT Any but what was NOT TRUE before the operation.
operator: not |bitwise logic negation operator. one parameter only its value gets negated from participation in the result. Combine with AND to explicit supress unwanted bits, e.g. both=2 and (Not 13). It will supress 1 & 4 & 8 from the result (=2).
?
operator_compound: %26= |bitwise logic conjuration operator, equal with AND= |e.g. 8 | 7 = ((8 | 4) or (8 | 2) or (8 | 1)) = 8 | 4 | 2 | 1 (=15) (%26 = chr 26= '&' ampersand.)


Q: is '&' in o2basic also the "explicit" concatenate strings-operator to avoid strA + strB is evaluated as Val(strA)+Val(strB) when both are containing some numeric appearance but its expected to join the strings is to use like "a" & "b" ? from is getting added arithmetically when both strings display numeric content

String A= "123"
String B ="321"

A+B="444"
A & B = "123321"


A&B^^
.
? ...is that a substitute for " ∧ " u+2227 (logical and) ?
" ∨ " u+2228 (logical or)


operator_compound or=
same: |=
remarks: bitwise assign operator

operator_compound xor=

? Is there a symbol notation to substitute XOR | XOR= ?

u+22BB " ⊻ " : unicode symbol meaning xor

xor=
remarks: bitwise assign operator

operator %26%26

&&
remarks: logical operator
operator
? kind of AND ?
? cats && dogs ... = pets?


?: || : or and/or or ?

||
remarks: logical operator

?: symbol a flying bird ?
^^
remarks: logical operator

?: && a special kind of AND ?
&&=
remarks: logical assign operator

? : see 3 paragraphes above ...?
||=
remarks: logical assign operator

?: as 3 paragraphes above ?
^^=
remarks: logical assign operator
? guesses: exponent-exponentiation?
? substitute of logic AND-sIgn ? (u+2227)

-out of question-[
operator %2B |Addition
operator %2D |Subtraction
operator %2A |Multiplication
operator %2F |Division
]-out of question -

?: operator %5C |Integer-division. Removes the fractional part of divident and divisor before the operation. Removes also fractional part of the quotient. :?
operator %5E <_exp_> |Exponential, left of the operator is the numeric base, right of the operator is the exponent to find. 10^2 equals 10*10 = 100
is that correct \ and \= symbol Integer-division ?

-out of question -[
operator_compound %26= |Add and return sum into the first summand.
operator_compound %2D= |Subtract difference and return the result into the first parameter
operator_compound %2A= |Multiply and return the product into the first factor
operator_compound %2F= |Divide and return quotient into the divident
operator_relational == |Explicit comparison , not an assignment
]-out of question -


?: operator %21= |!= 'itr check :
"itr" was there in the file already - what does it stand for ? intrisinic? integer?
...
-out of question -[
operator_relational <>
operator_relational < |
operator_relational <> |
operator_relational <= |
operator_relational > |
operator_relational >= |
operator_relational <= |
operator_compound and= |
operator_compound or= |
operator_compound xor=
]-out of question -

' still wip here - i need to sort them backwards for the ones that are to prioritize over a shorter content-..

operator_compound %26%26= |&&=
? : && any specialty of AND ?

operator %26%26 |&&
operator_compound %26=
operator %26

? same to make sure ^^ or ^^= or ^= or ^
i thought of ^ used as exponent but ^^ ?

operator_compound %5E%5E= |^^=
operator %5E%5E |^^

operator_compound %7C%7C= |
operator %7C%7C |
operator_compound %7C= |
operator %7C |
operator_bitwise << |Bitsshift left
operator_bitwise >> |Bitshift right

?: operator <<< doing it |leftward ?
?: operator >>> doing it|rightward ?

But What is ward?




Left$/Right$/Instr i did not discover any trace abiut negative parameter values on strings as in powerbasic where a logic counter-approach provides extra-functionality

e.g. Left( somes, 5) (5 leftmmost chars) is turned to: get all chars exceptchars = the 5 leftmost
Instr with a negative starting value in powerbasic provides within the same function to find the last occurence prior to startvalue thinbasic even added here a seond numeric parameter to determine an index for the occurence of stringToSearch within mainstring.
Does oxygenbasic have any of these extended standard-functions? Or is something as this planned in near future?

And since oxygenbasic is able to overload until matching the passed function-parameters - Is it possible to detect the passed value for a parameter ddi not come byval from some expressions that but is present in a variable?
Can oxygenbasic then "autoboost" it's performance when for example the Len-function discovers the string-parameter for the call on LEN() is present as String-variable:
= no need to count but just copy the resulting value from the dword before StrPtr
= no need for the function of local variable allocation since a variable meeting the requirements is provided by the user
ergo
2 optimizations possible here...

In most cases when a String is passed in a variable byref thinbasic knows a FAST version of the called function. Len(byval s) + LenF(byref s), Grab(byval s,...) + GrabF(byref s,...) where i also think:

"couldn't it discover itself there is the pointer of a valid string at position of the incoming value so it must be a byref passed variable ?" and however i called the built-in function - (the major parameter byval or byref) programmatically select the fastest available way to solve it via directing by overloading - instead of providing an additional keyword for each and every statement with an uppercase F
appended...?

In any case that would avoid an error when the F-ending procedure had to complain the passed parmeter was not as expected passed byref or vice versa and programmers had no more chance to "forget" using the performance-optimized version.

However, please have a look at operator symbols above while thinking about new ideas

René

ReneMiner
11-12-2024, 20:04
found - means of almost every symbol except "!=" -exclamation mark usually replaces declare.
In combination with an assignment is it what?

The comment


'itr check :


doesn't help to get an idea. Some language has "=!" as is "NOT EQUAL" but as assignement?
Would it be equal To "and not=" ?



A=3
A != 2 'wild guess: A = ( A and not 2)
Print A
1
>_