Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Atlas Autocode
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Syntax== Atlas Autocode's [[Syntax (programming languages)|syntax]] was largely similar to ALGOL, though it was influenced by the output device which the author had available, a [[Friden Flexowriter]]. Thus, it allowed symbols like <code>Β½</code> for <code>.5</code> and the superscript <code><sup>2</sup></code> for ''to the power of 2''. The Flexowriter supported overstriking and thus, AA did also: up to three characters could be overstruck as a single symbol. For example, the character set had no <code>β</code> symbol, so exponentiation was an overstrike of <code>|</code> and <code>*</code>. The aforementioned underlining of [[reserved word]]s (keywords) could also be done using overstriking. The language is described in detail in the Atlas Autocode Reference Manual.<ref name="AA"/> Other Flexowriter characters that were found a use in AA were: <code>Ξ±</code> in floating-point numbers, ''e.g.'', <code>3.56Ξ±-7</code> for modern <code>3.56e-7</code> ; <code>Ξ²</code> to mean ''the second half of a [[48-bit computing|48-bit]] Atlas memory [[Word (computer architecture)|word]]''; <code>Ο</code> for the mathematical constant [[pi]]. When AA was ported to the [[English Electric KDF9]] computer, the character set was changed to [[International Organization for Standardization]] (ISO). That compiler has been recovered from an old paper tape by the Edinburgh Computer History Project and is available online, as is a high-quality scan of the original Edinburgh version of the Atlas Autocode manual.<ref name="AA_ED"/> Keywords in AA were distinguishable from other text by being underlined, which was implemented via overstrike in the Flexowriter (compare to bold in ALGOL). There were also two [[Stropping (syntax)|stropping]] regimes. First, there was an "uppercasedelimiters" mode where all uppercase letters (outside strings) were treated as underlined lowercase. Second, in some versions (but not in the original Atlas version), it was possible to strop keywords by placing a "<code>%</code>" sign in front of them, for example the keyword <code><u>endofprogramme</u></code> could be typed as <code>%end %of %programme</code> or <code>%endofprogramme</code>. This significantly reduced typing, due to only needing one character, rather than overstriking the whole keyword. As in ALGOL, there were no [[reserved word]]s in the language as keywords were identified by underlining (or stropping), not by recognising reserved character sequences. In the statement <code><u>if</u> token=if <u>then</u> <u>result</u> = token</code>, there is both a keyword <code><u>if</u></code> and a variable named <code>if</code>. As in ALGOL, AA allowed spaces in variable names, such as <code><u>integer</u> previous value</code>. Spaces were not significant and were removed before parsing in a trivial pre-lexing stage called "[[line reconstruction]]". What the compiler would see in the above example would be "<code><u>if</u>token=if<u>thenresult</u>=token</code>". Spaces were possible due partly to keywords being distinguished in other ways, and partly because the source was processed by [[scannerless parsing]], without a separate lexing phase, which allowed the lexical syntax to be context-sensitive. The syntax for expressions let the multiplication operator be omitted, e.g., <code>3a</code> was treated as <code>3*a</code>, and <code>a(i+j)</code> was treated as <code>a*(i+j)</code> if <code>a</code> was not an array. In ambiguous uses, the longest possible name was taken ([[maximal munch]]), for example <code>ab</code> was not treated as <code>a*b</code>, whether or not <code>a</code> and <code>b</code> had been declared.
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Atlas Autocode
(section)
Add topic