Also...

One of the major problems I'm having is the "manual" I downloaded. The
"QPCKeywords V1_02" document has many keywords missing/ignored that I
remember, like RIGHT$, LEFT$ and INSTR... and I don't remember how to use
them. I would dig in the garage to find the old printed manual, but it's
FREEZING out there!

One of the other things that might come out of this process for me is a
heavily revised and annotated new manual, with better examples yet more
concise instructions. Which I'd post for everyone's benefit.

Dave

On Sun, Feb 6, 2011 at 5:10 AM, Plastic <[email protected]> wrote:

> For clarity: ABC#### is the format of the flight number. eg: AAL2123,
> CAL2260, FDX1001, etc... Sometimes, there are three digit flights like
> BAA418, etc...
>
> I like the way you have the parser call a function to isolate each
> component. I have until this point been thinking in terms of... (pseudo-code
> alert!)
>
> IF " c " INSTR(cmd$) then it's a clearance
> and
> is rightmost character x?Set expedited flag. if not,
> a$ = (right 3 characters of cmd$) (eg: "030" or " 10") (*note to self -
> this won't work for single digit altitudes - doh!*)
> check it makes a number
> is it a 3-digit number? (including 020 or 000) - it's a heading
> otherwise, it's an altitude.
>
> The other way I thought of doing it was parsing a character at a time and
> using the spaces as "EOFs" for each field.
>
> I am aware the decision tree for this "language" is straightforward.
> However, to me, it's not "trivial" if only because I haven't coded at this
> level in many years and this is truly stretching my mental muscles - which
> is why I am doing this ;)
>
> This is wonderful exercise. Thanks!
>
> Dave
>
>
> On Sun, Feb 6, 2011 at 4:53 AM, Tobias Fröschle <
> [email protected]> wrote:
>
>> Dave,
>>
>>  ABC#### C NN - 2 digits is an altitude in thousands of feet
>>> ABC#### C NN X - the X modifier expedites the altitude change (where
>>> possible/reasonable)
>>> ABC#### C NNN - 3 digits is a heading in degrees
>>> ABC#### C NNN L (or R) - where a course change follows the shortest turn,
>>> L
>>> or R modifier makes the turn direction explicit
>>> ABC#### C $$$ - where a valid beacon is given, the aircraft will fly to
>>> that
>>> beacon
>>> ABC#### S NNN - change speed to...
>>> ABC#### L XXX - cleared to land on runway XXX (eg: 14L)
>>> ABC#### T - clearance to take off (an altitude must be set first
>>>
>> How would you handle more than one command per plane? (I.e. "Climb to xxx
>> and turn left to yyy")
>>
>> Your examples are not clear to me: I guesst the "ABC" part is some sort of
>> plane identification? A flight #?
>>
>> A typical approach in any language would be a function that breaks a line
>> into syntactical pieces ("tokens") and returning the next token (here:
>> anything separated by white space) from the input line as a string. Outside
>> that, you'd have a lexical analyzer that checks whether the token you just
>> got matches anything you'd expect.
>>
>> Your second line example would be handled lke:
>> "InitParser("ABC#### C N X)
>> x$ = getNextToken () - would return "ABC####", your analyzer checks
>> whether this is a valid flight #
>> the next "x$=getNextToken()" would return "C", you accept this because it
>> is valid here
>> the next "x$=getNextToken()" would return the new altitude - Your analyzer
>> checks for valid numerical value
>> the next "x$=getNextToken()" would return  the "X" and
>> the next one an empty string to signal to the analyzer that you're done
>> with this line.
>>
>> obviously, the getNextToken function would need some non-local variables
>> to keep track of where in the input line it currently is
>> Those would need to be initialized along with the input line in initParesr
>> for each new command line.
>>
>> The analyzer would be programmed as "finite state machine" that holds a
>> non-local variable on "where I am currently" - i.e a state value that tells
>> tehe analyzer what to expect next.
>>
>> Hope this helps
>> Tobias
>> _______________________________________________
>> QL-Users Mailing List
>> http://www.q-v-d.demon.co.uk/smsqe.htm
>>
>
>
_______________________________________________
QL-Users Mailing List
http://www.q-v-d.demon.co.uk/smsqe.htm

Reply via email to