# Syntax & Comments | EasyNet Docs Source: https://easynet.run/docs/aal/syntax # Syntax & Comments Use indentation for structure and comments for intent. AAL uses indentation to delimit blocks. Here, if belongs to the ability and return belongs to its branch. A comment begins with # and does not execute. ## Complete example Save the example as syntax.aal syntax.aal ``` agent Tutorial is Agent public ability run(name: String) -> String effects() # Return early when the name is empty. if name == "" return "Hello!" return "Hello, {name}!" ``` [Download .aal](data:text/plain;charset=utf-8,agent%20Tutorial%20is%20Agent%0A%20%20public%0A%20%20%20%20ability%20run(name%3A%20String)%20-%3E%20String%20effects()%0A%20%20%20%20%20%20%23%20Return%20early%20when%20the%20name%20is%20empty.%0A%20%20%20%20%20%20if%20name%20%3D%3D%20%22%22%0A%20%20%20%20%20%20%20%20return%20%22Hello!%22%0A%20%20%20%20%20%20return%20%22Hello%2C%20%7Bname%7D!%22%0A) ## Syntax explained Indent with spaces, not tabs. Keep sibling statements aligned; these examples use two spaces per level. A colon at a block header is optional; this tutorial consistently omits it. Calls, lists and records may span lines within delimiters. Strings use double quotes. ## Build and run Terminal ``` cargo run --locked --bin aalc -- check syntax.aal cargo run --locked --bin aalc -- build syntax.aal -o syntax.aalc cargo run --locked --bin aalc -- run syntax.aalc \ --agent Tutorial --ability run \ --args '{"name":""}' \ --state-dir .aal-tutorial/syntax --invocation syntax-1 ``` Run with a fresh state directory. The returned value is shown below; the CLI also prints execution information. Expected result ``` "Hello!" ``` ## Try it yourself Change the empty name to EasyNet and use a new invocation ID. The first return is skipped and the result becomes Hello, EasyNet!. [Language source and specification](https://github.com/Brain-Cell-Coding/Agent-Assembly-Language/blob/main/docs/language-v0.2.md)